diff --git a/.circleci/config.yml b/.circleci/config.yml index 6c8a3972e..c86bbc606 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,465 +1,99 @@ -version: 2 +version: 2.1 +commands: + set_environment_vars: + steps: + - run: + command: | + echo "export REPO_URL=https://github.com/ysurac/openmptcprouter" >> $BASH_ENV jobs: - prepare: - machine: true - - working_directory: ~/ - - steps: - - run: - name: Prepare - command: | - sudo rm -rf /var/lib/apt/lists/lock - sudo apt-get update - sudo rm -rf /var/lib/apt/lists/lock - sudo apt-get install -yq build-essential git unzip ncurses-dev libz-dev libssl-dev python subversion gettext gawk wget curl rsync perl libelf-dev - - build_x86_64: - machine: true - + build: environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: x86_64 - - working_directory: ~/ - + REPO_URL: https://github.com/ysurac/openmptcprouter + SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }} + GITHUB_WORKSPACE: ${{ steps.branch_name.outputs.WORKSPACE }} + OMR_FEED_URL: https://github.com/ysurac/openmptcprouter-feeds + OMR_TARGET: << parameters.OMR_TARGET >> + OMR_KERNEL: << parameters.OMR_KERNEL >> + OMR_HOST: ${{ secrets.OMR_HOST }} + OMR_PORT: ${{ secrets.OMR_PORT }} + SOURCE_BRANCH: ${{ steps.branch_name.outputs.SOURCE_BRANCH }} + SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }} + ARGS: -av --delete-after + TARGET: deploy/release/${{steps.branch_name.outputs.SOURCE_TAG}}/${{matrix.OMR_TARGET}} + SOURCE: ${{ steps.branch_name.outputs.SOURCE_NAME }} + KEY: ${{ secrets.PRIVATE_KEY }} + USER: deploy + HOST: ${{ secrets.OMR_DEPLOY_HOST }} + PORT: ${{ secrets.OMR_DEPLOY_PORT }} + docker: + - image: dkrecruseastamazonawscom/circlecigolangpr:current steps: - - run: - name: cache - command: | - echo "cache 38 $OMR_TARGET" > /tmp/cache-target - echo "cache 42 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 30m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - sudo apt-get install -yq libelf-dev - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 50m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_x86: - machine: true - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: x86 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 38 $OMR_TARGET" > /tmp/cache-target - echo "cache 42 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 30m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 30m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_rpi3: - machine: true - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: rpi3 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 39 $OMR_TARGET" > /tmp/cache-target - echo "cache 43 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 30m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 30m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_rpi2: - machine: true - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: rpi2 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 38 $OMR_TARGET" > /tmp/cache-target - echo "cache 42 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 30m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 30m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_bpi-r2: - machine: true - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: bpi-r2 - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 38 $OMR_TARGET" > /tmp/cache-target - echo "cache 42 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 30m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 30m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_wrt3200acm: - machine: true - - environment: - - OMR_VERSION: $CIRCLE_TAG - - OMR_TARGET: wrt3200acm - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 38 $OMR_TARGET" > /tmp/cache-target - echo "cache 42 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain - no_output_timeout: 30m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build - no_output_timeout: 30m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release - rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET - rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - build_wrt32: - machine: true - - environment: - - OMR_VERSION: $CIRCLE_TAG - - working_directory: ~/ - - steps: - - run: - name: cache - command: | - echo "cache 38 $OMR_TARGET" > /tmp/cache-target - echo "cache 42 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - - - restore_cache: - keys: - - cache-{{ checksum "/tmp/cache-version" }} - - cache-{{ checksum "/tmp/cache-target" }} - - - run: - name: Build toolchain wrt3200acm - no_output_timeout: 30m - command: | - git clone https://github.com/ysurac/openmptcprouter || true - cd openmptcprouter - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_TARGET="wrt3200acm" - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/wrt3200acm/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/wrt3200acm/source/key-build.pub - - - save_cache: - key: cache-{{ checksum "/tmp/cache-target" }} - paths: - - openmptcprouter - - - run: - name: Build wrt3200acm - no_output_timeout: 30m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/wrt3200acm/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy wrt3200acm - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release - rsync -av --delete-after ~/openmptcprouter/wrt3200acm/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/wrt3200acm - rm -rf ~/openmptcprouter/wrt3200acm/source/bin - - - save_cache: - key: cache-{{ checksum "/tmp/cache-version" }} - paths: - - openmptcprouter - - - run: - name: Build toolchain wrt32x - no_output_timeout: 30m - command: | - cd ~/openmptcprouter/ - git pull || true - export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" - export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" - export OMR_TARGET="wrt32x" - ln -s wrt3200acm wrt32x - sh build.sh prepare {tools,toolchain}/install -j2 - echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/wrt32x/source/key-build - echo -e "$OMR_PUBKEY" > ~/openmptcprouter/wrt32x/source/key-build.pub - - - run: - name: Build wrt32x - no_output_timeout: 30m - command: make IGNORE_ERRORS=m -C ~/openmptcprouter/wrt32x/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - - - run: - name: Deploy wrt32x - command: | - ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release - rsync -av --delete-after ~/openmptcprouter/wrt32x/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/wrt32x - + - checkout + - set_environment_vars + - run: + command: | + echo "SOURCE_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT + echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT + echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + echo "WORKSPACE=${GITHUB_WORKSPACE}" >> $GITHUB_OUTPUT + - run: + name: Prepare + command: | + sudo apt-get update + sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext + git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc-s1 libc6-dev-i386 + subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev + texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake + libtool autopoint device-tree-compiler python3-pyelftools + - run: + name: Free disk space + command: | + df -h + sudo swapoff -a >/dev/null 2>&1 || true + sudo rm -f /swapfile >/dev/null 2>&1 || true + sudo apt-get autoremove -y >/dev/null 2>&1 || true + sudo apt-get autoclean -y >/dev/null 2>&1 || true + sudo rm -rf "/usr/local/share/boost" >/dev/null 2>&1 || true + sudo rm -rf "$AGENT_TOOLSDIRECTORY" >/dev/null 2>&1 || true + sudo rm -rf /usr/share/dotnet >/dev/null 2>&1 || true + sudo rm -rf /usr/local/lib/android >/dev/null 2>&1 || true + sudo rm -rf /opt/ghc >/dev/null 2>&1 || true + sudo docker rmi $(docker images -qf "dangling=true") >/dev/null 2>&1 || + true + df -h + - run: + command: | + git clone $REPO_URL omr + if [ "$SOURCE_NAME" != "develop" ]; then + cd omr + pwd + git fetch + git checkout master + else + cd omr + git checkout develop + fi + git pull + pwd + OMR_KERNEL="${OMR_KERNEL}" OMR_FEED_SRC="${SOURCE_NAME}" sh build.sh prepare + {tools,toolchain}/install -j$(nproc) || OMR_KERNEL="${OMR_KERNEL}" OMR_FEED_SRC="${SOURCE_NAME}" + sh build.sh prepare {tools,toolchain}/install -j1 V=s + make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source package/{compile,install,index} + -j$(nproc) || make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source package/{compile,install,index} + -j1 V=s + make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source target/install -j$(nproc) + || make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source target/install + -j1 V=s + mv ${OMR_TARGET}/${OMR_KERNEL}/source/bin ${GITHUB_WORKSPACE}/ + - store_artifacts: + path: /home/runner/work/omr/${{ matrix.OMR_TARGET }}/${{ matrix.OMR_KERNEL + }}/source/bin workflows: - version: 2 - main: + openmptcprouter: jobs: - - prepare - - build_x86_64: - requires: - - prepare - - build_x86: - requires: - - prepare - - build_rpi3: - requires: - - prepare - - build_rpi2: - requires: - - prepare - - build_bpi-r2: - requires: - - prepare - - build_wrt32: - requires: - - prepare + - build: + matrix: + parameters: + OMR_TARGET: ["bpi-r1","bpi-r2","bpi-r64","rpi2","rpi4","wrt32x","espressobin","r2s","rpi3","wrt3200acm","x86","x86_64","ubnt-erx","r4s","r7800","rutx12","rutx50","r5s","qnap-301w","rpi5","z8102ax_128m"] + OMR_KERNEL: ["5.4","6.1","6.6"] + \ No newline at end of file diff --git a/.codeclimate b/.codeclimate new file mode 100644 index 000000000..b23859554 --- /dev/null +++ b/.codeclimate @@ -0,0 +1,9 @@ +plugins: + shellcheck: + enabled: true +engines: + luacheck: + enabled: true +ratings: + paths: + - "**.lua" \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..3f83a0596 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +github: [Ysurac] +patreon: Ycarus +custom: https://www.paypal.me/ycarus diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..837a083b9 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,166 @@ +name: openmptcprouter +on: [push] + +env: + REPO_URL: 'https://github.com/ysurac/openmptcprouter' + +jobs: + build: + strategy: + matrix: + OMR_TARGET: [bpi-r1, bpi-r2, bpi-r3, bpi-r4, bpi-r4-poe, bpi-r64, rpi2, rpi4, wrt32x, espressobin, r2s, rpi3, wrt3200acm, x86, x86_64, ubnt-erx, r4s, r7800, rutx12, rutx50, r5s, qnap-301w, rpi5, z8102ax_128m, z8102ax_64m, z8102ax-emmc, gl-mt6000, gl-mt3000, gl-mt2500, r5c, z8109ax_128m] + OMR_KERNEL: [6.6, 6.12] + runs-on: ubuntu-latest + continue-on-error: true + + steps: + - name: Branch name + id: branch_name + run: | + echo "SOURCE_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT + echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT + echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT + echo "WORKSPACE=${GITHUB_WORKSPACE}" >> $GITHUB_OUTPUT + - name: Prepare + run: | + sudo apt-get update + sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc-s1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler python3-pyelftools llvm clang + - if: matrix.OMR_KERNEL == '6.6' + name: Install LLVM + run: | + sudo apt-get install llvm clang + - name: Free disk space + run: | + df -h + sudo swapoff -a >/dev/null 2>&1 || true + sudo rm -f /swapfile >/dev/null 2>&1 || true + sudo apt-get autoremove -y >/dev/null 2>&1 || true + sudo apt-get autoclean -y >/dev/null 2>&1 || true + sudo rm -rf "/usr/local/share/boost" >/dev/null 2>&1 || true + sudo rm -rf "$AGENT_TOOLSDIRECTORY" >/dev/null 2>&1 || true + sudo rm -rf /usr/share/dotnet >/dev/null 2>&1 || true + sudo rm -rf /usr/local/lib/android >/dev/null 2>&1 || true + sudo rm -rf /opt/ghc >/dev/null 2>&1 || true + sudo docker rmi $(docker images -qf "dangling=true") >/dev/null 2>&1 || true + df -h + - name: Clone source code + working-directory: ../../ + env: + REPO_URL: https://github.com/ysurac/openmptcprouter + SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }} + GITHUB_WORKSPACE: ${{ steps.branch_name.outputs.WORKSPACE }} + run: | + git clone $REPO_URL omr + if [ "$SOURCE_NAME" != "develop" ]; then + cd omr + pwd + git fetch + git checkout master + else + cd omr + git checkout develop + fi + git pull + pwd + - name: Build toolchain + working-directory: ../../omr + env: + OMR_FEED_URL: https://github.com/ysurac/openmptcprouter-feeds + SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }} + OMR_TARGET: ${{ matrix.OMR_TARGET }} + OMR_KERNEL: ${{ matrix.OMR_KERNEL }} + OMR_HOST: ${{ secrets.OMR_HOST }} + OMR_PORT: ${{ secrets.OMR_PORT }} + run: | + OMR_KERNEL="${OMR_KERNEL}" OMR_FEED_SRC="${SOURCE_NAME}" sh build.sh prepare {tools,toolchain}/install -j$(nproc) || OMR_KERNEL="${OMR_KERNEL}" OMR_FEED_SRC="${SOURCE_NAME}" sh build.sh prepare {tools,toolchain}/install -j1 V=s + #echo -e "${{ secrets.OMR_PRIVKEY }}" > $OMR_TARGET/$OMR_KERNEL/source/key-build + #echo -e "${{ secrets.OMR_PUBKEY }}" > $OMR_TARGET/$OMR_KERNEL/source/key-build.pub + - name: Build packages + working-directory: ../../omr + env: + OMR_TARGET: ${{ matrix.OMR_TARGET }} + OMR_KERNEL: ${{ matrix.OMR_KERNEL }} + run: | + make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source package/{compile,install,index} -j$(nproc) || make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source package/{compile,install,index} -j1 V=s + - name: Build image + working-directory: ../../omr + env: + OMR_TARGET: ${{ matrix.OMR_TARGET }} + OMR_KERNEL: ${{ matrix.OMR_KERNEL }} + run: | + make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source target/install -j$(nproc) || make IGNORE_ERRORS=m -C $OMR_TARGET/$OMR_KERNEL/source target/install -j1 V=s + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.OMR_TARGET }} + path: /home/runner/work/omr/${{ matrix.OMR_TARGET }}/${{ matrix.OMR_KERNEL }}/source/bin + overwrite: true + - if: steps.branch_name.outputs.SOURCE_BRANCH == '' + name: Deploy - Create directory + uses: ysurac/ssh-action@master + env: + SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }} + SOURCE_BRANCH: ${{ steps.branch_name.outputs.SOURCE_BRANCH }} + SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }} + with: + command: | + mkdir -p deploy/release/${{env.SOURCE_TAG}}/${{matrix.OMR_TARGET}} + host: ${{ secrets.OMR_DEPLOY_HOST }} + user: deploy + port: ${{ secrets.OMR_DEPLOY_PORT }} + key: ${{ secrets.PRIVATE_KEY }} + args: -tt + - if: steps.branch_name.outputs.SOURCE_BRANCH != '' + name: Deploy - Create directory + uses: ysurac/ssh-action@master + env: + SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }} + SOURCE_BRANCH: ${{ steps.branch_name.outputs.SOURCE_BRANCH }} + SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }} + with: + command: | + mkdir -p deploy/${{env.SOURCE_BRANCH}}/${{matrix.OMR_KERNEL}}/${{matrix.OMR_TARGET}} + host: ${{ secrets.OMR_DEPLOY_HOST }} + user: deploy + port: ${{ secrets.OMR_DEPLOY_PORT }} + key: ${{ secrets.PRIVATE_KEY }} + args: -tt + - name: Move binaries for rsync + working-directory: ../../omr + env: + OMR_TARGET: ${{ matrix.OMR_TARGET }} + OMR_KERNEL: ${{ matrix.OMR_KERNEL }} + GITHUB_WORKSPACE: ${{ steps.branch_name.outputs.WORKSPACE }} + run: | + mv ${OMR_TARGET}/${OMR_KERNEL}/source/bin ${GITHUB_WORKSPACE}/ + - if: steps.branch_name.outputs.SOURCE_BRANCH == '' + name: Deploy - Upload via rsync + uses: ysurac/action-rsync@master + env: + ARGS: -av --delete-after + TARGET: deploy/release/${{steps.branch_name.outputs.SOURCE_TAG}}/${{matrix.OMR_TARGET}} + SOURCE: ./bin/ + KEY: ${{ secrets.PRIVATE_KEY }} + USER: deploy + HOST: ${{ secrets.OMR_DEPLOY_HOST }} + PORT: ${{ secrets.OMR_DEPLOY_PORT }} + SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }} + SOURCE_BRANCH: ${{ steps.branch_name.outputs.SOURCE_BRANCH }} + SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }} + GITHUB_WORKSPACE: ${{ steps.branch_name.outputs.WORKSPACE }} + - if: steps.branch_name.outputs.SOURCE_BRANCH != '' + name: Deploy - Upload via rsync + uses: ysurac/action-rsync@master + env: + ARGS: -av --delete-after + TARGET: deploy/${{ steps.branch_name.outputs.SOURCE_BRANCH }}/${{matrix.OMR_KERNEL}}/${{matrix.OMR_TARGET}} + SOURCE: ./bin/ + KEY: ${{ secrets.PRIVATE_KEY }} + USER: deploy + HOST: ${{ secrets.OMR_DEPLOY_HOST }} + PORT: ${{ secrets.OMR_DEPLOY_PORT }} + SOURCE_NAME: ${{ steps.branch_name.outputs.SOURCE_NAME }} + SOURCE_BRANCH: ${{ steps.branch_name.outputs.SOURCE_BRANCH }} + SOURCE_TAG: ${{ steps.branch_name.outputs.SOURCE_TAG }} + GITHUB_WORKSPACE: ${{ steps.branch_name.outputs.WORKSPACE }} + diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 000000000..71c06708d --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,19 @@ +name: Mark stale issues and pull requests + +on: + schedule: + - cron: "30 1 * * *" + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v3.0.10 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: "This issue is stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days" + stale-pr-message: 'It has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days' + days-before-stale: 120 + days-before-close: 5 + exempt-issue-labels: 'work-in-progress,enhancement' + exempt-pr-labels: 'work-in-progress,enhancement' diff --git a/README.md b/README.md index 29839861a..e92835abd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # OpenWrt OpenMPTCProuter feed + This is the OpenWrt OpenMPTCProuter feed containing all modified and necessary packages to build the OpenMPTCProuter image. For More information, see [https://github.com/ysurac/openmptcprouter](https://github.com/ysurac/openmptcprouter) and [https://www.openmptcprouter.com](https://www.openmptcprouter.com/). @@ -140,6 +141,14 @@ This is used to check if there is no other IPv6 route announced on the network This is an other way to aggregate same latency connections +## dsvpn +*Source:* [https://github.com/jedisct1/dsvpn][https://github.com/jedisct1/dsvpn] + +*Description:* A Dead Simple VPN + +A simple TCP VPN + + ## ndpi-netfilter2 *Source:* [https://github.com/vel21ripn/nDPI](https://github.com/vel21ripn/nDPI) @@ -153,3 +162,25 @@ This is used to bypass a protocol *Description:* A middlebox detection tool + +## Shortcut-FE +*Source:* [https://github.com/coolsnowwolf/lede/tree/master/package/lean/shortcut-fe](https://github.com/coolsnowwolf/lede/tree/master/package/lean/shortcut-fe) + +*Description:* Shortcut is an in-Linux-kernel IP packet forwarding engine. + + +## V2Ray +*Source:* [https://github.com/v2fly/v2ray-core](https://github.com/v2fly/v2ray-core) + +*Description:* A platform for building proxies to bypass network restrictions. + +This is used as proxy, alternative to Shadowsocks + + + +# License +[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FYsurac%2Fopenmptcprouter-feeds.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FYsurac%2Fopenmptcprouter-feeds?ref=badge_large) + +## Translation status + +[![Translation status](https://weblate.openmptcprouter.com/widgets/omr/-/multi-auto.svg)](https://weblate.openmptcprouter.com/engage/omr/?utm_source=widget) diff --git a/atinout/Makefile b/atinout/Makefile new file mode 100644 index 000000000..5457697e0 --- /dev/null +++ b/atinout/Makefile @@ -0,0 +1,57 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=atinout +PKG_VERSION=0.9.1 + +PKG_MAINTAINER:=Konstantine Shevlakov +PKG_LICENSE:=GPLv2 +PKG_LICENSE_FILES:=LICENSE + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/beralt/atinout.git +PKG_SOURCE_VERSION:=4013e8db4cd140c1df24bb90f929efeb9b61b238 + +PKG_SOURCE_SUBDIR:=$(PKG_NAME) +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) + SECTION:=net + CATEGORY:=Network + SUBMENU:=Telephony + TITLE:=Send AT commands to a modem + URL:=http://atinout.sourceforge.net/ + MAINTAINER:=Adrian Guenter +endef + +define Package/$(PKG_NAME)/description + Atinout is a program that will execute AT commands in sequence and + capture the response from the modem. +endef + + +CONFIGURE_VARS += \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CC) +.c++" \ + CFLAGS="$(TARGET_CFLAGS) -Wall -DVERSION=\"\\\"$(PKG_VERSION)\\\"\"" \ + LDFLAGS="$(TARGET_LDFLAGS)" + +define Build/Configure + $(call Build/Configure/Default,--with-linux-headers=$(LINUX_DIR)) +endef + +define Build/Compile + @echo -e "\n=== Build/Compile ===" + $(CONFIGURE_VARS) $(MAKE) -C $(PKG_BUILD_DIR) \ + all \ + +endef + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/usr/bin/$(PKG_NAME) +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/bcm27xx-eeprom/Makefile b/bcm27xx-eeprom/Makefile new file mode 100644 index 000000000..8f37f3ecb --- /dev/null +++ b/bcm27xx-eeprom/Makefile @@ -0,0 +1,96 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=bcm27xx-eeprom +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/raspberrypi/rpi-eeprom +PKG_SOURCE_DATE:=2024-09-23 +PKG_SOURCE_VERSION:=c8fffcda5ae0f923857a73fedbeb07e81d2eb813 +PKG_MIRROR_HASH:=68d0eedd1aff573c2ea7071f89a5898292061ced96d7f98ea4a347dc16c8102c + +PKG_LICENSE:=BSD-3-Clause Custom +PKG_LICENSE_FILES:=LICENSE + +PKG_MAINTAINER:=Álvaro Fernández Rojas + +include $(INCLUDE_DIR)/package.mk + +TAR_OPTIONS:=--strip-components 1 $(TAR_OPTIONS) +TAR_CMD=$(HOST_TAR) -C $(1) $(TAR_OPTIONS) + +define Package/bcm27xx-eeprom/Default + SECTION:=utils + CATEGORY:=Utilities +endef + +define Package/bcm27xx-eeprom +$(call Package/bcm27xx-eeprom/Default) + TITLE:=BCM27xx EEPROM tools + DEPENDS:=bcm27xx-utils +blkid +coreutils +coreutils-od +mount-utils +pciutils +python3-light +endef + +define Package/bcm2711-eeprom +$(call Package/bcm27xx-eeprom/Default) + TITLE:=BCM2711 EEPROM tools + DEPENDS:=+bcm27xx-eeprom +endef + +define Package/bcm2712-eeprom +$(call Package/bcm27xx-eeprom/Default) + TITLE:=BCM2712 EEPROM tools + DEPENDS:=+bcm27xx-eeprom +endef + +define Package/bcm27xx-eeprom/description + BCM27xx EEPROM config and update tools. +endef + +define Package/bcm2711-eeprom/description + BCM2711 EEPROM config and update tools. +endef + +define Package/bcm2712-eeprom/description + BCM2712 EEPROM config and update tools. +endef + +define Build/Compile + true +endef + +define Package/bcm27xx-eeprom/conffiles +/etc/bcm27xx-eeprom.conf +endef + +define Package/bcm27xx-eeprom/install + $(INSTALL_DIR) $(1)/etc + $(INSTALL_CONF) $(PKG_BUILD_DIR)/rpi-eeprom-update-default $(1)/etc/bcm27xx-eeprom.conf + + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/rpi-eeprom-config $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/rpi-eeprom-digest $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/rpi-eeprom-update $(1)/usr/bin +endef + +define Package/bcm2711-eeprom/install + $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader-2711 + $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader-2711/latest + + $(CP) $(PKG_BUILD_DIR)/firmware-2711/release-notes.md $(1)/lib/firmware/raspberrypi/bootloader-2711 + $(CP) $(PKG_BUILD_DIR)/firmware-2711/latest/pieeprom-2024-09-05.bin $(1)/lib/firmware/raspberrypi/bootloader-2711/latest + $(CP) $(PKG_BUILD_DIR)/firmware-2711/latest/recovery.bin $(1)/lib/firmware/raspberrypi/bootloader-2711/latest + $(CP) $(PKG_BUILD_DIR)/firmware-2711/latest/vl805-000138c0.bin $(1)/lib/firmware/raspberrypi/bootloader-2711/latest +endef + +define Package/bcm2712-eeprom/install + $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader-2712 + $(INSTALL_DIR) $(1)/lib/firmware/raspberrypi/bootloader-2712/latest + + $(CP) $(PKG_BUILD_DIR)/firmware-2712/release-notes.md $(1)/lib/firmware/raspberrypi/bootloader-2712 + $(CP) $(PKG_BUILD_DIR)/firmware-2712/latest/pieeprom-2024-09-23.bin $(1)/lib/firmware/raspberrypi/bootloader-2712/latest + $(CP) $(PKG_BUILD_DIR)/firmware-2712/latest/recovery.bin $(1)/lib/firmware/raspberrypi/bootloader-2712/latest +endef + +$(eval $(call BuildPackage,bcm27xx-eeprom)) +$(eval $(call BuildPackage,bcm2711-eeprom)) +$(eval $(call BuildPackage,bcm2712-eeprom)) diff --git a/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch b/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch new file mode 100644 index 000000000..e989ae1ff --- /dev/null +++ b/bcm27xx-eeprom/patches/0001-rpi-eeprom-update-OpenWrt-defaults.patch @@ -0,0 +1,37 @@ +From a7c4e8f246dc58b4c83293b11f6443528065dc70 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Mon, 23 Mar 2020 10:10:55 +0100 +Subject: [PATCH] rpi-eeprom-update: OpenWrt defaults +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Álvaro Fernández Rojas +--- + rpi-eeprom-update | 4 ++-- + rpi-eeprom-update-default | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +--- a/rpi-eeprom-update ++++ b/rpi-eeprom-update +@@ -25,7 +25,7 @@ fi + + # Selects the release sub-directory + FIRMWARE_RELEASE_STATUS=${FIRMWARE_RELEASE_STATUS:-default} +-FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-/var/lib/raspberrypi/bootloader/backup} ++FIRMWARE_BACKUP_DIR=${FIRMWARE_BACKUP_DIR:-${FIRMWARE_ROOT}/backup} + ENABLE_VL805_UPDATES=${ENABLE_VL805_UPDATES:-1} + CM4_ENABLE_RPI_EEPROM_UPDATE=${CM4_ENABLE_RPI_EEPROM_UPDATE:-0} + RPI_EEPROM_UPDATE_CONFIG_TOOL="${RPI_EEPROM_UPDATE_CONFIG_TOOL:-raspi-config}" +--- a/rpi-eeprom-update-default ++++ b/rpi-eeprom-update-default +@@ -1,7 +1,7 @@ + + FIRMWARE_ROOT=/lib/firmware/raspberrypi/bootloader +-FIRMWARE_RELEASE_STATUS="default" +-FIRMWARE_BACKUP_DIR="/var/lib/raspberrypi/bootloader/backup" ++FIRMWARE_RELEASE_STATUS="latest" ++FIRMWARE_BACKUP_DIR="${FIRMWARE_ROOT}/backup" + EEPROM_CONFIG_HOOK= + + # BOOTFS can be set here to override auto-detection in rpi-eeprom-update diff --git a/bcm27xx-eeprom/patches/0002-rpi-eeprom-update-change-default-include-path.patch b/bcm27xx-eeprom/patches/0002-rpi-eeprom-update-change-default-include-path.patch new file mode 100644 index 000000000..2bfb0beb1 --- /dev/null +++ b/bcm27xx-eeprom/patches/0002-rpi-eeprom-update-change-default-include-path.patch @@ -0,0 +1,62 @@ +From fc552b1e5c503c530763e40d2b83df55c5c2e9a3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Wed, 25 Mar 2020 20:58:35 +0100 +Subject: [PATCH] rpi-eeprom-update: change default include path +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Álvaro Fernández Rojas +--- + rpi-eeprom-update | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/rpi-eeprom-update ++++ b/rpi-eeprom-update +@@ -6,8 +6,8 @@ set -e + + script_dir=$(cd "$(dirname "$0")" && pwd) + +-if [ -f /etc/default/rpi-eeprom-update ]; then +- . /etc/default/rpi-eeprom-update ++if [ -f /etc/bcm27xx-eeprom.conf ]; then ++ . /etc/bcm27xx-eeprom.conf + fi + + LOCAL_MODE=0 +@@ -439,7 +439,7 @@ checkDependencies() { + echo "Run with -h for more information." + echo + echo "To enable flashrom programming of the EEPROM" +- echo "Add these the following entries to /etc/default/rpi-eeprom-update" ++ echo "Add these the following entries to /etc/bcm27xx-eeprom.conf" + echo "RPI_EEPROM_USE_FLASHROM=1" + echo "CM4_ENABLE_RPI_EEPROM_UPDATE=1" + echo +@@ -526,7 +526,7 @@ The system should then boot normally. + + If /boot does not correspond to the boot partition and this + is not a NOOBS system, then the mount point for BOOTFS should be defined +-in /etc/default/rpi-eeprom-update by defining the BOOTFS variable. ++in /etc/bcm27xx-eeprom.conf by defining the BOOTFS variable. + + A backup of the current EEPROM config file is written to ${FIRMWARE_BACKUP_DIR} + before applying the update. +@@ -558,7 +558,7 @@ Options: + -u Install the specified VL805 (USB EEPROM) image file. + + Environment: +-Environment variables should be defined in /etc/default/rpi-eeprom-update ++Environment variables should be defined in /etc/bcm27xx-eeprom.conf + + EEPROM_CONFIG_HOOK + +@@ -630,7 +630,7 @@ must first be enabled by removing ENABLE + via usbboot. + + After enabling self-update set the CM4_ENABLE_RPI_EEPROM_UPDATE=1 environment +-variable or define it in /etc/default/rpi-eeprom-update. ++variable or define it in /etc/bcm27xx-eeprom.conf. + + N.B. If there is a power failure during SELF_UPDATE the EEPROM write may fail and + usbboot must be used to flash the bootloader EEPROM. SELF_UPDATE is not recommended diff --git a/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-chmod-silent-f-is-not-supported.patch b/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-chmod-silent-f-is-not-supported.patch new file mode 100644 index 000000000..0999eb9bf --- /dev/null +++ b/bcm27xx-eeprom/patches/0003-rpi-eeprom-update-chmod-silent-f-is-not-supported.patch @@ -0,0 +1,33 @@ +From 62ec3384358bda60269c131d3880795bc8cdc3ce Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Fri, 19 Feb 2021 10:54:23 +0100 +Subject: [PATCH] rpi-eeprom-update: chmod silent (-f) is not supported +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Álvaro Fernández Rojas +--- + rpi-eeprom-update | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/rpi-eeprom-update ++++ b/rpi-eeprom-update +@@ -220,7 +220,7 @@ applyRecoveryUpdate() + || die "Failed to copy ${TMP_EEPROM_IMAGE} to ${BOOTFS}" + + # For NFS mounts ensure that the files are readable to the TFTP user +- chmod -f go+r "${BOOTFS}/pieeprom.upd" "${BOOTFS}/pieeprom.sig" \ ++ chmod go+r "${BOOTFS}/pieeprom.upd" "${BOOTFS}/pieeprom.sig" \ + || die "Failed to set permissions on eeprom update files" + fi + +@@ -231,7 +231,7 @@ applyRecoveryUpdate() + || die "Failed to copy ${VL805_UPDATE_IMAGE} to ${BOOTFS}/vl805.bin" + + # For NFS mounts ensure that the files are readable to the TFTP user +- chmod -f go+r "${BOOTFS}/vl805.bin" "${BOOTFS}/vl805.sig" \ ++ chmod go+r "${BOOTFS}/vl805.bin" "${BOOTFS}/vl805.sig" \ + || die "Failed to set permissions on eeprom update files" + fi + diff --git a/bcm27xx-eeprom/patches/0004-rpi-eeprom-config-replace-nano-with-vi-as-default-ed.patch b/bcm27xx-eeprom/patches/0004-rpi-eeprom-config-replace-nano-with-vi-as-default-ed.patch new file mode 100644 index 000000000..27543f6ac --- /dev/null +++ b/bcm27xx-eeprom/patches/0004-rpi-eeprom-config-replace-nano-with-vi-as-default-ed.patch @@ -0,0 +1,35 @@ +From 8d1e47c956ae10d1146114f7fcd4eb0d33187d08 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Tue, 16 Jan 2024 16:25:40 +0100 +Subject: [PATCH] rpi-eeprom-config: replace nano with vi as default editor +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Álvaro Fernández Rojas +--- + rpi-eeprom-config | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/rpi-eeprom-config ++++ b/rpi-eeprom-config +@@ -186,8 +186,8 @@ def edit_config(eeprom=None): + """ + Implements something like 'git commit' for editing EEPROM configs. + """ +- # Default to nano if $EDITOR is not defined. +- editor = 'nano' ++ # Default to vi if $EDITOR is not defined. ++ editor = 'vi' + if 'EDITOR' in os.environ: + editor = os.environ['EDITOR'] + +@@ -517,7 +517,7 @@ Operating modes: + + To cancel the pending update run 'sudo rpi-eeprom-update -r' + +- The default text editor is nano and may be overridden by setting the 'EDITOR' ++ The default text editor is vi and may be overridden by setting the 'EDITOR' + environment variable and passing '-E' to 'sudo' to preserve the environment. + + 6. Signing the bootloader config file. diff --git a/bcm27xx-utils/Makefile b/bcm27xx-utils/Makefile new file mode 100644 index 000000000..8f5d91da8 --- /dev/null +++ b/bcm27xx-utils/Makefile @@ -0,0 +1,66 @@ +# SPDX-License-Identifier: GPL-2.0-only + +include $(TOPDIR)/rules.mk + +PKG_NAME:=bcm27xx-utils +PKG_VERSION:=2024.10.25 +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/raspberrypi/utils.git +PKG_SOURCE_VERSION:=6a2a6becebbc38fde34a94386457ac8210f9119b +PKG_MIRROR_HASH:=a775c7ffb9fac2d798ec8e0a4c7707eb7133cbc9c4418a1cf9434f87c42c01bb + +PKG_FLAGS:=nonshared +PKG_BUILD_FLAGS:=no-lto + +PKG_LICENSE:=BSD-3-Clause +PKG_LICENSE_FILES:=LICENCE + +CMAKE_INSTALL:=1 + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk + +define Package/bcm27xx-utils + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:=@TARGET_bcm27xx +libfdt + TITLE:=BCM27xx scripts and simple applications + PROVIDES:=bcm27xx-userland +endef + +define Package/bcm27xx-utils/description + BCM27xx scripts and simple applications. + Replaces bcm27xx-userland scripts and applications. +endef + +define Package/bcm27xx-utils/install + $(INSTALL_DIR) $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dtmerge $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dtoverlay $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/dtparam $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/eepdump $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/eepflash.sh $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/eepmake $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/kdtc $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/otpset $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/overlaycheck $(1)/usr/bin + $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/bin/overlaycheck_exclusions.txt $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ovmerge $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/pinctrl $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/raspinfo $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vcgencmd $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vclog $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vcmailbox $(1)/usr/bin +endef + +$(eval $(call BuildPackage,bcm27xx-utils)) diff --git a/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch b/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch new file mode 100644 index 000000000..9dd6d9962 --- /dev/null +++ b/bcm27xx-utils/patches/0001-raspinfo-adapt-to-OpenWrt.patch @@ -0,0 +1,255 @@ +From 0db3fb3119eda8c2360454c2a01f84602a879c38 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= +Date: Tue, 16 Jan 2024 15:32:12 +0100 +Subject: [PATCH] raspinfo: adapt to OpenWrt +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Álvaro Fernández Rojas +--- + raspinfo/raspinfo | 186 ++++------------------------------------------ + 1 file changed, 13 insertions(+), 173 deletions(-) + +--- a/raspinfo/raspinfo ++++ b/raspinfo/raspinfo +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/bin/sh + + # Some of the regex's used in sed + # Catch basic IP6 address "s/\([0-9a-fA-F]\{1,4\}:\)\{7,7\}[0-9a-fA-F]\{1,4\}/y.y.y.y.y.y.y.y/g" +@@ -6,147 +6,6 @@ + # IP4 d.d.d.d decimal "s/\([0-9]\{1,3\}\.\)\{3,3\}[0-9]\{1,3\}/x.x.x.x/g" + # mac address "s/\([0-9a-fA-F]\{2,2\}\:\)\{5,5\}[0-9a-fA-F]\{2,2\}/m.m.m.m/g" + +- +-display_info_drm() { +- # If running X then can use xrandr, otherwise +- # dump the /sys/class entries for the displays +- if command -v xrandr > /dev/null && +- DISPLAY=${DISPLAY:-:0} xrandr --listmonitors &>/dev/null; +- then +- echo "Running (F)KMS and X" +- echo +- +- DISPLAY=${DISPLAY:-:0} xrandr --verbose +- else +- echo "Running (F)KMS, console" +- echo +- +- for card in /sys/class/drm/card[0-9]-*; +- do +- echo $card +- +- # if kmsprint isn't installed print basic mode info +- if ! command -v kmsprint > /dev/null; then +- if [ -f $card/modes ]; +- then +- cat $card/modes +- else +- echo "No modes found" +- fi +- fi +- +- if [ -f $card/edid ]; +- then +- base64 $card/edid +- else +- echo "No EDID found" +- fi +- echo +- done +- fi +- +- # kmsprint is more useful, but not always installed +- echo +- if command -v kmsprint > /dev/null; then +- kmsprint +- echo +- kmsprint -m +- else +- echo "kmsprint is not installed. Install with: sudo apt install kms++-utils" +- fi +- +- echo +- +- # dump the /sys/class entries for the displays +- cardfound=0 +- for card in `seq 0 9`; +- do +- if sudo test -f "/sys/kernel/debug/dri/${card}/state"; +- then +- for hdmi in 0 1; +- do +- if sudo test -f "/sys/kernel/debug/dri/${card}/hdmi${hdmi}_regs"; +- then +- echo "HDMI${hdmi}: $(sudo cat /sys/kernel/debug/dri/$card/hdmi${hdmi}_regs | grep HOTPLUG)" +- fi +- done +- echo +- echo "/sys/kernel/debug/dri/$card/state:" +- sudo cat "/sys/kernel/debug/dri/$card/state" +- echo +- cardfound=1 +- fi +- done +- if [ "$cardfound" == "0" ]; +- then +- echo "kms state not found" +- fi +- echo +- +-} +- +-display_info_legacy() { +- # Legacy mode +- echo "Running Legacy framebuffer" +- echo +- +- for card in `seq 0 9`; +- do +- F="/dev/fb${card}" +- if test -e $F; +- then +- echo Framebuffer: $F +- fbset -s -fb $F +- fi +- done +- +- disps=`tvservice -l | awk '/Display Number/{print substr($3,1,1)}'` +- +- tmp=$(mktemp) +- +- for display in $disps +- do +- echo +- echo "Display: " $display +- +- tvservice -v $display -s +- tvservice -v $display -n +- tvservice -v $display -m CEA +- tvservice -v $display -m DMT +- +- echo +- tvservice -v $display -d $tmp > /dev/null +- base64 $tmp +- done +- +- rm $tmp +-} +- +-display_info() { +- # Check if we are running a KMS/DRM system +- +- if [ -d "/dev/dri" ]; +- then +- display_info_drm +- else +- display_info_legacy +- fi +-} +- +-audio_info() { +- aplay -l +- echo +- aplay -L +- echo +- systemctl --user status pipewire.socket pipewire.service pulseaudio.service pulseaudio.socket +- echo +- if command -v pactl > /dev/null; then +- pactl info +- else +- echo pactl not installed +- fi +-} +- + OUT=raspinfo.txt + + rm -f $OUT +@@ -163,8 +22,6 @@ echo + cat /etc/os-release | head -4 + echo + +-cat /etc/rpi-issue +-echo + uname -a + + cat /proc/cpuinfo | tail -3 +@@ -190,17 +47,6 @@ echo + cat /proc/swaps + + echo +-echo "Package version information" +-echo "---------------------------" +- +-apt-cache policy raspberrypi-ui-mods | head -2 +-apt-cache policy raspberrypi-sys-mods | head -2 +-apt-cache policy openbox | head -2 +-apt-cache policy lxpanel | head -2 +-apt-cache policy pcmanfm | head -2 +-apt-cache policy rpd-plym-splash | head -2 +- +-echo + echo "Networking Information" + echo "----------------------" + echo +@@ -212,21 +58,11 @@ echo "USB Information" + echo "---------------" + echo + +-lsusb -t +- +-echo +-echo "Display Information" +-echo "-------------------" +-echo +- +-display_info +- +-echo +-echo "Audio Information" +-echo "-------------------" +-echo +- +-audio_info ++if command -v lsusb > /dev/null; then ++ lsusb -t ++else ++ echo usbutils not installed ++fi + + echo + echo "config.txt" +@@ -250,7 +86,7 @@ echo "-----------------" + echo + + if command -v pinctrl > /dev/null; then +- sudo pinctrl 2>&1 ++ pinctrl 2>&1 + elif command -v raspi-gpio > /dev/null; then + raspi-gpio get 2>&1 + else +@@ -263,9 +99,9 @@ echo "------------------" + echo + + if command -v vcdbg > /dev/null; then +- sudo vcdbg log msg 2>&1 ++ vcdbg log msg 2>&1 + elif command -v vclog > /dev/null; then +- sudo vclog --msg 2>&1 ++ vclog --msg 2>&1 + else + echo "vcdbg not found" + fi +@@ -284,5 +120,9 @@ echo + echo "EEPROM" + echo "------" + echo +-sudo rpi-eeprom-update ++if command -v rpi-eeprom-update > /dev/null; then ++ rpi-eeprom-update ++else ++ echo bcm27xx-eeprom not installed ++fi + fi diff --git a/bcm27xx-utils/patches/0002-pinctrl-replace-reallocarray.patch b/bcm27xx-utils/patches/0002-pinctrl-replace-reallocarray.patch new file mode 100644 index 000000000..d0191f620 --- /dev/null +++ b/bcm27xx-utils/patches/0002-pinctrl-replace-reallocarray.patch @@ -0,0 +1,11 @@ +--- a/pinctrl/pinctrl.c 2024-07-02 14:14:31.113459219 +0200 ++++ b/pinctrl/pinctrl.c 2024-07-02 14:14:44.533241981 +0200 +@@ -220,7 +220,7 @@ + if (!gpio_num_is_valid(gpio)) + return 1; + +- poll_gpios = reallocarray(poll_gpios, num_poll_gpios + 1, ++ poll_gpios = realloc(poll_gpios, num_poll_gpios + 1 * + sizeof(*poll_gpios)); + new_gpio = &poll_gpios[num_poll_gpios]; + new_gpio->num = num; diff --git a/collections/luci/Makefile b/collections/luci/Makefile deleted file mode 100644 index 961c60fd8..000000000 --- a/collections/luci/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TYPE:=col -LUCI_BASENAME:=luci - -LUCI_TITLE:=LuCI interface with Uhttpd as Webserver (default) -LUCI_DESCRIPTION:=Standard OpenWrt set including full admin with ppp support and the default Bootstrap theme -LUCI_DEPENDS:= \ - +uhttpd +luci-mod-admin-full +luci-theme-bootstrap \ - +luci-app-firewall +luci-proto-ppp +libiwinfo-lua +IPV6:luci-proto-ipv6 \ - +rpcd-mod-rrdns - -PKG_LICENSE:=Apache-2.0 - -include ../../luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/contributors/bdaylik.md b/contributors/bdaylik.md new file mode 100644 index 000000000..f83ea7d7c --- /dev/null +++ b/contributors/bdaylik.md @@ -0,0 +1,9 @@ +2024-03-22 + +I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +Baris Daylik https://github.com/bdaylik diff --git a/contributors/cr3ative.md b/contributors/cr3ative.md new file mode 100644 index 000000000..b0c58c54e --- /dev/null +++ b/contributors/cr3ative.md @@ -0,0 +1,9 @@ +2020-11-10 + +I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +Paul Curry https://github.com/cr3ative diff --git a/contributors/flesser.md b/contributors/flesser.md new file mode 100644 index 000000000..126dab7b5 --- /dev/null +++ b/contributors/flesser.md @@ -0,0 +1,9 @@ +2022-05-20 + +I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +Florian Karuhtz https://github.com/flesser diff --git a/contributors/ta264.md b/contributors/ta264.md new file mode 100644 index 000000000..06ed382e6 --- /dev/null +++ b/contributors/ta264.md @@ -0,0 +1,9 @@ +2022-08-26 + +I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +ta264 https://github.com/ta264 diff --git a/contributors/yostyle.md b/contributors/yostyle.md new file mode 100644 index 000000000..621b22d52 --- /dev/null +++ b/contributors/yostyle.md @@ -0,0 +1,9 @@ +2023-05-23 + +I hereby agree to the terms of the "OpenMPTCProuter Individual Contributor License Agreement", with MD5 checksum bc827a07eb93611d793ddb7c75083c00. + +I furthermore declare that I am authorized and able to make this agreement and sign this declaration. + +Signed, + +Yoan Pintas https://github.com/yostyle diff --git a/cryptodev-linux/Makefile b/cryptodev-linux/Makefile new file mode 100644 index 000000000..77b7fbf30 --- /dev/null +++ b/cryptodev-linux/Makefile @@ -0,0 +1,57 @@ +# +# Copyright (C) 2014 OpenWrt.org +# Copyright (C) 2023 Yannick Chabanois (Ycarus) for OpenMPTCProuter +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +# $Id$ + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=cryptodev-linux +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/$(PKG_NAME)/$(PKG_NAME).git +PKG_SOURCE_VERSION:=277d4574c10bb8e16ab6ab3f38b8e1cb6cd6c678 +PKG_VERSION:=1.14.20241010 +PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILES:=COPYING + +PKG_MAINTAINER:=Yannick Chabanois + + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/cryptodev + SUBMENU:=Cryptographic API modules + TITLE:=Driver for cryptographic acceleration + URL:=http://cryptodev-linux.org/ + DEPENDS:=+kmod-crypto-authenc +kmod-crypto-hash + FILES:=$(PKG_BUILD_DIR)/cryptodev.$(LINUX_KMOD_SUFFIX) + AUTOLOAD:=$(call AutoLoad,50,cryptodev) + MODPARAMS.cryptodev:=cryptodev_verbosity=-1 +endef + +define KernelPackage/cryptodev/description + This is a driver for that allows to use the Linux kernel supported + hardware ciphers by user-space applications. +endef + +define Build/Configure +endef + +define Build/Compile + $(MAKE) -C $(PKG_BUILD_DIR) \ + $(KERNEL_MAKE_FLAGS) \ + KERNEL_DIR="$(LINUX_DIR)" +endef + +define Build/InstallDev + $(INSTALL_DIR) $(STAGING_DIR)/usr/include/crypto + $(CP) $(PKG_BUILD_DIR)/crypto/cryptodev.h $(STAGING_DIR)/usr/include/crypto/ +endef + +$(eval $(call KernelPackage,cryptodev)) diff --git a/dsvpn/Makefile b/dsvpn/Makefile new file mode 100644 index 000000000..c025e7ad9 --- /dev/null +++ b/dsvpn/Makefile @@ -0,0 +1,47 @@ +# +# Copyright (C) 2019 Ycarus (Yannick Chabanois) for OpenMPTCProuter project +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_SOURCE_PROTO:=git +#PKG_SOURCE_URL:=https://github.com/jedisct1/dsvpn.git +PKG_SOURCE_URL:=https://github.com/Ysurac/dsvpn.git +#PKG_SOURCE_VERSION:=3b99d2ef6c02b2ef68b5784bec8adfdd55b29b1a +PKG_SOURCE_VERSION:=4333aa705efd9c86c76809614d20dc5ebf43da7f +PKG_NAME:=dsvpn +PKG_VERSION:=0.1.5 +PKG_RELEASE:=1 +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=LICENSE + +include $(INCLUDE_DIR)/package.mk + +define Package/$(PKG_NAME) +SECTION:=net +CATEGORY:=Network +DEPENDS:=+kmod-tun +TITLE:=A Dead Simple VPN +URL:=https://github.com/jedisct1/dsvpn +SUBMENU:=VPN +endef + +define Package/$(PKG_NAME)/conffiles +/etc/config/dsvpn +endef + +TARGET_CFLAGS += -DNO_DEFAULT_ROUTES -DNO_DEFAULT_FIREWALL -DNO_DEFAULT_CONGESTION + +define Package/$(PKG_NAME)/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/dsvpn $(1)/usr/sbin/$(PKG_NAME) + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) files/init $(1)/etc/init.d/$(PKG_NAME) + $(INSTALL_DIR) $(1)/etc/config + touch $(1)/etc/config/dsvpn +endef + +$(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/dsvpn/files/init b/dsvpn/files/init new file mode 100755 index 000000000..a43583913 --- /dev/null +++ b/dsvpn/files/init @@ -0,0 +1,106 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2019 Ycarus (Yannick Chabanois) for OpenMPTCProuter project + +START=90 +STOP=10 + +USE_PROCD=1 +PROG_NAME=dsvpn +PROG=/usr/sbin/${PROG_NAME} + +_log() { + logger -p daemon.info -t ${PROG_NAME} "$@" +} + +_err() { + logger -p daemon.err -t ${PROG_NAME} "$@" +} + +validate_section() { + uci_validate_section dsvpn dsvpn "${1}" \ + 'enable:bool:0' \ + 'key:string' \ + 'host:host' \ + 'port:port' \ + 'dev:string' \ + 'localip:host' \ + 'remoteip:host' \ + 'mode:string:client' \ + 'externalip:string:auto' +} + +version_over_5_4() { + MAJOR_VERSION=$(uname -r | awk -F '.' '{print $1}') + MINOR_VERSION=$(uname -r | awk -F '.' '{print $2}' | awk -F '-' '{print $1}') + if [ $MAJOR_VERSION -ge 5 ] && [ $MINOR_VERSION -gt 13 ] || [ $MAJOR_VERSION -gt 5 ] ; then + return 0 + else + return 1 + fi +} + +start_instance() { + local enable key host port dev + + validate_section "${1}" || { + _err "validation failed" + return 1 + } + + [ "${enable}" = "1" ] || return 1 + + [ -n "${key}" ] || return 1 + [ "${key}" != "secretkey" ] || return 1 + [ -z "${host}" ] && host="auto" + [ -z "${port}" ] && port="auto" + [ -n "${dev}" ] || return 1 + + echo "${key}" > /tmp/${PROG_NAME}-${1}.key + key="" + + if [ "$(uci -q get network.omrvpn)" != "" ] && [ "$(uci -q get network.omrvpn)" != "$dev" ]; then + uci -q set network.omrvpn.device=$dev + uci -q commit + fi + + ip addr flush $dev + sleep 2 + + _log "starting ${PROG_NAME} ${1} instance $*" + + if version_over_5_4; then + PROG="mptcpize run ${PROG}" + fi + + procd_open_instance + + procd_set_param command ${PROG} ${mode} \ + /tmp/${PROG_NAME}-${1}.key \ + $host \ + $port \ + $dev \ + ${localip:+$localip} \ + ${remoteip:+$remoteip} + [ "$mode" = "client" ] && procd_append_param command $(ip r get $host | awk '{print $3}' | tr -d "\n") + [ "$mode" = "server" ] && procd_append_param command externalip + + + procd_set_param respawn 0 30 5 + procd_set_param file /tmp/${PROG_NAME}-${1}.key + + procd_set_param stdout 1 + procd_set_param stderr 1 + + procd_close_instance + + +} + +start_service() { + config_load dsvpn + config_foreach start_instance dsvpn +} + +service_triggers() { + procd_add_reload_trigger dsvpn network +} diff --git a/dsvpn/patches/nostrip.patch b/dsvpn/patches/nostrip.patch new file mode 100644 index 000000000..628b16584 --- /dev/null +++ b/dsvpn/patches/nostrip.patch @@ -0,0 +1,10 @@ +--- a/Makefile 2019-08-03 22:52:54.541484359 +0200 ++++ b/Makefile 2019-08-03 22:53:00.901364600 +0200 +@@ -5,7 +5,6 @@ + + dsvpn: $(CFLAGS_FILE) Makefile src/vpn.c src/charm.c src/os.c include/charm.h include/vpn.h include/os.h + $(CC) $$(cat "$(CFLAGS_FILE)") $(OPTFLAGS) -Iinclude -o $@ src/vpn.c src/charm.c src/os.c +- strip $@ + + install: dsvpn + install -m 0755 dsvpn $(PREFIX)/sbin diff --git a/fast-classifier/Makefile b/fast-classifier/Makefile new file mode 100644 index 000000000..410a0df28 --- /dev/null +++ b/fast-classifier/Makefile @@ -0,0 +1,109 @@ +# +# Copyright (c) 2013-2018 The Linux Foundation. All rights reserved. +# Permission to use, copy, modify, and/or distribute this software for +# any purpose with or without fee is hereby granted, provided that the +# above copyright notice and this permission notice appear in all copies. +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=fast-classifier +PKG_RELEASE:=6 + +include $(INCLUDE_DIR)/package.mk + +define KernelPackage/fast-classifier/Default + SECTION:=kernel + CATEGORY:=Kernel modules + SUBMENU:=Network Support + DEPENDS:=@KERNEL_5_4 +kmod-ipt-conntrack +kmod-shortcut-fe + TITLE:=Kernel driver for FAST Classifier + FILES:=$(PKG_BUILD_DIR)/fast-classifier.ko + KCONFIG:= \ + CONFIG_NF_CONNTRACK_EVENTS=y \ + CONFIG_NF_CONNTRACK_CHAIN_EVENTS=y \ + CONFIG_NF_CONNTRACK_MARK=y \ + CONFIG_XFRM=y + CONFLICTS:=kmod-shortcut-fe-drv kmod-shortcut-fe-cm +endef + +define KernelPackage/fast-classifier + $(call KernelPackage/fast-classifier/Default) +endef + +define KernelPackage/fast-classifier-noload + $(call KernelPackage/fast-classifier/Default) +endef + +define KernelPackage/fast-classifier/Default/description +FAST Classifier talks to SFE to make decisions about offloading connections +endef + +define KernelPackage/fast-classifier/description +$(call KernelPackage/fast-classifier/Default/description) +endef + +define KernelPackage/fast-classifier-noload/description +$(call KernelPackage/fast-classifier/Default/description) + +This package does not load fast-classifier at boot by default +endef + +define Package/fast-classifier-example + TITLE:=Example user space program for fast-classifier + DEPENDS:=@KERNEL_5_4 +libnl +kmod-fast-classifier +endef + +define Package/fast-classifier-example/description +Example user space program that communicates with fast +classifier kernel module +endef + +HAVE_ECM:=$(CONFIG_PACKAGE_kmod-qca-nss-ecm-premium)$(CONFIG_PACKAGE_kmod-qca-nss-ecm-noload)$(CONFIG_PACKAGE_kmod-qca-nss-ecm-premium-noload)$(CONFIG_PACKAGE_kmod-qca-nss-ecm-standard) + +define Build/Compile/kmod + +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \ + $(KERNEL_MAKE_FLAGS) \ + $(PKG_MAKE_FLAGS) \ + M="$(PKG_BUILD_DIR)" \ + CONFIG_FAST_CLASSIFIER=m \ + EXTRA_CFLAGS+="-DSFE_SUPPORT_IPV6" \ + $(if $(HAVE_ECM),EXTRA_CFLAGS+="-DCONFIG_SFE_ECM" CONFIG_SFE_ECM=y,) \ + modules +endef + +define Build/Compile/example + $(TARGET_CC) -o $(PKG_BUILD_DIR)/userspace_fast_classifier \ + -I $(PKG_BUILD_DIR) \ + -I$(STAGING_DIR)/usr/include/libnl \ + -I$(STAGING_DIR)/usr/include/libnl3 \ + -lnl-genl-3 -lnl-3 \ + $(PKG_BUILD_DIR)/nl_classifier_test.c +endef + +define Build/Compile + $(Build/Compile/kmod) + $(if $(CONFIG_PACKAGE_fast-classifier-example),$(Build/Compile/example)) +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_BUILD_DIR)/fast-classifier.h $(1)/usr/include/ +endef + +define Package/fast-classifier-example/install + $(INSTALL_DIR) $(1)/sbin + $(CP) $(PKG_BUILD_DIR)/userspace_fast_classifier $(1)/sbin/ +endef + +$(eval $(call KernelPackage,fast-classifier)) +#$(eval $(call KernelPackage,fast-classifier-noload)) +#$(eval $(call BuildPackage,fast-classifier-example)) diff --git a/fast-classifier/src/Makefile b/fast-classifier/src/Makefile new file mode 100644 index 000000000..58dd06e01 --- /dev/null +++ b/fast-classifier/src/Makefile @@ -0,0 +1,10 @@ +obj-$(CONFIG_FAST_CLASSIFIER) += fast-classifier.o + +ifeq ($(SFE_SUPPORT_IPV6),) +SFE_SUPPORT_IPV6=y +endif +ccflags-$(SFE_SUPPORT_IPV6) += -DSFE_SUPPORT_IPV6 + +ccflags-y += -I$(obj)/../shortcut-fe + +obj ?= . diff --git a/fast-classifier/src/fast-classifier.c b/fast-classifier/src/fast-classifier.c new file mode 100644 index 000000000..944dfae38 --- /dev/null +++ b/fast-classifier/src/fast-classifier.c @@ -0,0 +1,2002 @@ +/* + * fast-classifier.c + * Shortcut forwarding engine connection manager. + * fast-classifier + * + * Copyright (c) 2013-2018 The Linux Foundation. All rights reserved. + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all copies. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "fast-classifier.h" + +typedef enum fast_classifier_exception { + FAST_CL_EXCEPTION_PACKET_BROADCAST, + FAST_CL_EXCEPTION_PACKET_MULTICAST, + FAST_CL_EXCEPTION_NO_IIF, + FAST_CL_EXCEPTION_NO_CT, + FAST_CL_EXCEPTION_CT_NO_TRACK, + FAST_CL_EXCEPTION_CT_NO_CONFIRM, + FAST_CL_EXCEPTION_CT_IS_ALG, + FAST_CL_EXCEPTION_IS_IPV4_MCAST, + FAST_CL_EXCEPTION_IS_IPV6_MCAST, + FAST_CL_EXCEPTION_TCP_NOT_ASSURED, + FAST_CL_EXCEPTION_TCP_NOT_ESTABLISHED, + FAST_CL_EXCEPTION_UNKNOW_PROTOCOL, + FAST_CL_EXCEPTION_NO_SRC_DEV, + FAST_CL_EXCEPTION_NO_SRC_XLATE_DEV, + FAST_CL_EXCEPTION_NO_DEST_DEV, + FAST_CL_EXCEPTION_NO_DEST_XLATE_DEV, + FAST_CL_EXCEPTION_NO_BRIDGE, + FAST_CL_EXCEPTION_LOCAL_OUT, + FAST_CL_EXCEPTION_WAIT_FOR_ACCELERATION, + FAST_CL_EXCEPTION_UPDATE_PROTOCOL_FAIL, + FAST_CL_EXCEPTION_CT_DESTROY_MISS, + FAST_CL_EXCEPTION_MAX +} fast_classifier_exception_t; + +static char *fast_classifier_exception_events_string[FAST_CL_EXCEPTION_MAX] = { + "PACKET_BROADCAST", + "PACKET_MULTICAST", + "NO_IIF", + "NO_CT", + "CT_NO_TRACK", + "CT_NO_CONFIRM", + "CT_IS_ALG", + "IS_IPV4_MCAST", + "IS_IPV6_MCAST", + "TCP_NOT_ASSURED", + "TCP_NOT_ESTABLISHED", + "UNKNOW_PROTOCOL", + "NO_SRC_DEV", + "NO_SRC_XLATE_DEV", + "NO_DEST_DEV", + "NO_DEST_XLATE_DEV", + "NO_BRIDGE", + "LOCAL_OUT", + "WAIT_FOR_ACCELERATION", + "UPDATE_PROTOCOL_FAIL", + "CT_DESTROY_MISS", +}; + +/* + * Per-module structure. + */ +struct fast_classifier { + spinlock_t lock; /* Lock for SMP correctness */ + + /* + * Control state. + */ + struct kobject *sys_fast_classifier; /* sysfs linkage */ + + /* + * Callback notifiers. + */ + struct notifier_block dev_notifier; /* Device notifier */ + struct notifier_block inet_notifier; /* IPv4 notifier */ + struct notifier_block inet6_notifier; /* IPv6 notifier */ + u32 exceptions[FAST_CL_EXCEPTION_MAX]; +}; + +static struct fast_classifier __sc; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) +static struct nla_policy fast_classifier_genl_policy[FAST_CLASSIFIER_A_MAX + 1] = { + [FAST_CLASSIFIER_A_TUPLE] = { + .type = NLA_UNSPEC, + .len = sizeof(struct fast_classifier_tuple) + }, +}; +#endif /*KERNEL_VERSION(5, 2, 0)*/ + +static struct genl_multicast_group fast_classifier_genl_mcgrp[] = { + { + .name = FAST_CLASSIFIER_GENL_MCGRP, + }, +}; + +static int fast_classifier_offload_genl_msg(struct sk_buff *skb, struct genl_info *info); +static int fast_classifier_nl_genl_msg_DUMP(struct sk_buff *skb, struct netlink_callback *cb); + +static struct genl_ops fast_classifier_gnl_ops[] = { + { + .cmd = FAST_CLASSIFIER_C_OFFLOAD, + .flags = 0, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) + .policy = fast_classifier_genl_policy, +#endif /*KERNEL_VERSION(5, 2, 0)*/ + .doit = fast_classifier_offload_genl_msg, + .dumpit = NULL, + }, + { + .cmd = FAST_CLASSIFIER_C_OFFLOADED, + .flags = 0, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) + .policy = fast_classifier_genl_policy, +#endif /*KERNEL_VERSION(5, 2, 0)*/ + .doit = NULL, + .dumpit = fast_classifier_nl_genl_msg_DUMP, + }, + { + .cmd = FAST_CLASSIFIER_C_DONE, + .flags = 0, +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) + .policy = fast_classifier_genl_policy, +#endif /*KERNEL_VERSION(5, 2, 0)*/ + .doit = NULL, + .dumpit = fast_classifier_nl_genl_msg_DUMP, + }, +}; + +static struct genl_family fast_classifier_gnl_family = { +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)) + .id = GENL_ID_GENERATE, +#endif /*KERNEL_VERSION(4, 10, 0)*/ + .hdrsize = FAST_CLASSIFIER_GENL_HDRSIZE, + .name = FAST_CLASSIFIER_GENL_NAME, + .version = FAST_CLASSIFIER_GENL_VERSION, + .maxattr = FAST_CLASSIFIER_A_MAX, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) + .ops = fast_classifier_gnl_ops, + .n_ops = ARRAY_SIZE(fast_classifier_gnl_ops), + .mcgrps = fast_classifier_genl_mcgrp, + .n_mcgrps = ARRAY_SIZE(fast_classifier_genl_mcgrp), +#endif /*KERNEL_VERSION(4, 10, 0)*/ +}; + +static atomic_t offload_msgs = ATOMIC_INIT(0); +static atomic_t offload_no_match_msgs = ATOMIC_INIT(0); +static atomic_t offloaded_msgs = ATOMIC_INIT(0); +static atomic_t done_msgs = ATOMIC_INIT(0); + +static atomic_t offloaded_fail_msgs = ATOMIC_INIT(0); +static atomic_t done_fail_msgs = ATOMIC_INIT(0); + +/* + * Accelerate incoming packets destined for bridge device + * If a incoming packet is ultimatly destined for + * a bridge device we will first see the packet coming + * from the phyiscal device, we can skip straight to + * processing the packet like it came from the bridge + * for some more performance gains + * + * This only works when the hook is above the bridge. We + * only implement ingress for now, because for egress we + * want to have the bridge devices qdiscs be used. + */ +static bool skip_to_bridge_ingress; + +/* + * fast_classifier_incr_exceptions() + * increase an exception counter. + */ +static inline void fast_classifier_incr_exceptions(fast_classifier_exception_t except) +{ + struct fast_classifier *sc = &__sc; + + spin_lock_bh(&sc->lock); + sc->exceptions[except]++; + spin_unlock_bh(&sc->lock); +} + +/* + * fast_classifier_recv() + * Handle packet receives. + * + * Returns 1 if the packet is forwarded or 0 if it isn't. + */ +int fast_classifier_recv(struct sk_buff *skb) +{ + struct net_device *dev; + struct net_device *master_dev = NULL; + int ret = 0; + + /* + * We know that for the vast majority of packets we need the transport + * layer header so we may as well start to fetch it now! + */ + prefetch(skb->data + 32); + barrier(); + + dev = skb->dev; + + /* + * Process packet like it arrived on the bridge device + */ + if (skip_to_bridge_ingress && + (dev->priv_flags & IFF_BRIDGE_PORT)) { + master_dev = sfe_dev_get_master(dev); + if (!master_dev) { + DEBUG_WARN("master dev is NULL %s\n", dev->name); + goto rx_exit; + } + dev = master_dev; + } + + /* + * We're only interested in IPv4 and IPv6 packets. + */ + if (likely(htons(ETH_P_IP) == skb->protocol)) { + struct in_device *in_dev; + + /* + * Does our input device support IP processing? + */ + in_dev = (struct in_device *)dev->ip_ptr; + if (unlikely(!in_dev)) { + DEBUG_TRACE("no IP processing for device: %s\n", dev->name); + goto rx_exit; + } + + /* + * Does it have an IP address? If it doesn't then we can't do anything + * interesting here! + */ + if (unlikely(!in_dev->ifa_list)) { + DEBUG_TRACE("no IP address for device: %s\n", dev->name); + goto rx_exit; + } + + ret = sfe_ipv4_recv(dev, skb); + + } else if (likely(htons(ETH_P_IPV6) == skb->protocol)) { + struct inet6_dev *in_dev; + + /* + * Does our input device support IPv6 processing? + */ + in_dev = (struct inet6_dev *)dev->ip6_ptr; + if (unlikely(!in_dev)) { + DEBUG_TRACE("no IPv6 processing for device: %s\n", dev->name); + goto rx_exit; + } + + /* + * Does it have an IPv6 address? If it doesn't then we can't do anything + * interesting here! + */ + if (unlikely(list_empty(&in_dev->addr_list))) { + DEBUG_TRACE("no IPv6 address for device: %s\n", dev->name); + goto rx_exit; + } + + ret = sfe_ipv6_recv(dev, skb); + + } else { + DEBUG_TRACE("not IP packet\n"); + } + +rx_exit: + if (master_dev) { + dev_put(master_dev); + } + + return ret; +} + +/* + * fast_classifier_find_dev_and_mac_addr() + * Find the device and MAC address for a given IPv4 address. + * + * Returns true if we find the device and MAC address, otherwise false. + * + * We look up the rtable entry for the address and, from its neighbour + * structure, obtain the hardware address. This means this function also + * works if the neighbours are routers too. + */ +static bool fast_classifier_find_dev_and_mac_addr(struct sk_buff *skb, sfe_ip_addr_t *addr, struct net_device **dev, u8 *mac_addr, bool is_v4) +{ + struct neighbour *neigh; + struct rtable *rt; + struct rt6_info *rt6; + struct dst_entry *dst; + struct net_device *mac_dev; + + /* + * If we have skb provided, use it as the original code is unable + * to lookup routes that are policy routed. + */ + if (unlikely(skb)) { + dst = skb_dst(skb); + goto skip_dst_lookup; + } + + /* + * Look up the rtable entry for the IP address then get the hardware + * address from its neighbour structure. This means this works when the + * neighbours are routers too. + */ + if (likely(is_v4)) { + rt = ip_route_output(&init_net, addr->ip, 0, 0, 0); + if (unlikely(IS_ERR(rt))) { + goto ret_fail; + } + + dst = (struct dst_entry *)rt; + } +#ifdef SFE_SUPPORT_IPV6 + else { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0)) + rt6 = rt6_lookup(&init_net, (struct in6_addr *)addr->ip6, 0, 0, NULL, 0); +#else + rt6 = rt6_lookup(&init_net, (struct in6_addr *)addr->ip6, 0, 0, 0); +#endif /*KERNEL_VERSION(4, 17, 0)*/ + if (!rt6) { + goto ret_fail; + } + + dst = (struct dst_entry *)rt6; + } +#endif + +skip_dst_lookup: + rcu_read_lock(); + neigh = sfe_dst_get_neighbour(dst, addr); + if (unlikely(!neigh)) { + rcu_read_unlock(); + if (likely(!skb)) + dst_release(dst); + + goto ret_fail; + } + + if (unlikely(!(neigh->nud_state & NUD_VALID))) { + rcu_read_unlock(); + neigh_release(neigh); + if (likely(!skb)) + dst_release(dst); + + goto ret_fail; + } + + mac_dev = neigh->dev; + if (!mac_dev) { + rcu_read_unlock(); + neigh_release(neigh); + if (likely(!skb)) + dst_release(dst); + + goto ret_fail; + } + + memcpy(mac_addr, neigh->ha, (size_t)mac_dev->addr_len); + + dev_hold(mac_dev); + *dev = mac_dev; + rcu_read_unlock(); + neigh_release(neigh); + if (likely(!skb)) + dst_release(dst); + + return true; + +ret_fail: + if (is_v4) { + DEBUG_TRACE("failed to find MAC address for IP: %pI4\n", addr); + + } else { + DEBUG_TRACE("failed to find MAC address for IP: %pI6\n", addr); + } + + return false; +} + +static DEFINE_SPINLOCK(sfe_connections_lock); + +struct sfe_connection { + struct hlist_node hl; + struct sfe_connection_create *sic; + struct nf_conn *ct; + int hits; + int offload_permit; + int offloaded; + bool is_v4; + unsigned char smac[ETH_ALEN]; + unsigned char dmac[ETH_ALEN]; +}; + +static int sfe_connections_size; + +#define FC_CONN_HASH_ORDER 13 +static DEFINE_HASHTABLE(fc_conn_ht, FC_CONN_HASH_ORDER); + +static u32 fc_conn_hash(sfe_ip_addr_t *saddr, sfe_ip_addr_t *daddr, + unsigned short sport, unsigned short dport, bool is_v4) +{ + u32 idx, cnt = ((is_v4 ? sizeof(saddr->ip) : sizeof(saddr->ip6))/sizeof(u32)); + u32 hash = 0; + + for (idx = 0; idx < cnt; idx++) { + hash ^= ((u32 *)saddr)[idx] ^ ((u32 *)daddr)[idx]; + } + + return hash ^ (sport | (dport << 16)); +} + +/* + * fast_classifier_update_protocol() + * Update sfe_ipv4_create struct with new protocol information before we offload + */ +static int fast_classifier_update_protocol(struct sfe_connection_create *p_sic, struct nf_conn *ct) +{ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0) + struct net *net=NULL ; + struct nf_tcp_net *tn=NULL; + #endif + switch (p_sic->protocol) { + case IPPROTO_TCP: + p_sic->src_td_window_scale = ct->proto.tcp.seen[0].td_scale; + p_sic->src_td_max_window = ct->proto.tcp.seen[0].td_maxwin; + p_sic->src_td_end = ct->proto.tcp.seen[0].td_end; + p_sic->src_td_max_end = ct->proto.tcp.seen[0].td_maxend; + p_sic->dest_td_window_scale = ct->proto.tcp.seen[1].td_scale; + p_sic->dest_td_max_window = ct->proto.tcp.seen[1].td_maxwin; + p_sic->dest_td_end = ct->proto.tcp.seen[1].td_end; + p_sic->dest_td_max_end = ct->proto.tcp.seen[1].td_maxend; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0) + net = nf_ct_net(ct); + tn = nf_tcp_pernet(net); + if ((tn&&tn->tcp_no_window_check) +#else + if (nf_ct_tcp_no_window_check +#endif + + || (ct->proto.tcp.seen[0].flags & IP_CT_TCP_FLAG_BE_LIBERAL) + || (ct->proto.tcp.seen[1].flags & IP_CT_TCP_FLAG_BE_LIBERAL)) { + p_sic->flags |= SFE_CREATE_FLAG_NO_SEQ_CHECK; + } + + /* + * If the connection is shutting down do not manage it. + * state can not be SYN_SENT, SYN_RECV because connection is assured + * Not managed states: FIN_WAIT, CLOSE_WAIT, LAST_ACK, TIME_WAIT, CLOSE. + */ + spin_lock(&ct->lock); + if (ct->proto.tcp.state != TCP_CONNTRACK_ESTABLISHED) { + spin_unlock(&ct->lock); + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_TCP_NOT_ESTABLISHED); + DEBUG_TRACE("connection in termination state: %#x, s: %pI4:%u, d: %pI4:%u\n", + ct->proto.tcp.state, &p_sic->src_ip, ntohs(p_sic->src_port), + &p_sic->dest_ip, ntohs(p_sic->dest_port)); + return 0; + } + spin_unlock(&ct->lock); + break; + + case IPPROTO_UDP: + break; + + default: + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_UNKNOW_PROTOCOL); + DEBUG_TRACE("unhandled protocol %d\n", p_sic->protocol); + return 0; + } + + return 1; +} + +/* fast_classifier_send_genl_msg() + * Function to send a generic netlink message + */ +static void fast_classifier_send_genl_msg(int msg, struct fast_classifier_tuple *fc_msg) +{ + struct sk_buff *skb; + int rc; + int buf_len; + int total_len; + void *msg_head; + + /* + * Calculate our packet payload size. + * Start with our family header. + */ + buf_len = fast_classifier_gnl_family.hdrsize; + + /* + * Add the nla_total_size of each attribute we're going to nla_put(). + */ + buf_len += nla_total_size(sizeof(*fc_msg)); + + /* + * Lastly we need to add space for the NL message header since + * genlmsg_new only accounts for the GENL header and not the + * outer NL header. To do this, we use a NL helper function which + * calculates the total size of a netlink message given a payload size. + * Note this value does not include the GENL header, but that's + * added automatically by genlmsg_new. + */ + total_len = nlmsg_total_size(buf_len); + skb = genlmsg_new(total_len, GFP_ATOMIC); + if (!skb) + return; + + msg_head = genlmsg_put(skb, 0, 0, &fast_classifier_gnl_family, 0, msg); + if (!msg_head) { + nlmsg_free(skb); + return; + } + + rc = nla_put(skb, FAST_CLASSIFIER_A_TUPLE, sizeof(struct fast_classifier_tuple), fc_msg); + if (rc != 0) { + genlmsg_cancel(skb, msg_head); + nlmsg_free(skb); + return; + } + +#if (LINUX_VERSION_CODE <= KERNEL_VERSION(3, 19 , 0)) + rc = genlmsg_end(skb, msg_head); + if (rc < 0) { + genlmsg_cancel(skb, msg_head); + nlmsg_free(skb); + return; + } +#else + genlmsg_end(skb, msg_head); + +#endif + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)) + rc = genlmsg_multicast(&fast_classifier_gnl_family, skb, 0, 0, GFP_ATOMIC); +#else + rc = genlmsg_multicast(skb, 0, fast_classifier_genl_mcgrp[0].id, GFP_ATOMIC); +#endif + switch (msg) { + case FAST_CLASSIFIER_C_OFFLOADED: + if (rc == 0) { + atomic_inc(&offloaded_msgs); + } else { + atomic_inc(&offloaded_fail_msgs); + } + break; + case FAST_CLASSIFIER_C_DONE: + if (rc == 0) { + atomic_inc(&done_msgs); + } else { + atomic_inc(&done_fail_msgs); + } + break; + default: + DEBUG_ERROR("fast-classifer: Unknown message type sent!\n"); + break; + } + + DEBUG_TRACE("Notify NL message %d ", msg); + if (fc_msg->ethertype == AF_INET) { + DEBUG_TRACE("sip=%pI4 dip=%pI4 ", &fc_msg->src_saddr, &fc_msg->dst_saddr); + } else { + DEBUG_TRACE("sip=%pI6 dip=%pI6 ", &fc_msg->src_saddr, &fc_msg->dst_saddr); + } + DEBUG_TRACE("protocol=%d sport=%d dport=%d smac=%pM dmac=%pM\n", + fc_msg->proto, fc_msg->sport, fc_msg->dport, fc_msg->smac, fc_msg->dmac); +} + +/* + * fast_classifier_find_conn() + * find a connection object in the hash table + * @pre the sfe_connection_lock must be held before calling this function + */ +static struct sfe_connection * +fast_classifier_find_conn(sfe_ip_addr_t *saddr, sfe_ip_addr_t *daddr, + unsigned short sport, unsigned short dport, + unsigned char proto, bool is_v4) +{ + struct sfe_connection_create *p_sic; + struct sfe_connection *conn; + u32 key; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) + struct hlist_node *node; +#endif + + key = fc_conn_hash(saddr, daddr, sport, dport, is_v4); + + sfe_hash_for_each_possible(fc_conn_ht, conn, node, hl, key) { + if (conn->is_v4 != is_v4) { + continue; + } + + p_sic = conn->sic; + + if (p_sic->protocol == proto && + p_sic->src_port == sport && + p_sic->dest_port == dport && + sfe_addr_equal(&p_sic->src_ip, saddr, is_v4) && + sfe_addr_equal(&p_sic->dest_ip, daddr, is_v4)) { + return conn; + } + } + + DEBUG_TRACE("connection not found\n"); + return NULL; +} + +/* + * fast_classifier_sb_find_conn() + * find a connection object in the hash table according to information of packet + * if not found, reverse the tuple and try again. + * @pre the sfe_connection_lock must be held before calling this function + */ +static struct sfe_connection * +fast_classifier_sb_find_conn(sfe_ip_addr_t *saddr, sfe_ip_addr_t *daddr, + unsigned short sport, unsigned short dport, + unsigned char proto, bool is_v4) +{ + struct sfe_connection_create *p_sic; + struct sfe_connection *conn; + u32 key; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) + struct hlist_node *node; +#endif + + key = fc_conn_hash(saddr, daddr, sport, dport, is_v4); + + sfe_hash_for_each_possible(fc_conn_ht, conn, node, hl, key) { + if (conn->is_v4 != is_v4) { + continue; + } + + p_sic = conn->sic; + + if (p_sic->protocol == proto && + p_sic->src_port == sport && + p_sic->dest_port_xlate == dport && + sfe_addr_equal(&p_sic->src_ip, saddr, is_v4) && + sfe_addr_equal(&p_sic->dest_ip_xlate, daddr, is_v4)) { + return conn; + } + } + + /* + * Reverse the tuple and try again + */ + key = fc_conn_hash(daddr, saddr, dport, sport, is_v4); + + sfe_hash_for_each_possible(fc_conn_ht, conn, node, hl, key) { + if (conn->is_v4 != is_v4) { + continue; + } + + p_sic = conn->sic; + + if (p_sic->protocol == proto && + p_sic->src_port == dport && + p_sic->dest_port_xlate == sport && + sfe_addr_equal(&p_sic->src_ip, daddr, is_v4) && + sfe_addr_equal(&p_sic->dest_ip_xlate, saddr, is_v4)) { + return conn; + } + } + + DEBUG_TRACE("connection not found\n"); + return NULL; +} + +/* + * fast_classifier_add_conn() + * add a connection object in the hash table if no duplicate + * @conn connection to add + * @return conn if successful, NULL if duplicate + */ +static struct sfe_connection * +fast_classifier_add_conn(struct sfe_connection *conn) +{ + struct sfe_connection_create *sic = conn->sic; + u32 key; + + spin_lock_bh(&sfe_connections_lock); + if (fast_classifier_find_conn(&sic->src_ip, &sic->dest_ip, sic->src_port, + sic->dest_port, sic->protocol, conn->is_v4)) { + spin_unlock_bh(&sfe_connections_lock); + return NULL; + } + + key = fc_conn_hash(&sic->src_ip, &sic->dest_ip, + sic->src_port, sic->dest_port, conn->is_v4); + + hash_add(fc_conn_ht, &conn->hl, key); + sfe_connections_size++; + spin_unlock_bh(&sfe_connections_lock); + + DEBUG_TRACE(" -> adding item to sfe_connections, new size: %d\n", sfe_connections_size); + + if (conn->is_v4) { + DEBUG_TRACE("new offloadable: key: %u proto: %d src_ip: %pI4 dst_ip: %pI4, src_port: %d, dst_port: %d\n", + key, sic->protocol, &(sic->src_ip), &(sic->dest_ip), sic->src_port, sic->dest_port); + } else { + DEBUG_TRACE("new offloadable: key: %u proto: %d src_ip: %pI6 dst_ip: %pI6, src_port: %d, dst_port: %d\n", + key, sic->protocol, &(sic->src_ip), &(sic->dest_ip), sic->src_port, sic->dest_port); + } + + return conn; +} + +/* + * fast_classifier_offload_genl_msg() + * Called from user space to offload a connection + */ +static int +fast_classifier_offload_genl_msg(struct sk_buff *skb, struct genl_info *info) +{ + struct nlattr *na; + struct fast_classifier_tuple *fc_msg; + struct sfe_connection *conn; + + na = info->attrs[FAST_CLASSIFIER_A_TUPLE]; + fc_msg = nla_data(na); + + if (fc_msg->ethertype == AF_INET) { + DEBUG_TRACE("want to offload: %d-%d, %pI4, %pI4, %d, %d SMAC=%pM DMAC=%pM\n", + fc_msg->ethertype, + fc_msg->proto, + &fc_msg->src_saddr, + &fc_msg->dst_saddr, + fc_msg->sport, + fc_msg->dport, + fc_msg->smac, + fc_msg->dmac); + } else { + DEBUG_TRACE("want to offload: %d-%d, %pI6, %pI6, %d, %d SMAC=%pM DMAC=%pM\n", + fc_msg->ethertype, + fc_msg->proto, + &fc_msg->src_saddr, + &fc_msg->dst_saddr, + fc_msg->sport, + fc_msg->dport, + fc_msg->smac, + fc_msg->dmac); + } + + spin_lock_bh(&sfe_connections_lock); + conn = fast_classifier_sb_find_conn((sfe_ip_addr_t *)&fc_msg->src_saddr, + (sfe_ip_addr_t *)&fc_msg->dst_saddr, + fc_msg->sport, + fc_msg->dport, + fc_msg->proto, + (fc_msg->ethertype == AF_INET)); + if (!conn) { + spin_unlock_bh(&sfe_connections_lock); + DEBUG_TRACE("REQUEST OFFLOAD NO MATCH\n"); + atomic_inc(&offload_no_match_msgs); + return 0; + } + + conn->offload_permit = 1; + spin_unlock_bh(&sfe_connections_lock); + atomic_inc(&offload_msgs); + + DEBUG_TRACE("INFO: calling sfe rule creation!\n"); + return 0; +} + +/* + * fast_classifier_nl_genl_msg_DUMP() + * ignore fast_classifier_messages OFFLOADED and DONE + */ +static int fast_classifier_nl_genl_msg_DUMP(struct sk_buff *skb, + struct netlink_callback *cb) +{ + return 0; +} + +/* auto offload connection once we have this many packets*/ +static int offload_at_pkts = 128; + +/* + * fast_classifier_post_routing() + * Called for packets about to leave the box - either locally generated or forwarded from another interface + */ +static unsigned int fast_classifier_post_routing(struct sk_buff *skb, bool is_v4) +{ + int ret; + struct sfe_connection_create sic; + struct sfe_connection_create *p_sic; + struct net_device *in; + struct nf_conn *ct; + enum ip_conntrack_info ctinfo; + struct net_device *dev; + struct net_device *src_dev; + struct net_device *dest_dev; + struct net_device *src_dev_tmp; + struct net_device *dest_dev_tmp; + struct net_device *src_br_dev = NULL; + struct net_device *dest_br_dev = NULL; + struct nf_conntrack_tuple orig_tuple; + struct nf_conntrack_tuple reply_tuple; + struct sfe_connection *conn; + struct sk_buff *tmp_skb = NULL; + + /* + * Don't process broadcast or multicast packets. + */ + if (unlikely(skb->pkt_type == PACKET_BROADCAST)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_PACKET_BROADCAST); + DEBUG_TRACE("broadcast, ignoring\n"); + return NF_ACCEPT; + } + if (unlikely(skb->pkt_type == PACKET_MULTICAST)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_PACKET_MULTICAST); + DEBUG_TRACE("multicast, ignoring\n"); + return NF_ACCEPT; + } + + /* + * Don't process packets that are not being forwarded. + */ + in = dev_get_by_index(&init_net, skb->skb_iif); + if (!in) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_IIF); + DEBUG_TRACE("packet not forwarding\n"); + return NF_ACCEPT; + } + + dev_put(in); + + /* + * Don't process packets that aren't being tracked by conntrack. + */ + ct = nf_ct_get(skb, &ctinfo); + if (unlikely(!ct)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_CT); + DEBUG_TRACE("no conntrack connection, ignoring\n"); + return NF_ACCEPT; + } + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)) + /* + * Don't process untracked connections. + */ + if (unlikely(nf_ct_is_untracked(ct))) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_CT_NO_TRACK); + DEBUG_TRACE("untracked connection\n"); + return NF_ACCEPT; + } +#endif /*KERNEL_VERSION(4, 12, 0)*/ + + /* + * Unconfirmed connection may be dropped by Linux at the final step, + * So we don't process unconfirmed connections. + */ + if (!nf_ct_is_confirmed(ct)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_CT_NO_CONFIRM); + DEBUG_TRACE("unconfirmed connection\n"); + return NF_ACCEPT; + } + + /* + * Don't process connections that require support from a 'helper' (typically a NAT ALG). + */ + if (unlikely(nfct_help(ct))) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_CT_IS_ALG); + DEBUG_TRACE("connection has helper\n"); + return NF_ACCEPT; + } + + memset(&sic, 0, sizeof(sic)); + + /* + * Look up the details of our connection in conntrack. + * + * Note that the data we get from conntrack is for the "ORIGINAL" direction + * but our packet may actually be in the "REPLY" direction. + */ + orig_tuple = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple; + reply_tuple = ct->tuplehash[IP_CT_DIR_REPLY].tuple; + sic.protocol = (s32)orig_tuple.dst.protonum; + + sic.flags = 0; + + /* + * Get addressing information, non-NAT first + */ + if (likely(is_v4)) { + u32 dscp; + + sic.src_ip.ip = (__be32)orig_tuple.src.u3.ip; + sic.dest_ip.ip = (__be32)orig_tuple.dst.u3.ip; + + if (ipv4_is_multicast(sic.src_ip.ip) || ipv4_is_multicast(sic.dest_ip.ip)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_IS_IPV4_MCAST); + DEBUG_TRACE("multicast address\n"); + return NF_ACCEPT; + } + + /* + * NAT'ed addresses - note these are as seen from the 'reply' direction + * When NAT does not apply to this connection these will be identical to the above. + */ + sic.src_ip_xlate.ip = (__be32)reply_tuple.dst.u3.ip; + sic.dest_ip_xlate.ip = (__be32)reply_tuple.src.u3.ip; + + dscp = ipv4_get_dsfield(ip_hdr(skb)) >> XT_DSCP_SHIFT; + if (dscp) { + sic.dest_dscp = dscp; + sic.src_dscp = sic.dest_dscp; + sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP; + } + } else { + u32 dscp; + + sic.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6); + sic.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6); + + if (ipv6_addr_is_multicast((struct in6_addr *)sic.src_ip.ip6) || + ipv6_addr_is_multicast((struct in6_addr *)sic.dest_ip.ip6)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_IS_IPV6_MCAST); + DEBUG_TRACE("multicast address\n"); + return NF_ACCEPT; + } + + /* + * NAT'ed addresses - note these are as seen from the 'reply' direction + * When NAT does not apply to this connection these will be identical to the above. + */ + sic.src_ip_xlate.ip6[0] = *((struct sfe_ipv6_addr *)&reply_tuple.dst.u3.in6); + sic.dest_ip_xlate.ip6[0] = *((struct sfe_ipv6_addr *)&reply_tuple.src.u3.in6); + + dscp = ipv6_get_dsfield(ipv6_hdr(skb)) >> XT_DSCP_SHIFT; + if (dscp) { + sic.dest_dscp = dscp; + sic.src_dscp = sic.dest_dscp; + sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP; + } + } + + switch (sic.protocol) { + case IPPROTO_TCP: + sic.src_port = orig_tuple.src.u.tcp.port; + sic.dest_port = orig_tuple.dst.u.tcp.port; + sic.src_port_xlate = reply_tuple.dst.u.tcp.port; + sic.dest_port_xlate = reply_tuple.src.u.tcp.port; + + /* + * Don't try to manage a non-established connection. + */ + if (!test_bit(IPS_ASSURED_BIT, &ct->status)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_TCP_NOT_ASSURED); + DEBUG_TRACE("non-established connection\n"); + return NF_ACCEPT; + } + + break; + + case IPPROTO_UDP: + sic.src_port = orig_tuple.src.u.udp.port; + sic.dest_port = orig_tuple.dst.u.udp.port; + sic.src_port_xlate = reply_tuple.dst.u.udp.port; + sic.dest_port_xlate = reply_tuple.src.u.udp.port; + + /* + * Somehow, SFE is not playing nice with IPSec traffic. + * Do not accelerate for now. + */ + if (ntohs(sic.dest_port) == 4500 || ntohs(sic.dest_port) == 500) { + if (likely(is_v4)) + DEBUG_TRACE("quarkysg:: IPsec bypass: %pI4:%d(%pI4:%d) to %pI4:%d(%pI4:%d)\n", + &sic.src_ip.ip, ntohs(sic.src_port), &sic.src_ip_xlate.ip, ntohs(sic.src_port_xlate), + &sic.dest_ip.ip, ntohs(sic.dest_port), &sic.dest_ip_xlate.ip, ntohs(sic.dest_port_xlate)); + else + DEBUG_TRACE("quarkysg:: IPsec bypass: %pI6:%d to %pI6:%d\n", + &sic.src_ip.ip6, ntohs(sic.src_port), &sic.dest_ip.ip6, ntohs(sic.dest_port)); + return NF_ACCEPT; + } + break; + + default: + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_UNKNOW_PROTOCOL); + DEBUG_TRACE("unhandled protocol %d\n", sic.protocol); + return NF_ACCEPT; + } + +#ifdef CONFIG_XFRM + sic.original_accel = 1; + sic.reply_accel = 1; +#endif + + /* + * Get QoS information + */ + if (skb->priority) { + sic.dest_priority = skb->priority; + sic.src_priority = sic.dest_priority; + sic.flags |= SFE_CREATE_FLAG_REMARK_PRIORITY; + } + + if (is_v4) { + DEBUG_TRACE("POST_ROUTE: checking new connection: %d src_ip: %pI4 dst_ip: %pI4, src_port: %d, dst_port: %d\n", + sic.protocol, &sic.src_ip, &sic.dest_ip, sic.src_port, sic.dest_port); + } else { + DEBUG_TRACE("POST_ROUTE: checking new connection: %d src_ip: %pI6 dst_ip: %pI6, src_port: %d, dst_port: %d\n", + sic.protocol, &sic.src_ip, &sic.dest_ip, sic.src_port, sic.dest_port); + } + + /* + * If we already have this connection in our list, skip it + * XXX: this may need to be optimized + */ + spin_lock_bh(&sfe_connections_lock); + + conn = fast_classifier_find_conn(&sic.src_ip, &sic.dest_ip, sic.src_port, sic.dest_port, sic.protocol, is_v4); + if (conn) { + conn->hits++; + + if (!conn->offloaded) { + if (conn->offload_permit || conn->hits >= offload_at_pkts) { + DEBUG_TRACE("OFFLOADING CONNECTION, TOO MANY HITS\n"); + + if (fast_classifier_update_protocol(conn->sic, conn->ct) == 0) { + spin_unlock_bh(&sfe_connections_lock); + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_UPDATE_PROTOCOL_FAIL); + DEBUG_TRACE("UNKNOWN PROTOCOL OR CONNECTION CLOSING, SKIPPING\n"); + return NF_ACCEPT; + } + + DEBUG_TRACE("INFO: calling sfe rule creation!\n"); + spin_unlock_bh(&sfe_connections_lock); + + ret = is_v4 ? sfe_ipv4_create_rule(conn->sic) : sfe_ipv6_create_rule(conn->sic); + if ((ret == 0) || (ret == -EADDRINUSE)) { + struct fast_classifier_tuple fc_msg; + + if (is_v4) { + fc_msg.ethertype = AF_INET; + fc_msg.src_saddr.in = *((struct in_addr *)&sic.src_ip); + fc_msg.dst_saddr.in = *((struct in_addr *)&sic.dest_ip_xlate); + } else { + fc_msg.ethertype = AF_INET6; + fc_msg.src_saddr.in6 = *((struct in6_addr *)&sic.src_ip); + fc_msg.dst_saddr.in6 = *((struct in6_addr *)&sic.dest_ip_xlate); + } + + fc_msg.proto = sic.protocol; + fc_msg.sport = sic.src_port; + fc_msg.dport = sic.dest_port_xlate; + memcpy(fc_msg.smac, conn->smac, ETH_ALEN); + memcpy(fc_msg.dmac, conn->dmac, ETH_ALEN); + fast_classifier_send_genl_msg(FAST_CLASSIFIER_C_OFFLOADED, &fc_msg); + conn->offloaded = 1; + } + + return NF_ACCEPT; + } + } + + spin_unlock_bh(&sfe_connections_lock); + if (conn->offloaded) { + is_v4 ? sfe_ipv4_update_rule(conn->sic) : sfe_ipv6_update_rule(conn->sic); + } + + DEBUG_TRACE("FOUND, SKIPPING\n"); + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_WAIT_FOR_ACCELERATION); + return NF_ACCEPT; + } + + spin_unlock_bh(&sfe_connections_lock); + + /* + * Get the net device and MAC addresses that correspond to the various source and + * destination host addresses. + */ + if (!fast_classifier_find_dev_and_mac_addr(NULL, &sic.src_ip, &src_dev_tmp, sic.src_mac, is_v4)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_SRC_DEV); + return NF_ACCEPT; + } + src_dev = src_dev_tmp; + + if (!fast_classifier_find_dev_and_mac_addr(NULL, &sic.src_ip_xlate, &dev, sic.src_mac_xlate, is_v4)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_SRC_XLATE_DEV); + goto done1; + } + dev_put(dev); + + if (unlikely(!is_v4)) + tmp_skb = skb; + + if (!fast_classifier_find_dev_and_mac_addr(tmp_skb, &sic.dest_ip, &dev, sic.dest_mac, is_v4)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_DEST_DEV); + goto done1; + } + dev_put(dev); + + if (!fast_classifier_find_dev_and_mac_addr(skb, &sic.dest_ip_xlate, &dest_dev_tmp, sic.dest_mac_xlate, is_v4)) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_DEST_XLATE_DEV); + goto done1; + } + dest_dev = dest_dev_tmp; + + /* + * Our devices may actually be part of a bridge interface. If that's + * the case then find the bridge interface instead. + */ + if (src_dev->priv_flags & IFF_BRIDGE_PORT) { + src_br_dev = sfe_dev_get_master(src_dev); + if (!src_br_dev) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_BRIDGE); + DEBUG_TRACE("no bridge found for: %s\n", src_dev->name); + goto done2; + } + src_dev = src_br_dev; + } + + if (dest_dev->priv_flags & IFF_BRIDGE_PORT) { + dest_br_dev = sfe_dev_get_master(dest_dev); + if (!dest_br_dev) { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_NO_BRIDGE); + DEBUG_TRACE("no bridge found for: %s\n", dest_dev->name); + goto done3; + } + dest_dev = dest_br_dev; + } + + sic.src_dev = src_dev; + sic.dest_dev = dest_dev; + + sic.src_mtu = src_dev->mtu; + sic.dest_mtu = dest_dev->mtu; + + if (skb->mark) { + DEBUG_TRACE("SKB MARK NON ZERO %x\n", skb->mark); + } + sic.mark = skb->mark; + + conn = kmalloc(sizeof(*conn), GFP_ATOMIC); + if (!conn) { + printk(KERN_CRIT "ERROR: no memory for sfe\n"); + goto done4; + } + conn->hits = 0; + conn->offload_permit = 0; + conn->offloaded = 0; + conn->is_v4 = is_v4; + DEBUG_TRACE("Source MAC=%pM\n", sic.src_mac); + memcpy(conn->smac, sic.src_mac, ETH_ALEN); + memcpy(conn->dmac, sic.dest_mac_xlate, ETH_ALEN); + + p_sic = kmalloc(sizeof(*p_sic), GFP_ATOMIC); + if (!p_sic) { + printk(KERN_CRIT "ERROR: no memory for sfe\n"); + kfree(conn); + goto done4; + } + + memcpy(p_sic, &sic, sizeof(sic)); + conn->sic = p_sic; + conn->ct = ct; + + if (!fast_classifier_add_conn(conn)) { + kfree(conn->sic); + kfree(conn); + } + + /* + * If we had bridge ports then release them too. + */ +done4: + if (dest_br_dev) { + dev_put(dest_br_dev); + } +done3: + if (src_br_dev) { + dev_put(src_br_dev); + } +done2: + dev_put(dest_dev_tmp); +done1: + dev_put(src_dev_tmp); + + return NF_ACCEPT; +} + +/* + * fast_classifier_ipv4_post_routing_hook() + * Called for packets about to leave the box - either locally generated or forwarded from another interface + */ +fast_classifier_ipv4_post_routing_hook(hooknum, ops, skb, in_unused, out, okfn) +{ + return fast_classifier_post_routing(skb, true); +} + +/* + * fast_classifier_ipv6_post_routing_hook() + * Called for packets about to leave the box - either locally generated or forwarded from another interface + */ +fast_classifier_ipv6_post_routing_hook(hooknum, ops, skb, in_unused, out, okfn) +{ + return fast_classifier_post_routing(skb, false); +} + +/* + * fast_classifier_update_mark() + * updates the mark for a fast-classifier connection + */ +static void fast_classifier_update_mark(struct sfe_connection_mark *mark, bool is_v4) +{ + struct sfe_connection *conn; + + spin_lock_bh(&sfe_connections_lock); + + conn = fast_classifier_find_conn(&mark->src_ip, &mark->dest_ip, + mark->src_port, mark->dest_port, + mark->protocol, is_v4); + if (conn) { + conn->sic->mark = mark->mark; + } + + spin_unlock_bh(&sfe_connections_lock); +} + +#ifdef CONFIG_NF_CONNTRACK_EVENTS +/* + * fast_classifier_conntrack_event() + * Callback event invoked when a conntrack connection's state changes. + */ +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS +static int fast_classifier_conntrack_event(struct notifier_block *this, + unsigned long events, void *ptr) +#else +static int fast_classifier_conntrack_event(unsigned int events, struct nf_ct_event *item) +#endif +{ +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS + struct nf_ct_event *item = ptr; +#endif + struct sfe_connection_destroy sid; + struct nf_conn *ct = item->ct; + struct nf_conntrack_tuple orig_tuple; + struct sfe_connection *conn; + struct fast_classifier_tuple fc_msg; + int offloaded = 0; + bool is_v4; + + /* + * If we don't have a conntrack entry then we're done. + */ + if (unlikely(!ct)) { + DEBUG_WARN("no ct in conntrack event callback\n"); + return NOTIFY_DONE; + } + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)) + /* + * If this is an untracked connection then we can't have any state either. + */ + if (unlikely(nf_ct_is_untracked(ct))) { + DEBUG_TRACE("ignoring untracked conn\n"); + return NOTIFY_DONE; + } +#endif /*KERNEL_VERSION(4, 12, 0)*/ + + orig_tuple = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple; + sid.protocol = (s32)orig_tuple.dst.protonum; + + /* + * Extract information from the conntrack connection. We're only interested + * in nominal connection information (i.e. we're ignoring any NAT information). + */ + if (likely(nf_ct_l3num(ct) == AF_INET)) { + sid.src_ip.ip = (__be32)orig_tuple.src.u3.ip; + sid.dest_ip.ip = (__be32)orig_tuple.dst.u3.ip; + is_v4 = true; + } else if (likely(nf_ct_l3num(ct) == AF_INET6)) { + sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6); + sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6); + is_v4 = false; + } else { + DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n"); + return NOTIFY_DONE; + } + + switch (sid.protocol) { + case IPPROTO_TCP: + sid.src_port = orig_tuple.src.u.tcp.port; + sid.dest_port = orig_tuple.dst.u.tcp.port; + break; + + case IPPROTO_UDP: + sid.src_port = orig_tuple.src.u.udp.port; + sid.dest_port = orig_tuple.dst.u.udp.port; + break; + + default: + DEBUG_TRACE("unhandled protocol: %d\n", sid.protocol); + return NOTIFY_DONE; + } + + /* + * Check for an updated mark + */ + if ((events & (1 << IPCT_MARK)) && (ct->mark != 0)) { + struct sfe_connection_mark mark; + + mark.protocol = sid.protocol; + mark.src_ip = sid.src_ip; + mark.dest_ip = sid.dest_ip; + mark.src_port = sid.src_port; + mark.dest_port = sid.dest_port; + mark.mark = ct->mark; + + is_v4 ? sfe_ipv4_mark_rule(&mark) : sfe_ipv6_mark_rule(&mark); + fast_classifier_update_mark(&mark, is_v4); + } + + /* + * We're only interested in destroy events at this point + */ + if (unlikely(!(events & (1 << IPCT_DESTROY)))) { + DEBUG_TRACE("ignoring non-destroy event\n"); + return NOTIFY_DONE; + } + + if (is_v4) { + DEBUG_TRACE("Try to clean up: proto: %d src_ip: %pI4 dst_ip: %pI4, src_port: %d, dst_port: %d\n", + sid.protocol, &sid.src_ip, &sid.dest_ip, ntohs(sid.src_port), ntohs(sid.dest_port)); + } else { + DEBUG_TRACE("Try to clean up: proto: %d src_ip: %pI6 dst_ip: %pI6, src_port: %d, dst_port: %d\n", + sid.protocol, &sid.src_ip, &sid.dest_ip, ntohs(sid.src_port), ntohs(sid.dest_port)); + } + + spin_lock_bh(&sfe_connections_lock); + + conn = fast_classifier_find_conn(&sid.src_ip, &sid.dest_ip, sid.src_port, sid.dest_port, sid.protocol, is_v4); + if (conn && conn->offloaded) { + if (is_v4) { + fc_msg.ethertype = AF_INET; + fc_msg.src_saddr.in = *((struct in_addr *)&conn->sic->src_ip); + fc_msg.dst_saddr.in = *((struct in_addr *)&conn->sic->dest_ip_xlate); + } else { + fc_msg.ethertype = AF_INET6; + fc_msg.src_saddr.in6 = *((struct in6_addr *)&conn->sic->src_ip); + fc_msg.dst_saddr.in6 = *((struct in6_addr *)&conn->sic->dest_ip_xlate); + } + + fc_msg.proto = conn->sic->protocol; + fc_msg.sport = conn->sic->src_port; + fc_msg.dport = conn->sic->dest_port_xlate; + memcpy(fc_msg.smac, conn->smac, ETH_ALEN); + memcpy(fc_msg.dmac, conn->dmac, ETH_ALEN); + offloaded = 1; + } + + if (conn) { + DEBUG_TRACE("Free connection\n"); + + hash_del(&conn->hl); + sfe_connections_size--; + kfree(conn->sic); + kfree(conn); + } else { + fast_classifier_incr_exceptions(FAST_CL_EXCEPTION_CT_DESTROY_MISS); + } + + spin_unlock_bh(&sfe_connections_lock); + + is_v4 ? sfe_ipv4_destroy_rule(&sid) : sfe_ipv6_destroy_rule(&sid); + + if (offloaded) { + fast_classifier_send_genl_msg(FAST_CLASSIFIER_C_DONE, &fc_msg); + } + + return NOTIFY_DONE; +} + +/* + * Netfilter conntrack event system to monitor connection tracking changes + */ +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS +static struct notifier_block fast_classifier_conntrack_notifier = { + .notifier_call = fast_classifier_conntrack_event, +}; +#else +static struct nf_ct_event_notifier fast_classifier_conntrack_notifier = { + .fcn = fast_classifier_conntrack_event, +}; +#endif +#endif + +/* + * Structure to establish a hook into the post routing netfilter point - this + * will pick up local outbound and packets going from one interface to another. + * + * Note: see include/linux/netfilter_ipv4.h for info related to priority levels. + * We want to examine packets after NAT translation and any ALG processing. + */ +static struct nf_hook_ops fast_classifier_ops_post_routing[] __read_mostly = { + SFE_IPV4_NF_POST_ROUTING_HOOK(__fast_classifier_ipv4_post_routing_hook), + SFE_IPV6_NF_POST_ROUTING_HOOK(__fast_classifier_ipv6_post_routing_hook), +}; + +/* + * fast_classifier_sync_rule() + * Synchronize a connection's state. + */ +static void fast_classifier_sync_rule(struct sfe_connection_sync *sis) +{ + struct nf_conntrack_tuple_hash *h; + struct nf_conntrack_tuple tuple; + struct nf_conn *ct; + SFE_NF_CONN_ACCT(acct); + + /* + * Create a tuple so as to be able to look up a connection + */ + memset(&tuple, 0, sizeof(tuple)); + tuple.src.u.all = (__be16)sis->src_port; + tuple.dst.dir = IP_CT_DIR_ORIGINAL; + tuple.dst.protonum = (u8)sis->protocol; + tuple.dst.u.all = (__be16)sis->dest_port; + + if (sis->is_v6) { + tuple.src.u3.in6 = *((struct in6_addr *)sis->src_ip.ip6); + tuple.dst.u3.in6 = *((struct in6_addr *)sis->dest_ip.ip6); + tuple.src.l3num = AF_INET6; + + DEBUG_TRACE("update connection - p: %d, s: %pI6:%u, d: %pI6:%u\n", + (int)tuple.dst.protonum, + &tuple.src.u3.in6, (unsigned int)ntohs(tuple.src.u.all), + &tuple.dst.u3.in6, (unsigned int)ntohs(tuple.dst.u.all)); + } else { + tuple.src.u3.ip = sis->src_ip.ip; + tuple.dst.u3.ip = sis->dest_ip.ip; + tuple.src.l3num = AF_INET; + + DEBUG_TRACE("update connection - p: %d, s: %pI4:%u, d: %pI4:%u\n", + (int)tuple.dst.protonum, + &tuple.src.u3.ip, (unsigned int)ntohs(tuple.src.u.all), + &tuple.dst.u3.ip, (unsigned int)ntohs(tuple.dst.u.all)); + } + + /* + * Update packet count for ingress on bridge device + */ + if (skip_to_bridge_ingress) { + struct rtnl_link_stats64 nlstats; + nlstats.tx_packets = 0; + nlstats.tx_bytes = 0; + + if (sis->src_dev && IFF_EBRIDGE && + (sis->src_new_packet_count || sis->src_new_byte_count)) { + nlstats.rx_packets = sis->src_new_packet_count; + nlstats.rx_bytes = sis->src_new_byte_count; + spin_lock_bh(&sfe_connections_lock); + br_dev_update_stats(sis->src_dev, &nlstats); + spin_unlock_bh(&sfe_connections_lock); + } + if (sis->dest_dev && IFF_EBRIDGE && + (sis->dest_new_packet_count || sis->dest_new_byte_count)) { + nlstats.rx_packets = sis->dest_new_packet_count; + nlstats.rx_bytes = sis->dest_new_byte_count; + spin_lock_bh(&sfe_connections_lock); + br_dev_update_stats(sis->dest_dev, &nlstats); + spin_unlock_bh(&sfe_connections_lock); + } + } + + /* + * Look up conntrack connection + */ + h = nf_conntrack_find_get(&init_net, SFE_NF_CT_DEFAULT_ZONE, &tuple); + if (unlikely(!h)) { + DEBUG_TRACE("no connection found\n"); + return; + } + + ct = nf_ct_tuplehash_to_ctrack(h); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)) + NF_CT_ASSERT(ct->timeout.data == (unsigned long)ct); +#endif /*KERNEL_VERSION(4, 9, 0)*/ + + /* + * Only update if this is not a fixed timeout + */ + if (!test_bit(IPS_FIXED_TIMEOUT_BIT, &ct->status)) { + spin_lock_bh(&ct->lock); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)) + ct->timeout += sis->delta_jiffies; +#else + ct->timeout.expires += sis->delta_jiffies; +#endif /*KERNEL_VERSION(4, 9, 0)*/ + spin_unlock_bh(&ct->lock); + } + + acct = nf_conn_acct_find(ct); + if (acct) { + spin_lock_bh(&ct->lock); + atomic64_add(sis->src_new_packet_count, &SFE_ACCT_COUNTER(acct)[IP_CT_DIR_ORIGINAL].packets); + atomic64_add(sis->src_new_byte_count, &SFE_ACCT_COUNTER(acct)[IP_CT_DIR_ORIGINAL].bytes); + atomic64_add(sis->dest_new_packet_count, &SFE_ACCT_COUNTER(acct)[IP_CT_DIR_REPLY].packets); + atomic64_add(sis->dest_new_byte_count, &SFE_ACCT_COUNTER(acct)[IP_CT_DIR_REPLY].bytes); + spin_unlock_bh(&ct->lock); + } + + switch (sis->protocol) { + case IPPROTO_TCP: + spin_lock_bh(&ct->lock); + if (ct->proto.tcp.seen[0].td_maxwin < sis->src_td_max_window) { + ct->proto.tcp.seen[0].td_maxwin = sis->src_td_max_window; + } + if ((s32)(ct->proto.tcp.seen[0].td_end - sis->src_td_end) < 0) { + ct->proto.tcp.seen[0].td_end = sis->src_td_end; + } + if ((s32)(ct->proto.tcp.seen[0].td_maxend - sis->src_td_max_end) < 0) { + ct->proto.tcp.seen[0].td_maxend = sis->src_td_max_end; + } + if (ct->proto.tcp.seen[1].td_maxwin < sis->dest_td_max_window) { + ct->proto.tcp.seen[1].td_maxwin = sis->dest_td_max_window; + } + if ((s32)(ct->proto.tcp.seen[1].td_end - sis->dest_td_end) < 0) { + ct->proto.tcp.seen[1].td_end = sis->dest_td_end; + } + if ((s32)(ct->proto.tcp.seen[1].td_maxend - sis->dest_td_max_end) < 0) { + ct->proto.tcp.seen[1].td_maxend = sis->dest_td_max_end; + } + spin_unlock_bh(&ct->lock); + break; + } + + /* + * Release connection + */ + nf_ct_put(ct); +} + +/* + * fast_classifier_device_event() + */ +static int fast_classifier_device_event(struct notifier_block *this, unsigned long event, void *ptr) +{ + struct net_device *dev = SFE_DEV_EVENT_PTR(ptr); + + if (dev && (event == NETDEV_DOWN)) { + sfe_ipv4_destroy_all_rules_for_dev(dev); + sfe_ipv6_destroy_all_rules_for_dev(dev); + } + + return NOTIFY_DONE; +} + +/* + * fast_classifier_inet_event() + */ +static int fast_classifier_inet_event(struct notifier_block *this, unsigned long event, void *ptr) +{ + struct net_device *dev = ((struct in_ifaddr *)ptr)->ifa_dev->dev; + + if (dev && (event == NETDEV_DOWN)) { + sfe_ipv4_destroy_all_rules_for_dev(dev); + } + + return NOTIFY_DONE; +} + +/* + * fast_classifier_inet6_event() + */ +static int fast_classifier_inet6_event(struct notifier_block *this, unsigned long event, void *ptr) +{ + struct net_device *dev = ((struct inet6_ifaddr *)ptr)->idev->dev; + + if (dev && (event == NETDEV_DOWN)) { + sfe_ipv6_destroy_all_rules_for_dev(dev); + } + + return NOTIFY_DONE; +} + +/* + * fast_classifier_get_offload_at_pkts() + */ +static ssize_t fast_classifier_get_offload_at_pkts(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + return snprintf(buf, (ssize_t)PAGE_SIZE, "%d\n", offload_at_pkts); +} + +/* + * fast_classifier_set_offload_at_pkts() + */ +static ssize_t fast_classifier_set_offload_at_pkts(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t size) +{ + long new; + int ret; + + ret = kstrtol(buf, 0, &new); + if (ret == -EINVAL || ((int)new != new)) + return -EINVAL; + + offload_at_pkts = new; + + return size; +} + +/* + * fast_classifier_get_debug_info() + */ +static ssize_t fast_classifier_get_debug_info(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + size_t len = 0; + struct sfe_connection *conn; + u32 i; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) + struct hlist_node *node; +#endif + + spin_lock_bh(&sfe_connections_lock); + len += scnprintf(buf, PAGE_SIZE - len, "size=%d offload=%d offload_no_match=%d" + " offloaded=%d done=%d offloaded_fail=%d done_fail=%d\n", + sfe_connections_size, + atomic_read(&offload_msgs), + atomic_read(&offload_no_match_msgs), + atomic_read(&offloaded_msgs), + atomic_read(&done_msgs), + atomic_read(&offloaded_fail_msgs), + atomic_read(&done_fail_msgs)); + sfe_hash_for_each(fc_conn_ht, i, node, conn, hl) { + len += scnprintf(buf + len, PAGE_SIZE - len, + (conn->is_v4 ? "o=%d, p=%d [%pM]:%pI4:%u %pI4:%u:[%pM] m=%08x h=%d\n" : "o=%d, p=%d [%pM]:%pI6:%u %pI6:%u:[%pM] m=%08x h=%d\n"), + conn->offloaded, + conn->sic->protocol, + conn->sic->src_mac, + &conn->sic->src_ip, + ntohs(conn->sic->src_port), + &conn->sic->dest_ip, + ntohs(conn->sic->dest_port), + conn->sic->dest_mac_xlate, + conn->sic->mark, + conn->hits); + } + spin_unlock_bh(&sfe_connections_lock); + + return len; +} + +/* + * fast_classifier_get_skip_bridge_ingress() + */ +static ssize_t fast_classifier_get_skip_bridge_ingress(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + return snprintf(buf, (ssize_t)PAGE_SIZE, "%d\n", skip_to_bridge_ingress); +} + +/* + * fast_classifier_set_skip_bridge_ingress() + */ +static ssize_t fast_classifier_set_skip_bridge_ingress(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t size) +{ + long new; + int ret; + + ret = kstrtol(buf, 0, &new); + if (ret == -EINVAL || ((int)new != new)) + return -EINVAL; + + skip_to_bridge_ingress = new ? 1 : 0; + + return size; +} + +/* + * fast_classifier_get_exceptions + * dump exception counters + */ +static ssize_t fast_classifier_get_exceptions(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + int idx, len; + struct fast_classifier *sc = &__sc; + + spin_lock_bh(&sc->lock); + for (len = 0, idx = 0; idx < FAST_CL_EXCEPTION_MAX; idx++) { + if (sc->exceptions[idx]) { + len += snprintf(buf + len, (ssize_t)(PAGE_SIZE - len), "%s = %d\n", fast_classifier_exception_events_string[idx], sc->exceptions[idx]); + } + } + spin_unlock_bh(&sc->lock); + + return len; +} + +/* + * sysfs attributes. + */ +static const struct device_attribute fast_classifier_offload_at_pkts_attr = + __ATTR(offload_at_pkts, S_IWUSR | S_IRUGO, fast_classifier_get_offload_at_pkts, fast_classifier_set_offload_at_pkts); +static const struct device_attribute fast_classifier_debug_info_attr = + __ATTR(debug_info, S_IRUGO, fast_classifier_get_debug_info, NULL); +static const struct device_attribute fast_classifier_skip_bridge_ingress = + __ATTR(skip_to_bridge_ingress, S_IWUSR | S_IRUGO, fast_classifier_get_skip_bridge_ingress, fast_classifier_set_skip_bridge_ingress); +static const struct device_attribute fast_classifier_exceptions_attr = + __ATTR(exceptions, S_IRUGO, fast_classifier_get_exceptions, NULL); + +/* + * fast_classifier_init() + */ +static int __init fast_classifier_init(void) +{ + struct fast_classifier *sc = &__sc; + int result = -1; +#ifdef CONFIG_SFE_ECM + int (*fast_recv)(struct sk_buff *skb); +#endif + + printk(KERN_ALERT "fast-classifier: starting up\n"); + DEBUG_INFO("SFE CM init\n"); + + hash_init(fc_conn_ht); + + /* + * Create sys/fast_classifier + */ + sc->sys_fast_classifier = kobject_create_and_add("fast_classifier", NULL); + if (!sc->sys_fast_classifier) { + DEBUG_ERROR("failed to register fast_classifier\n"); + goto exit1; + } + + result = sysfs_create_file(sc->sys_fast_classifier, &fast_classifier_offload_at_pkts_attr.attr); + if (result) { + DEBUG_ERROR("failed to register offload at pkgs: %d\n", result); + goto exit2; + } + + result = sysfs_create_file(sc->sys_fast_classifier, &fast_classifier_debug_info_attr.attr); + if (result) { + DEBUG_ERROR("failed to register debug dev: %d\n", result); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_offload_at_pkts_attr.attr); + goto exit2; + } + + result = sysfs_create_file(sc->sys_fast_classifier, &fast_classifier_skip_bridge_ingress.attr); + if (result) { + DEBUG_ERROR("failed to register skip bridge on ingress: %d\n", result); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_offload_at_pkts_attr.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_debug_info_attr.attr); + goto exit2; + } + + result = sysfs_create_file(sc->sys_fast_classifier, &fast_classifier_exceptions_attr.attr); + if (result) { + DEBUG_ERROR("failed to register exceptions file: %d\n", result); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_offload_at_pkts_attr.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_debug_info_attr.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_skip_bridge_ingress.attr); + goto exit2; + } + + sc->dev_notifier.notifier_call = fast_classifier_device_event; + sc->dev_notifier.priority = 1; + register_netdevice_notifier(&sc->dev_notifier); + + sc->inet_notifier.notifier_call = fast_classifier_inet_event; + sc->inet_notifier.priority = 1; + register_inetaddr_notifier(&sc->inet_notifier); + + sc->inet6_notifier.notifier_call = fast_classifier_inet6_event; + sc->inet6_notifier.priority = 1; + register_inet6addr_notifier(&sc->inet6_notifier); + + /* + * Register our netfilter hooks. + */ + result = nf_register_net_hooks(&init_net, fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing)); + if (result < 0) { + DEBUG_ERROR("can't register nf post routing hook: %d\n", result); + goto exit3; + } + +#ifdef CONFIG_NF_CONNTRACK_EVENTS + /* + * Register a notifier hook to get fast notifications of expired connections. + */ +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS + result = nf_conntrack_register_chain_notifier(&init_net, &fast_classifier_conntrack_notifier); +#else + result = nf_conntrack_register_notifier(&init_net, &fast_classifier_conntrack_notifier); +#endif + if (result < 0) { + DEBUG_ERROR("can't register nf notifier hook: %d\n", result); + goto exit4; + } +#endif + + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) + result = genl_register_family(&fast_classifier_gnl_family); + if (result) { + DEBUG_ERROR("failed to register genl family: %d\n", result); + goto exit5; + } +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)) + result = genl_register_family_with_ops_groups(&fast_classifier_gnl_family, + fast_classifier_gnl_ops, + fast_classifier_genl_mcgrp); + if (result) { + DEBUG_ERROR("failed to register genl ops: %d\n", result); + goto exit5; + } +#else + result = genl_register_family(&fast_classifier_gnl_family); + if (result) { + printk(KERN_CRIT "unable to register genl family\n"); + goto exit5; + } + + result = genl_register_ops(&fast_classifier_gnl_family, fast_classifier_gnl_ops); + if (result) { + printk(KERN_CRIT "unable to register ops\n"); + goto exit6; + } + + result = genl_register_mc_group(&fast_classifier_gnl_family, + fast_classifier_genl_mcgrp); + if (result) { + printk(KERN_CRIT "unable to register multicast group\n"); + goto exit6; + } +#endif + + printk(KERN_ALERT "fast-classifier: registered\n"); + + spin_lock_init(&sc->lock); + + /* + * Hook the receive path in the network stack. + */ +#ifdef CONFIG_SFE_ECM + rcu_read_lock(); + fast_recv = rcu_dereference(athrs_fast_nat_recv); + rcu_read_unlock(); + if (!fast_recv) { + BUG_ON(athrs_fast_nat_recv); + } +#else + BUG_ON(athrs_fast_nat_recv); +#endif + RCU_INIT_POINTER(athrs_fast_nat_recv, fast_classifier_recv); + + /* + * Hook the shortcut sync callback. + */ + sfe_ipv4_register_sync_rule_callback(fast_classifier_sync_rule); + sfe_ipv6_register_sync_rule_callback(fast_classifier_sync_rule); + return 0; + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)) +exit6: + genl_unregister_family(&fast_classifier_gnl_family); +#endif + +exit5: +#ifdef CONFIG_NF_CONNTRACK_EVENTS +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS + nf_conntrack_unregister_chain_notifier(&init_net, &fast_classifier_conntrack_notifier); +#else + nf_conntrack_unregister_notifier(&init_net, &fast_classifier_conntrack_notifier); +#endif + +exit4: +#endif + nf_unregister_net_hooks(&init_net, fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing)); + +exit3: + unregister_inetaddr_notifier(&sc->inet_notifier); + unregister_inet6addr_notifier(&sc->inet6_notifier); + unregister_netdevice_notifier(&sc->dev_notifier); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_offload_at_pkts_attr.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_debug_info_attr.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_skip_bridge_ingress.attr); + sysfs_remove_file(sc->sys_fast_classifier, &fast_classifier_exceptions_attr.attr); + +exit2: + kobject_put(sc->sys_fast_classifier); + +exit1: + return result; +} + +/* + * fast_classifier_exit() + */ +static void __exit fast_classifier_exit(void) +{ + struct fast_classifier *sc = &__sc; + int result = -1; + + DEBUG_INFO("SFE CM exit\n"); + printk(KERN_ALERT "fast-classifier: shutting down\n"); + + /* + * Unregister our sync callback. + */ + sfe_ipv4_register_sync_rule_callback(NULL); + sfe_ipv6_register_sync_rule_callback(NULL); + + /* + * Unregister our receive callback. + */ + RCU_INIT_POINTER(athrs_fast_nat_recv, NULL); + + /* + * Wait for all callbacks to complete. + */ + rcu_barrier(); + + /* + * Destroy all connections. + */ + sfe_ipv4_destroy_all_rules_for_dev(NULL); + sfe_ipv6_destroy_all_rules_for_dev(NULL); + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)) + result = genl_unregister_ops(&fast_classifier_gnl_family, fast_classifier_gnl_ops); + if (result != 0) { + printk(KERN_CRIT "Unable to unreigster genl_ops\n"); + } +#endif + + result = genl_unregister_family(&fast_classifier_gnl_family); + if (result != 0) { + printk(KERN_CRIT "Unable to unregister genl_family\n"); + } + +#ifdef CONFIG_NF_CONNTRACK_EVENTS +#ifdef CONFIG_NF_CONNTRACK_CHAIN_EVENTS + nf_conntrack_unregister_chain_notifier(&init_net, &fast_classifier_conntrack_notifier); +#else + nf_conntrack_unregister_notifier(&init_net, &fast_classifier_conntrack_notifier); +#endif +#endif + nf_unregister_net_hooks(&init_net, fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing)); + + unregister_inet6addr_notifier(&sc->inet6_notifier); + unregister_inetaddr_notifier(&sc->inet_notifier); + unregister_netdevice_notifier(&sc->dev_notifier); + + kobject_put(sc->sys_fast_classifier); +} + +module_init(fast_classifier_init) +module_exit(fast_classifier_exit) + +MODULE_DESCRIPTION("Shortcut Forwarding Engine - Connection Manager"); +MODULE_LICENSE("Dual BSD/GPL"); + diff --git a/fast-classifier/src/fast-classifier.h b/fast-classifier/src/fast-classifier.h new file mode 100644 index 000000000..6b7a18cf6 --- /dev/null +++ b/fast-classifier/src/fast-classifier.h @@ -0,0 +1,57 @@ +/* + * User space header to send message to the fast classifier + * + * Copyright (c) 2013,2016 The Linux Foundation. All rights reserved. + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all copies. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include + +#define FAST_CLASSIFIER_GENL_VERSION (1) +#define FAST_CLASSIFIER_GENL_NAME "FC" +#define FAST_CLASSIFIER_GENL_MCGRP "FC_MCGRP" +#define FAST_CLASSIFIER_GENL_HDRSIZE (0) + +enum { + FAST_CLASSIFIER_A_UNSPEC, + FAST_CLASSIFIER_A_TUPLE, + __FAST_CLASSIFIER_A_MAX, +}; + +#define FAST_CLASSIFIER_A_MAX (__FAST_CLASSIFIER_A_MAX - 1) + +enum { + FAST_CLASSIFIER_C_UNSPEC, + FAST_CLASSIFIER_C_OFFLOAD, + FAST_CLASSIFIER_C_OFFLOADED, + FAST_CLASSIFIER_C_DONE, + __FAST_CLASSIFIER_C_MAX, +}; + +#define FAST_CLASSIFIER_C_MAX (__FAST_CLASSIFIER_C_MAX - 1) + +struct fast_classifier_tuple { + unsigned short ethertype; + unsigned char proto; + union { + struct in_addr in; + struct in6_addr in6; + } src_saddr; + union { + struct in_addr in; + struct in6_addr in6; + } dst_saddr; + unsigned short sport; + unsigned short dport; + unsigned char smac[ETH_ALEN]; + unsigned char dmac[ETH_ALEN]; +}; diff --git a/fast-classifier/src/nl_classifier_test.c b/fast-classifier/src/nl_classifier_test.c new file mode 100644 index 000000000..639417964 --- /dev/null +++ b/fast-classifier/src/nl_classifier_test.c @@ -0,0 +1,281 @@ +/* + * Copyright (c) 2016 The Linux Foundation. All rights reserved. + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all copies. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include + +#define NL_CLASSIFIER_GENL_VERSION 1 +#define NL_CLASSIFIER_GENL_FAMILY "FC" +#define NL_CLASSIFIER_GENL_GROUP "FC_MCGRP" +#define NL_CLASSIFIER_GENL_HDRSIZE 0 + +enum NL_CLASSIFIER_CMD { + NL_CLASSIFIER_CMD_UNSPEC, + NL_CLASSIFIER_CMD_ACCEL, + NL_CLASSIFIER_CMD_ACCEL_OK, + NL_CLASSIFIER_CMD_CONNECTION_CLOSED, + NL_CLASSIFIER_CMD_MAX, +}; + +enum NL_CLASSIFIER_ATTR { + NL_CLASSIFIER_ATTR_UNSPEC, + NL_CLASSIFIER_ATTR_TUPLE, + NL_CLASSIFIER_ATTR_MAX, +}; + +union nl_classifier_tuple_ip { + struct in_addr in; + struct in6_addr in6; +}; + +struct nl_classifier_tuple { + unsigned short af; + unsigned char proto; + union nl_classifier_tuple_ip src_ip; + union nl_classifier_tuple_ip dst_ip; + unsigned short sport; + unsigned short dport; + unsigned char smac[6]; + unsigned char dmac[6]; +}; + +struct nl_classifier_instance { + struct nl_sock *sock; + int family_id; + int group_id; + int stop; +}; + +struct nl_classifier_instance nl_cls_inst; + +static struct nla_policy nl_classifier_genl_policy[(NL_CLASSIFIER_ATTR_MAX+1)] = { + [NL_CLASSIFIER_ATTR_TUPLE] = { .type = NLA_UNSPEC }, +}; + +void nl_classifier_dump_nl_tuple(struct nl_classifier_tuple *tuple) +{ + char ip_str[64]; + + printf("protocol = %s\n", (tuple->proto == IPPROTO_UDP) ? "udp" : ((tuple->proto == IPPROTO_TCP) ? "tcp" : "unknown")); + printf("source ip = %s\n", inet_ntop(tuple->af, &tuple->src_ip, ip_str, sizeof(ip_str))); + printf("destination ip = %s\n", inet_ntop(tuple->af, &tuple->dst_ip, ip_str, sizeof(ip_str))); + printf("source port = %d\n", ntohs(tuple->sport)); + printf("destination port = %d\n", ntohs(tuple->dport)); +} + +int nl_classifier_msg_recv(struct nl_msg *msg, void *arg) +{ + struct nlmsghdr *nlh = nlmsg_hdr(msg); + struct genlmsghdr *gnlh = nlmsg_data(nlh); + struct nlattr *attrs[(NL_CLASSIFIER_ATTR_MAX+1)]; + + genlmsg_parse(nlh, NL_CLASSIFIER_GENL_HDRSIZE, attrs, NL_CLASSIFIER_ATTR_MAX, nl_classifier_genl_policy); + + switch (gnlh->cmd) { + case NL_CLASSIFIER_CMD_ACCEL_OK: + printf("Acceleration successful:\n"); + nl_classifier_dump_nl_tuple(nla_data(attrs[NL_CLASSIFIER_ATTR_TUPLE])); + return NL_OK; + case NL_CLASSIFIER_CMD_CONNECTION_CLOSED: + printf("Connection is closed:\n"); + nl_classifier_dump_nl_tuple(nla_data(attrs[NL_CLASSIFIER_ATTR_TUPLE])); + return NL_OK; + default: + printf("nl classifier received unknow message %d\n", gnlh->cmd); + } + + return NL_SKIP; +} + +void nl_classifier_offload(struct nl_classifier_instance *inst, + unsigned char proto, unsigned long *src_saddr, + unsigned long *dst_saddr, unsigned short sport, + unsigned short dport, int af) +{ + struct nl_msg *msg; + int ret; + struct nl_classifier_tuple classifier_msg; + + memset(&classifier_msg, 0, sizeof(classifier_msg)); + classifier_msg.af = af; + classifier_msg.proto = proto; + memcpy(&classifier_msg.src_ip, src_saddr, (af == AF_INET ? 4 : 16)); + memcpy(&classifier_msg.dst_ip, dst_saddr, (af == AF_INET ? 4 : 16)); + classifier_msg.sport = sport; + classifier_msg.dport = dport; + + msg = nlmsg_alloc(); + if (!msg) { + printf("Unable to allocate message\n"); + return; + } + + genlmsg_put(msg, NL_AUTO_PID, NL_AUTO_SEQ, inst->family_id, + NL_CLASSIFIER_GENL_HDRSIZE, NLM_F_REQUEST, + NL_CLASSIFIER_CMD_ACCEL, NL_CLASSIFIER_GENL_VERSION); + nla_put(msg, NL_CLASSIFIER_ATTR_TUPLE, sizeof(classifier_msg), &classifier_msg); + + ret = nl_send_auto(inst->sock, msg); + if (ret < 0) { + printf("send netlink message failed.\n"); + nlmsg_free(msg); + return; + } + + nlmsg_free(msg); + printf("nl classifier offload connection successful\n"); +} + +int nl_classifier_init(struct nl_classifier_instance *inst) +{ + int ret; + + inst->sock = nl_socket_alloc(); + if (!inst->sock) { + printf("Unable to allocation socket.\n"); + return -1; + } + genl_connect(inst->sock); + + inst->family_id = genl_ctrl_resolve(inst->sock, NL_CLASSIFIER_GENL_FAMILY); + if (inst->family_id < 0) { + printf("Unable to resolve family %s\n", NL_CLASSIFIER_GENL_FAMILY); + goto init_failed; + } + + inst->group_id = genl_ctrl_resolve_grp(inst->sock, NL_CLASSIFIER_GENL_FAMILY, NL_CLASSIFIER_GENL_GROUP); + if (inst->group_id < 0) { + printf("Unable to resolve mcast group %s\n", NL_CLASSIFIER_GENL_GROUP); + goto init_failed; + } + + ret = nl_socket_add_membership(inst->sock, inst->group_id); + if (ret < 0) { + printf("Unable to add membership\n"); + goto init_failed; + } + + nl_socket_disable_seq_check(inst->sock); + nl_socket_modify_cb(inst->sock, NL_CB_VALID, NL_CB_CUSTOM, nl_classifier_msg_recv, NULL); + + printf("nl classifier init successful\n"); + return 0; + +init_failed: + if (inst->sock) { + nl_close(inst->sock); + nl_socket_free(inst->sock); + inst->sock = NULL; + } + return -1; +} + +void nl_classifier_exit(struct nl_classifier_instance *inst) +{ + if (inst->sock) { + nl_close(inst->sock); + nl_socket_free(inst->sock); + inst->sock = NULL; + } + printf("nl classifier exit successful\n"); +} + +int nl_classifier_parse_arg(int argc, char *argv[], unsigned char *proto, unsigned long *src_saddr, + unsigned long *dst_saddr, unsigned short *sport, unsigned short *dport, int *af) +{ + int ret; + unsigned short port; + + if (argc < 7) { + printf("help: nl_classifier \n"); + return -1; + } + + if (0 == strncmp(argv[1], "v4", 2)) { + *af = AF_INET; + } else if (0 == strncmp(argv[1], "v6", 2)) { + *af = AF_INET6; + } else { + printf("Address family is not supported"); + return -1; + } + + if (0 == strncmp(argv[2], "udp", 3)) { + *proto = IPPROTO_UDP; + } else if (0 == strncmp(argv[2], "tcp", 3)) { + *proto = IPPROTO_TCP; + } else { + printf("Protocol is not supported"); + return -1; + } + + ret = inet_pton(*af, argv[3], src_saddr); + if (ret <= 0) { + printf("source ip has wrong format\n"); + return -1; + } + + ret = inet_pton(*af, argv[4], dst_saddr); + if (ret <= 0) { + printf("destination ip has wrong format\n"); + return -1; + } + + port = strtol(argv[5], NULL, 0); + *sport = htons(port); + port = strtol(argv[6], NULL, 0); + *dport = htons(port); + + printf("nl classifier parse arguments successful\n"); + return 0; +} + +int main(int argc, char *argv[]) +{ + struct nl_classifier_instance *inst = &nl_cls_inst; + unsigned char proto; + unsigned long src_addr[4]; + unsigned long dst_addr[4]; + unsigned short sport; + unsigned short dport; + int af; + int ret; + + ret = nl_classifier_parse_arg(argc, argv, &proto, src_addr, dst_addr, &sport, &dport, &af); + if (ret < 0) { + printf("Failed to parse arguments\n"); + return ret; + } + + ret = nl_classifier_init(inst); + if (ret < 0) { + printf("Unable to init generic netlink\n"); + return ret; + } + + nl_classifier_offload(inst, proto, src_addr, dst_addr, sport, dport, af); + + /* main loop to listen on message */ + while (!inst->stop) { + nl_recvmsgs_default(inst->sock); + } + + nl_classifier_exit(inst); + + return 0; +} diff --git a/fast-classifier/src/userspace_example.c b/fast-classifier/src/userspace_example.c new file mode 100644 index 000000000..4f4113d99 --- /dev/null +++ b/fast-classifier/src/userspace_example.c @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2013,2016 The Linux Foundation. All rights reserved. + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all copies. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include + +#include + +static struct nl_sock *sock; +static struct nl_sock *sock_event; +static int family; +static int grp_id; + +static struct nla_policy fast_classifier_genl_policy[FAST_CLASSIFIER_A_MAX + 1] = { + [FAST_CLASSIFIER_A_TUPLE] = { .type = NLA_UNSPEC }, +}; + +void dump_fc_tuple(struct fast_classifier_tuple *fc_msg) +{ + char src_str[INET_ADDRSTRLEN]; + char dst_str[INET_ADDRSTRLEN]; + + printf("TUPLE: %d, %s, %s, %d, %d" + " SMAC=%02x:%02x:%02x:%02x:%02x:%02x", + " DMAC=%02x:%02x:%02x:%02x:%02x:%02x\n", + fc_msg->proto, + inet_ntop(AF_INET, + &fc_msg->src_saddr.in.s_addr, + src_str, + INET_ADDRSTRLEN), + inet_ntop(AF_INET, + &fc_msg->dst_saddr.in.s_addr, + dst_str, + INET_ADDRSTRLEN), + fc_msg->sport, fc_msg->dport, + fc_msg->smac[0], fc_msg->smac[1], fc_msg->smac[2], + fc_msg->smac[3], fc_msg->smac[4], fc_msg->smac[5], + fc_msg->dmac[0], fc_msg->dmac[1], fc_msg->dmac[2], + fc_msg->dmac[3], fc_msg->dmac[4], fc_msg->dmac[5]); +} + +static int parse_cb(struct nl_msg *msg, void *arg) +{ + struct nlmsghdr *nlh = nlmsg_hdr(msg); + struct genlmsghdr *gnlh = nlmsg_data(nlh); + struct nlattr *attrs[FAST_CLASSIFIER_A_MAX]; + + genlmsg_parse(nlh, 0, attrs, FAST_CLASSIFIER_A_MAX, fast_classifier_genl_policy); + + switch (gnlh->cmd) { + case FAST_CLASSIFIER_C_OFFLOADED: + printf("Got a offloaded message\n"); + dump_fc_tuple(nla_data(attrs[FAST_CLASSIFIER_A_TUPLE])); + return NL_OK; + case FAST_CLASSIFIER_C_DONE: + printf("Got a done message\n"); + dump_fc_tuple(nla_data(attrs[FAST_CLASSIFIER_A_TUPLE])); + return NL_OK; + } + + return NL_SKIP; +} + +int fast_classifier_init(void) +{ + int err; + + sock = nl_socket_alloc(); + if (!sock) { + printf("Unable to allocation socket.\n"); + return -1; + } + genl_connect(sock); + + sock_event = nl_socket_alloc(); + if (!sock_event) { + nl_close(sock); + nl_socket_free(sock); + printf("Unable to allocation socket.\n"); + return -1; + } + genl_connect(sock_event); + + family = genl_ctrl_resolve(sock, FAST_CLASSIFIER_GENL_NAME); + if (family < 0) { + nl_close(sock_event); + nl_close(sock); + nl_socket_free(sock); + nl_socket_free(sock_event); + printf("Unable to resolve family\n"); + return -1; + } + + grp_id = genl_ctrl_resolve_grp(sock, FAST_CLASSIFIER_GENL_NAME, + FAST_CLASSIFIER_GENL_MCGRP); + if (grp_id < 0) { + printf("Unable to resolve mcast group\n"); + return -1; + } + + err = nl_socket_add_membership(sock_event, grp_id); + if (err < 0) { + printf("Unable to add membership\n"); + return -1; + } + + nl_socket_disable_seq_check(sock_event); + nl_socket_modify_cb(sock_event, NL_CB_VALID, NL_CB_CUSTOM, parse_cb, NULL); + + return 0; +} + +void fast_classifier_close(void) +{ + nl_close(sock_event); + nl_close(sock); + nl_socket_free(sock_event); + nl_socket_free(sock); +} + +void fast_classifier_ipv4_offload(unsigned char proto, unsigned long src_saddr, + unsigned long dst_saddr, unsigned short sport, + unsigned short dport) +{ + struct nl_msg *msg; + int ret; +#ifdef DEBUG + char src_str[INET_ADDRSTRLEN]; + char dst_str[INET_ADDRSTRLEN]; +#endif + struct fast_classifier_tuple fc_msg; + +#ifdef DEBUG + printf("DEBUG: would offload: %d, %s, %s, %d, %d\n", proto, + inet_ntop(AF_INET, &src_saddr, src_str, INET_ADDRSTRLEN), + inet_ntop(AF_INET, &dst_saddr, dst_str, INET_ADDRSTRLEN), + sport, dport); +#endif + + fc_msg.proto = proto; + fc_msg.src_saddr.in.s_addr = src_saddr; + fc_msg.dst_saddr.in.s_addr = dst_saddr; + fc_msg.sport = sport; + fc_msg.dport = dport; + fc_msg.smac[0] = 'a'; + fc_msg.smac[1] = 'b'; + fc_msg.smac[2] = 'c'; + fc_msg.smac[3] = 'd'; + fc_msg.smac[4] = 'e'; + fc_msg.smac[5] = 'f'; + fc_msg.dmac[0] = 'f'; + fc_msg.dmac[1] = 'e'; + fc_msg.dmac[2] = 'd'; + fc_msg.dmac[3] = 'c'; + fc_msg.dmac[4] = 'b'; + fc_msg.dmac[5] = 'a'; + + if (fast_classifier_init() < 0) { + printf("Unable to init generic netlink\n"); + exit(1); + } + + msg = nlmsg_alloc(); + if (!msg) { + nl_socket_free(sock); + printf("Unable to allocate message\n"); + return; + } + + genlmsg_put(msg, NL_AUTO_PID, NL_AUTO_SEQ, family, + FAST_CLASSIFIER_GENL_HDRSIZE, NLM_F_REQUEST, + FAST_CLASSIFIER_C_OFFLOAD, FAST_CLASSIFIER_GENL_VERSION); + nla_put(msg, 1, sizeof(fc_msg), &fc_msg); + + ret = nl_send_auto_complete(sock, msg); + + nlmsg_free(msg); + if (ret < 0) { + printf("nlmsg_free failed"); + nl_close(sock); + nl_socket_free(sock); + return; + } + + ret = nl_wait_for_ack(sock); + if (ret < 0) { + printf("wait for ack failed"); + nl_close(sock); + nl_socket_free(sock); + return; + } +} + +void fast_classifier_listen_for_messages(void) +{ + printf("waiting for netlink events\n"); + + while (1) { + nl_recvmsgs_default(sock_event); + } +} + +int main(int argc, char *argv[]) +{ + if (fast_classifier_init() < 0) { + printf("Unable to init generic netlink\n"); + exit(1); + } + + fast_classifier_ipv4_offload('a', 0, 0, 0, 0); + + /* this never returns */ + fast_classifier_listen_for_messages(); + + fast_classifier_close(); + + return 0; +} diff --git a/fullconenat/Makefile b/fullconenat/Makefile new file mode 100644 index 000000000..0fd188e3d --- /dev/null +++ b/fullconenat/Makefile @@ -0,0 +1,62 @@ +# +# Copyright (C) 2022 Chion Tang +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=fullconenat +PKG_RELEASE:=9 + +PKG_SOURCE_DATE:=2022-02-13 +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/llccd/netfilter-full-cone-nat.git +PKG_SOURCE_VERSION:=108a36cbdca17e68c9e6e7fd5e26156a88f738e8 +PKG_MIRROR_HASH:=00d749235271dee194dcd23c22e6e85207ea90192a62a110b2af0b4e4de1971f + +PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=Chion Tang + +include $(INCLUDE_DIR)/kernel.mk +include $(INCLUDE_DIR)/package.mk + +define Package/iptables-mod-fullconenat + SUBMENU:=Firewall + SECTION:=net + CATEGORY:=Network + TITLE:=FULLCONENAT iptables extension + DEPENDS:=+iptables +kmod-ipt-fullconenat @LINUX_5_4 +endef + +define Package/iptables-mod-fullconenat/install + $(INSTALL_DIR) $(1)/usr/lib/iptables + $(INSTALL_BIN) $(PKG_BUILD_DIR)/libipt_FULLCONENAT.so $(1)/usr/lib/iptables +endef + +define KernelPackage/ipt-fullconenat + SUBMENU:=Netfilter Extensions + TITLE:=FULLCONENAT netfilter module + DEPENDS:=+kmod-nf-ipt +kmod-nf-nat @LINUX_5_4 + KCONFIG:= \ + CONFIG_NF_CONNTRACK_EVENTS=y \ + CONFIG_NF_CONNTRACK_CHAIN_EVENTS=y + FILES:=$(PKG_BUILD_DIR)/xt_FULLCONENAT.ko +endef + +include $(INCLUDE_DIR)/kernel-defaults.mk + +define Build/Compile + +$(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + ARCH="$(LINUX_KARCH)" \ + M="$(PKG_BUILD_DIR)" \ + EXTRA_CFLAGS="$(BUILDFLAGS)" \ + modules + $(call Build/Compile/Default) +endef + +$(eval $(call KernelPackage,ipt-fullconenat)) +$(eval $(call BuildPackage,iptables-mod-fullconenat)) diff --git a/fullconenat/patches/001-fix-init-Repeat-definition.patch b/fullconenat/patches/001-fix-init-Repeat-definition.patch new file mode 100644 index 000000000..67c9332c8 --- /dev/null +++ b/fullconenat/patches/001-fix-init-Repeat-definition.patch @@ -0,0 +1,20 @@ +--- a/libip6t_FULLCONENAT.c ++++ b/libip6t_FULLCONENAT.c +@@ -214,6 +214,7 @@ static struct xtables_target fullconenat_tg_reg = { + .x6_options = FULLCONENAT_opts, + }; + ++#define _init __attribute__((constructor)) _INIT + void _init(void) + { + xtables_register_target(&fullconenat_tg_reg); +--- a/libipt_FULLCONENAT.c ++++ b/libipt_FULLCONENAT.c +@@ -235,6 +235,7 @@ static struct xtables_target fullconenat_tg_reg = { + .x6_options = FULLCONENAT_opts, + }; + ++#define _init __attribute__((constructor)) _INIT + void _init(void) + { + xtables_register_target(&fullconenat_tg_reg); diff --git a/fullconenat/patches/001-linux-6.1-support.patch b/fullconenat/patches/001-linux-6.1-support.patch new file mode 100644 index 000000000..41721fb5c --- /dev/null +++ b/fullconenat/patches/001-linux-6.1-support.patch @@ -0,0 +1,26 @@ +--- a/xt_FULLCONENAT.c ++++ b/xt_FULLCONENAT.c +@@ -325,7 +325,11 @@ + /* for now we do the same thing for both --random and --random-fully */ + + /* select a random starting point */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) ++ start = (uint16_t)(get_random_u32() % (u32)range_size); ++#else + start = (uint16_t)(prandom_u32() % (u32)range_size); ++#endif + } else { + + if ((original_port >= min && original_port <= min + range_size - 1) +@@ -995,7 +999,11 @@ + /* for now we do the same thing for both --random and --random-fully */ + + /* select a random starting point */ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) ++ start = (uint16_t)(get_random_u32() % (u32)range_size); ++#else + start = (uint16_t)(prandom_u32() % (u32)range_size); ++#endif + } else { + + if ((original_port >= min && original_port <= min + range_size - 1) diff --git a/fullconenat/src/Makefile b/fullconenat/src/Makefile new file mode 100644 index 000000000..b2f88db33 --- /dev/null +++ b/fullconenat/src/Makefile @@ -0,0 +1,6 @@ +libipt_FULLCONENAT.so: libipt_FULLCONENAT.o + $(CC) -shared -lxtables -o $@ $^; +libipt_FULLCONENAT.o: libipt_FULLCONENAT.c + $(CC) ${CFLAGS} -fPIC -D_INIT=$*_init -c -o $@ $<; + +obj-m += xt_FULLCONENAT.o diff --git a/glorytun-udp/Makefile b/glorytun-udp/Makefile index 3b988c137..acacab793 100644 --- a/glorytun-udp/Makefile +++ b/glorytun-udp/Makefile @@ -1,6 +1,6 @@ # # Copyright (C) 2015 OVH -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter project # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -10,10 +10,12 @@ include $(TOPDIR)/rules.mk PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/angt/glorytun.git -PKG_SOURCE_VERSION:=db718d59426957eef89357d5b58ae59cae2f8c5d +PKG_SOURCE_VERSION:=32267e86a6da05b285bb3bf2b136c105dc0af4bb PKG_NAME:=glorytun-udp -PKG_VERSION:=0.1.1-$(PKG_SOURCE_VERSION) -PKG_RELEASE:=22 +PKG_VERSION:=0.3.4 +PKG_RELEASE:=24 +PKG_LICENSE:=BSD-2-Clause +PKG_LICENSE_FILES:=LICENSE PKG_FIXUP:=autoreconf @@ -46,7 +48,7 @@ define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) init $(1)/etc/init.d/$(PKG_NAME) $(INSTALL_DIR) $(1)/etc/config - touch $(1)/etc/config/glorytun + $(INSTALL_DATA) glorytun-udp.config $(1)/etc/config/glorytun-udp endef $(eval $(call BuildPackage,$(PKG_NAME))) diff --git a/glorytun-udp/glorytun-udp.config b/glorytun-udp/glorytun-udp.config new file mode 100644 index 000000000..431da357a --- /dev/null +++ b/glorytun-udp/glorytun-udp.config @@ -0,0 +1,14 @@ +config glorytun-udp 'vpn' + option enable '0' + option host '127.0.0.1' + option port '65001' + option dev 'tun0' + option key '' + option chacha '1' + option localip '10.255.254.2' + option remoteip '10.255.254.1' + option mode 'to' + option kxtimeout '7d' + option timetolerance '10m' + option keepalive '25s' + option rateauto '0' \ No newline at end of file diff --git a/glorytun-udp/init b/glorytun-udp/init index 1a3273e33..c9452e734 100755 --- a/glorytun-udp/init +++ b/glorytun-udp/init @@ -1,7 +1,7 @@ #!/bin/sh /etc/rc.common # vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 : # Copyright (C) 2015 ovh.com -# Copyright (C) 2017 Ycarus (Yannick Chabanois) +# Copyright (C) 2017-2020 Ycarus (Yannick Chabanois) START=90 STOP=10 @@ -19,22 +19,19 @@ _err() { } validate_section() { - uci_validate_section glorytun glorytun "${1}" \ - 'enable:bool:0' \ - 'key:string' \ - 'host:host' \ - 'port:port' \ - 'proto:string' \ - 'bind:string:0.0.0.0' \ - 'bindport:port' \ - 'mtu:uinteger:1450' \ - 'mtuauto:bool:0' \ - 'chacha20:bool:0' \ + uci_validate_section glorytun-udp glorytun-udp "${1}" \ + 'enable:bool:0' \ + 'mode:string' \ + 'key:string' \ + 'host:host' \ + 'port:port' \ + 'mtuauto:bool:0' \ + 'chacha:bool:0' \ 'dev:string' } start_instance() { - local enable key host port listener proto bind bindport mtu mtuauto chacha20 dev + local enable key host port listener proto mtuauto chacha dev mode validate_section "${1}" || { _err "validation failed" @@ -42,35 +39,39 @@ start_instance() { } [ "${enable}" = "1" ] || return 1 - [ "${proto}" = "udp" ] || return 1 [ -n "${key}" ] || return 1 [ "${key}" != "secretkey" ] || return 1 [ -n "${port}" ] || return 1 [ -n "${dev}" ] || return 1 + [ -n "${mode}" ] || return 1 echo "${key}" > /tmp/${PROG_NAME}-${1}.key key="" if [ "$(uci -q get network.omrvpn)" != "" ]; then - uci -q set network.omrvpn.ifname=$dev + uci -q set network.omrvpn.device=$dev uci -q commit fi _log "starting ${PROG_NAME} ${1} instance $*" + host=$(resolveip $host) + + if [ "$mode" = "to" ]; then + bind="bind from addr :: port 5000 to addr $host port $port" + else + bind="bind from addr $host port $port to addr :: port 5000" + fi procd_open_instance procd_set_param command ${PROG} \ - ${bind:+bind "$bind"} \ - ${bindport:+ "$bindport"} \ - ${host:+to "$host"} \ - ${port:+ "$port"} \ + ${bind} \ ${dev:+dev "$dev"} \ keyfile /tmp/${PROG_NAME}-${1}.key \ persist - [ "${chacha20}" = "1" ] && procd_append_param command chacha + [ "${chacha}" = "1" ] && procd_append_param command chacha procd_set_param respawn 0 30 0 procd_set_param file /tmp/${PROG_NAME}-${1}.key @@ -80,6 +81,9 @@ start_instance() { procd_close_instance + #tc qdisc replace dev ${dev} root cake + + #ip link set $dev txqlen 100 #config_load network #config_foreach add_glorytun_path interface @@ -101,8 +105,8 @@ add_glorytun_path() { start_service() { local dev - config_load glorytun - config_foreach start_instance glorytun + config_load glorytun-udp + config_foreach start_instance glorytun-udp } reload_service() { diff --git a/glorytun-udp/patches/aegis-arm.patch b/glorytun-udp/patches/aegis-arm.patch new file mode 100644 index 000000000..82ce5840e --- /dev/null +++ b/glorytun-udp/patches/aegis-arm.patch @@ -0,0 +1,11 @@ +--- a/mud/aegis256/aegis256.c 2019-11-06 21:17:20.945036771 +0100 ++++ b/mud/aegis256/aegis256.c 2019-11-06 21:21:18.728943139 +0100 +@@ -43,7 +43,7 @@ + #ifndef __ARM_FEATURE_CRYPTO + #define __ARM_FEATURE_CRYPTO 1 + #endif +-#else ++#elifdef __ARM_FEATURE_CRYPTO + #pragma GCC target("+crypto") + #endif + diff --git a/glorytun/Makefile b/glorytun/Makefile index 6cd00b7ae..995fbfc44 100644 --- a/glorytun/Makefile +++ b/glorytun/Makefile @@ -9,11 +9,15 @@ include $(TOPDIR)/rules.mk PKG_NAME:=glorytun -PKG_VERSION:=0.0.35 -PKG_RELEASE:=6 +PKG_RELEASE:=8 +PKG_SOURCE_PROTO:=git +PKG_SOURCE_VERSION:=8aebb3efb3b108b1276aa74679e200e003f298de PKG_SOURCE:=glorytun-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=https://github.com/angt/glorytun/releases/download/v$(PKG_VERSION) -PKG_HASH:=49e4d8ea4ff2990300b37947b0bd0da3c8e0985bc6eddf29f4146306188fff64 +PKG_SOURCE_URL:=https://github.com/Ysurac/glorytun.git +PKG_VERSION:=0.0.35 +PKG_LICENSE:=BSD-2-Clause +PKG_LICENSE_FILES:=LICENSE +PKG_FIXUP:=autoreconf include $(INCLUDE_DIR)/package.mk diff --git a/glorytun/glorytun.config b/glorytun/glorytun.config index a0dfe1593..78f97090c 100644 --- a/glorytun/glorytun.config +++ b/glorytun/glorytun.config @@ -9,4 +9,7 @@ config glorytun 'vpn' option chacha20 '1' option mtuauto '1' option localip '10.255.255.2' - option remoteip '10.255.255.1' \ No newline at end of file + option remoteip '10.255.255.1' + option multiqueue '1' + option label 'Default VPN' + option timeout '10000' \ No newline at end of file diff --git a/glorytun/init b/glorytun/init index 192fb8a1a..d10019fcc 100755 --- a/glorytun/init +++ b/glorytun/init @@ -22,17 +22,18 @@ validate_section() { uci_validate_section glorytun glorytun "${1}" \ 'enable:bool:0' \ 'mptcp:bool:0' \ - 'listener:bool:0' \ + 'mode:string' \ 'key:string' \ 'host:host' \ 'port:port' \ 'dev:string' \ + 'timeout:uinteger:10000' \ 'chacha20:bool:0' \ 'proto:string' } start_instance() { - local enable key host port dev listener mptcp proto chacha20 + local enable key host port dev mptcp proto chacha20 mode multiqueue timeout validate_section "${1}" || { _err "validation failed" @@ -48,6 +49,7 @@ start_instance() { [ "${key}" != "secretkey" ] || return 1 [ -n "${port}" ] || return 1 [ -n "${dev}" ] || return 1 + [ -n "${host}" ] || return 1 echo "${key}" > /tmp/${PROG_NAME}-${1}.key [ -f "/tmp/${PROG_NAME}-${1}.key" ] || { @@ -57,9 +59,10 @@ start_instance() { key="" if [ "$(uci -q get network.omrvpn)" != "" ]; then - uci -q set network.omrvpn.ifname=${dev} + uci -q set network.omrvpn.device=${dev} uci -q commit network fi + _log "starting ${PROG_NAME} ${1} instance $*" procd_open_instance @@ -70,15 +73,16 @@ start_instance() { ${host:+host "$host"} \ ${dev:+dev "$dev"} - [ "${listener}" = "1" ] && procd_append_param command listener + [ "${mode}" = "listener" ] && procd_append_param command listener [ "${mptcp}" = "1" ] && procd_append_param command mptcp [ "${chacha20}" = "1" ] && procd_append_param command chacha20 + [ "${multiqueue}" = "1" ] && procd_append_param command multiqueue procd_append_param command \ retry count -1 const 5000000 \ - timeout 10000 \ - keepalive count 5 idle 10 interval 2 \ - buffer-size 32768 + timeout ${timeout} \ + keepalive count 5 idle 20 interval 2 \ + buffer-size 65536 procd_set_param respawn 0 30 0 procd_set_param file /tmp/${PROG_NAME}-${1}.key diff --git a/golang-protobuf/Makefile b/golang-protobuf/Makefile index 04cc930f4..58acdc042 100644 --- a/golang-protobuf/Makefile +++ b/golang-protobuf/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2019 Ycarus (Yannick Chabanois) +# Copyright (C) 2019-2023 Ycarus (Yannick Chabanois) # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -12,8 +12,8 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/golang/protobuf.git -PKG_SOURCE_VERSION:=347cf4a86c1cb8d262994d8ef5924d4576c5b331 -PKG_SOURCE_DATE:=20190109 +PKG_SOURCE_VERSION:=5d5e8c018a13017f9d5b8bf4fad64aaa42a87308 +PKG_SOURCE_DATE:=20210916 PKG_LICENSE:=BSD-3-Clause PKG_LICENSE_FILES:=LICENSE diff --git a/golang/golang-build.sh b/golang/golang-build.sh new file mode 100644 index 000000000..01df4aa42 --- /dev/null +++ b/golang/golang-build.sh @@ -0,0 +1,210 @@ +#!/bin/sh +# +# Copyright (C) 2020, 2022 Jeffery To +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +nl=" +" + +log() { + # shellcheck disable=SC2039 + local IFS=" " + printf '%s\n' "$*" +} + +log_error() { + # shellcheck disable=SC2039 + local IFS=" " + printf 'Error: %s\n' "$*" >&2 +} + +link_contents() { + # shellcheck disable=SC2039 + local src="$1" dest="$2" IFS="$nl" dirs dir base + + if [ -n "$(find "$src" -mindepth 1 -maxdepth 1 -name "*.go" -not -type d)" ]; then + log_error "$src is already a Go library" + return 1 + fi + + dirs="$(find "$src" -mindepth 1 -maxdepth 1 -type d)" + for dir in $dirs; do + base="${dir##*/}" + if [ -d "$dest/$base" ]; then + case "$dir" in + *$GO_BUILD_DEPENDS_SRC/$GO_PKG) + log "$GO_PKG is already installed. Please check for circular dependencies." + ;; + *) + link_contents "$src/$base" "$dest/$base" + ;; + esac + else + log "...${src#$GO_BUILD_DEPENDS_SRC}/$base" + ln -sf "$src/$base" "$dest/$base" + fi + done + + return 0 +} + +configure() { + # shellcheck disable=SC2039 + local files code testdata gomod pattern extra IFS file dest + + cd "$BUILD_DIR" || return 1 + + files="$(find ./ -path "*/.*" -prune -o -not -type d -print)" + + if [ "$GO_INSTALL_ALL" != 1 ]; then + code="$(printf '%s\n' "$files" | grep '\.\(c\|cc\|cpp\|go\|h\|hh\|hpp\|proto\|s\)$')" + testdata="$(printf '%s\n' "$files" | grep '/testdata/')" + gomod="$(printf '%s\n' "$files" | grep '/go\.\(mod\|sum\|work\)$')" + + for pattern in $GO_INSTALL_EXTRA; do + extra="$(printf '%s\n' "$extra"; printf '%s\n' "$files" | grep -e "$pattern")" + done + + files="$(printf '%s\n%s\n%s\n%s\n' "$code" "$testdata" "$gomod" "$extra" | grep -v '^[[:space:]]*$' | sort -u)" + fi + + IFS="$nl" + + log "Copying files from $BUILD_DIR into $GO_BUILD_DIR/src/$GO_PKG" + mkdir -p "$GO_BUILD_DIR/src" + for file in $files; do + log "${file#./}" + dest="$GO_BUILD_DIR/src/$GO_PKG/${file#./}" + mkdir -p "${dest%/*}" + cp -fpR "$file" "$dest" + done + log + + if [ "$GO_SOURCE_ONLY" != 1 ]; then + if [ -d "$GO_BUILD_DEPENDS_SRC" ]; then + log "Symlinking directories from $GO_BUILD_DEPENDS_SRC into $GO_BUILD_DIR/src" + link_contents "$GO_BUILD_DEPENDS_SRC" "$GO_BUILD_DIR/src" + else + log "$GO_BUILD_DEPENDS_SRC does not exist, skipping symlinks" + fi + else + log "Not building binaries, skipping symlinks" + fi + log + + return 0 +} + +build() { + # shellcheck disable=SC2039 + local modargs pattern targets retval + + cd "$GO_BUILD_DIR" || return 1 + + if [ -f "$BUILD_DIR/go.mod" ] ; then + mkdir -p "$GO_MOD_CACHE_DIR" + modargs="$GO_MOD_ARGS" + fi + + log "Finding targets" + # shellcheck disable=SC2086 + targets="$(go list $modargs $GO_BUILD_PKG)" + for pattern in $GO_EXCLUDES; do + targets="$(printf '%s\n' "$targets" | grep -v "$pattern")" + done + log + + if [ "$GO_GO_GENERATE" = 1 ]; then + log "Calling go generate" + # shellcheck disable=SC2086 + GOOS='' GOARCH='' GO386='' GOARM='' GOARM64='' GOMIPS='' GOMIPS64='' GORISCV64=''\ + go generate -v $targets + log + fi + + if [ "$GO_SOURCE_ONLY" = 1 ]; then + return 0 + fi + + log "Building targets" + mkdir -p "$GO_BUILD_DIR/bin" "$GO_BUILD_CACHE_DIR" + # shellcheck disable=SC2086 + go install $modargs "$@" $targets + retval="$?" + log + + if [ "$retval" -eq 0 ] && [ -z "$(find "$GO_BUILD_BIN_DIR" -maxdepth 0 -type d -not -empty 2>/dev/null)" ]; then + log_error "No binaries were built" + retval=1 + fi + + if [ "$retval" -ne 0 ]; then + cache_cleanup + fi + + return "$retval" +} + +install_bin() { + # shellcheck disable=SC2039 + local dest="$1" + install -d -m0755 "$dest/$GO_INSTALL_BIN_PATH" + install -m0755 "$GO_BUILD_BIN_DIR"/* "$dest/$GO_INSTALL_BIN_PATH/" +} + +install_src() { + # shellcheck disable=SC2039 + local dest="$1" dir="${GO_PKG%/*}" + install -d -m0755 "$dest/$GO_BUILD_DEPENDS_PATH/src/$dir" + cp -fpR "$GO_BUILD_DIR/src/$GO_PKG" "$dest/$GO_BUILD_DEPENDS_PATH/src/$dir/" +} + +cache_cleanup() { + if ! [ -d "$GO_MOD_CACHE_DIR" ]; then + return 0 + fi + + # in case go is called without -modcacherw + find "$GO_MOD_CACHE_DIR" -type d -not -perm -u+w -exec chmod u+w '{}' + + + if [ -n "$CONFIG_GOLANG_MOD_CACHE_WORLD_READABLE" ]; then + find "$GO_MOD_CACHE_DIR" -type d -not -perm -go+rx -exec chmod go+rx '{}' + + find "$GO_MOD_CACHE_DIR" -not -type d -not -perm -go+r -exec chmod go+r '{}' + + fi + + return 0 +} + + +if [ "$#" -lt 1 ]; then + log_error "Missing command" + exit 1 +fi + +command="$1" +shift 1 + +case "$command" in + configure) + configure + ;; + build) + build "$@" + ;; + install_bin) + install_bin "$@" + ;; + install_src) + install_src "$@" + ;; + cache_cleanup) + cache_cleanup + ;; + *) + log_error "Invalid command \"$command\"" + exit 1 + ;; +esac diff --git a/golang/golang-compiler.mk b/golang/golang-compiler.mk index 5e7fe689d..44defed7b 100644 --- a/golang/golang-compiler.mk +++ b/golang/golang-compiler.mk @@ -1,5 +1,5 @@ # -# Copyright (C) 2018 Jeffery To +# Copyright (C) 2018, 2020-2021, 2023 Jeffery To # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -19,23 +19,23 @@ define GoCompiler/Default/CheckHost endef # $(1) source go root -# $(2) destination prefix -# $(3) go version id -# $(4) additional environment variables (optional) +# $(2) additional environment variables (optional) define GoCompiler/Default/Make ( \ - cd $(1)/src ; \ - $(if $(2),GOROOT_FINAL=$(2)/lib/go-$(3)) \ - $(4) \ - $(BASH) make.bash --no-banner ; \ + cd "$(1)/src" ; \ + $(2) \ + $(BASH) make.bash \ + $(if $(findstring s,$(OPENWRT_VERBOSE)),-v) \ + --no-banner \ + ; \ ) endef # $(1) destination prefix # $(2) go version id define GoCompiler/Default/Install/make-dirs - $(INSTALL_DIR) $(1)/lib/go-$(2) - $(INSTALL_DIR) $(1)/share/go-$(2) + $(INSTALL_DIR) "$(1)/lib/go-$(2)" + $(INSTALL_DIR) "$(1)/share/go-$(2)" endef # $(1) source go root @@ -43,48 +43,52 @@ endef # $(3) go version id # $(4) file/directory name define GoCompiler/Default/Install/install-share-data - $(CP) $(1)/$(4) $(2)/share/go-$(3)/ - $(LN) ../../share/go-$(3)/$(4) $(2)/lib/go-$(3)/ + $(CP) "$(1)/$(4)" "$(2)/share/go-$(3)/" + $(LN) "../../share/go-$(3)/$(4)" "$(2)/lib/go-$(3)/" endef # $(1) source go root # $(2) destination prefix # $(3) go version id # $(4) GOOS_GOARCH +# $(5) install suffix (optional) define GoCompiler/Default/Install/Bin $(call GoCompiler/Default/Install/make-dirs,$(2),$(3)) $(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),api) - $(INSTALL_DATA) -p $(1)/VERSION $(2)/lib/go-$(3)/ + $(INSTALL_DATA) -p "$(1)/go.env" "$(2)/lib/go-$(3)/" + $(INSTALL_DATA) -p "$(1)/VERSION" "$(2)/lib/go-$(3)/" - for file in AUTHORS CONTRIBUTING.md CONTRIBUTORS LICENSE PATENTS README README.md; do \ - if [ -f $(1)/$$$$file ]; then \ - $(INSTALL_DATA) -p $(1)/$$$$file $(2)/share/go-$(3)/ ; \ + for file in CONTRIBUTING.md LICENSE PATENTS README.md SECURITY.md; do \ + if [ -f "$(1)/$$$$file" ]; then \ + $(INSTALL_DATA) -p "$(1)/$$$$file" "$(2)/share/go-$(3)/" ; \ fi ; \ done - $(INSTALL_DIR) $(2)/lib/go-$(3)/bin + $(INSTALL_DIR) "$(2)/lib/go-$(3)/bin" ifeq ($(4),$(GO_HOST_OS_ARCH)) - $(INSTALL_BIN) -p $(1)/bin/* $(2)/lib/go-$(3)/bin/ + $(INSTALL_BIN) -p "$(1)/bin"/* "$(2)/lib/go-$(3)/bin/" else - $(INSTALL_BIN) -p $(1)/bin/$(4)/* $(2)/lib/go-$(3)/bin/ + $(INSTALL_BIN) -p "$(1)/bin/$(4)"/* "$(2)/lib/go-$(3)/bin/" endif - $(INSTALL_DIR) $(2)/lib/go-$(3)/pkg - $(CP) $(1)/pkg/$(4) $(2)/lib/go-$(3)/pkg/ + if [ -d "$(1)/pkg/$(4)$(if $(5),_$(5))" ]; then \ + $(INSTALL_DIR) "$(2)/lib/go-$(3)/pkg" ; \ + $(CP) "$(1)/pkg/$(4)$(if $(5),_$(5))" "$(2)/lib/go-$(3)/pkg/" ; \ + fi - $(INSTALL_DIR) $(2)/lib/go-$(3)/pkg/tool/$(4) - $(INSTALL_BIN) -p $(1)/pkg/tool/$(4)/* $(2)/lib/go-$(3)/pkg/tool/$(4)/ + $(INSTALL_DIR) "$(2)/lib/go-$(3)/pkg/tool/$(4)" + $(INSTALL_BIN) -p "$(1)/pkg/tool/$(4)"/* "$(2)/lib/go-$(3)/pkg/tool/$(4)/" endef # $(1) destination prefix # $(2) go version id define GoCompiler/Default/Install/BinLinks - $(INSTALL_DIR) $(1)/bin - $(LN) ../lib/go-$(2)/bin/go $(1)/bin/go - $(LN) ../lib/go-$(2)/bin/gofmt $(1)/bin/gofmt + $(INSTALL_DIR) "$(1)/bin" + $(LN) "../lib/go-$(2)/bin/go" "$(1)/bin/go" + $(LN) "../lib/go-$(2)/bin/gofmt" "$(1)/bin/gofmt" endef # $(1) source go root @@ -94,8 +98,6 @@ define GoCompiler/Default/Install/Doc $(call GoCompiler/Default/Install/make-dirs,$(2),$(3)) $(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),doc) - $(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),favicon.ico) - $(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),robots.txt) endef # $(1) source go root @@ -110,29 +112,29 @@ define GoCompiler/Default/Install/Src $(call GoCompiler/Default/Install/install-share-data,$(1),$(2),$(3),test) $(FIND) \ - $(2)/share/go-$(3)/src/ \ - \! -type d -a \( -name '*.bat' -o -name '*.rc' \) \ + "$(2)/share/go-$(3)/src/" \ + \! -type d -a \( -name "*.bat" -o -name "*.rc" \) \ -delete - if [ -d $(1)/pkg/include ]; then \ - $(INSTALL_DIR) $(2)/lib/go-$(3)/pkg ; \ - $(INSTALL_DIR) $(2)/share/go-$(3)/pkg ; \ - $(CP) $(1)/pkg/include $(2)/share/go-$(3)/pkg/ ; \ - $(LN) ../../../share/go-$(3)/pkg/include $(2)/lib/go-$(3)/pkg/ ; \ + if [ -d "$(1)/pkg/include" ]; then \ + $(INSTALL_DIR) "$(2)/lib/go-$(3)/pkg" ; \ + $(INSTALL_DIR) "$(2)/share/go-$(3)/pkg" ; \ + $(CP) "$(1)/pkg/include" "$(2)/share/go-$(3)/pkg/" ; \ + $(LN) "../../../share/go-$(3)/pkg/include" "$(2)/lib/go-$(3)/pkg/" ; \ fi endef # $(1) destination prefix # $(2) go version id define GoCompiler/Default/Uninstall - rm -rf $(1)/lib/go-$(2) - rm -rf $(1)/share/go-$(2) + rm -rf "$(1)/lib/go-$(2)" + rm -rf "$(1)/share/go-$(2)" endef # $(1) destination prefix define GoCompiler/Default/Uninstall/BinLinks - rm -f $(1)/bin/go - rm -f $(1)/bin/gofmt + rm -f "$(1)/bin/go" + rm -f "$(1)/bin/gofmt" endef @@ -141,6 +143,7 @@ endef # $(3) destination prefix # $(4) go version id # $(5) GOOS_GOARCH +# $(6) install suffix (optional) define GoCompiler/AddProfile # $$(1) valid GOOS_GOARCH combinations @@ -150,12 +153,12 @@ define GoCompiler/AddProfile # $$(1) additional environment variables (optional) define GoCompiler/$(1)/Make - $$(call GoCompiler/Default/Make,$(2),$(3),$(4),$$(1)) + $$(call GoCompiler/Default/Make,$(2),$$(1)) endef # $$(1) override install prefix (optional) define GoCompiler/$(1)/Install/Bin - $$(call GoCompiler/Default/Install/Bin,$(2),$$(or $$(1),$(3)),$(4),$(5)) + $$(call GoCompiler/Default/Install/Bin,$(2),$$(or $$(1),$(3)),$(4),$(5),$(6)) endef # $$(1) override install prefix (optional) diff --git a/golang/golang-golang-x-crypto/Makefile b/golang/golang-golang-x-crypto/Makefile deleted file mode 100644 index e787e04c5..000000000 --- a/golang/golang-golang-x-crypto/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# -# Copyright (C) 2018 Jeffery To -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=golang-golang-x-crypto -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/golang/crypto.git -PKG_SOURCE_VERSION:=a49355c7e3f8fe157a85be2f77e6e269a0f89602 -PKG_SOURCE_DATE:=20180620 -PKG_MIRROR_HASH:=80b16b203736ac56883d0610edbc5981eb78f15b7b35d11b5ca639f7c3814214 - -PKG_LICENSE:=BSD-3-Clause -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Jeffery To - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 - -GO_PKG:=golang.org/x/crypto -GO_PKG_SOURCE_ONLY:=1 - -include $(INCLUDE_DIR)/package.mk -include ../golang-package.mk - -define Package/golang-golang-x-crypto-dev -$(call GoPackage/GoSubMenu) - TITLE:=Go supplementary cryptography libraries - URL:=https://godoc.org/golang.org/x/crypto - DEPENDS:=$(GO_ARCH_DEPENDS) \ - +golang-golang-x-net-dev \ - +golang-golang-x-sys-dev - PKGARCH:=all -endef - -define Package/golang-golang-x-crypto-dev/description -Supplementary Go cryptography libraries. -endef - -$(eval $(call GoSrcPackage,golang-golang-x-crypto-dev)) -$(eval $(call BuildPackage,golang-golang-x-crypto-dev)) diff --git a/golang/golang-golang-x-net/Makefile b/golang/golang-golang-x-net/Makefile deleted file mode 100644 index 979d9be7f..000000000 --- a/golang/golang-golang-x-net/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# -# Copyright (C) 2018 Jeffery To -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=golang-golang-x-net -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/golang/net.git -PKG_SOURCE_VERSION:=afe8f62b1d6bbd81f31868121a50b06d8188e1f9 -PKG_SOURCE_DATE:=20180620 -PKG_MIRROR_HASH:=9a8bb3bf21ea60121d7e87f1bd1af9effbdcd908f758be99457653172d13eb1e - -PKG_LICENSE:=BSD-3-Clause -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Jeffery To - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 - -GO_PKG:=golang.org/x/net -# exclude http2/h2i to break circular dependency with golang-golang-x-crypto-dev -# since there are no other binaries, can skip compilation -GO_PKG_SOURCE_ONLY:=1 - -include $(INCLUDE_DIR)/package.mk -include ../golang-package.mk - -define Package/golang-golang-x-net-dev -$(call GoPackage/GoSubMenu) - TITLE:=Go supplementary network libraries - URL:=https://godoc.org/golang.org/x/net - DEPENDS:=$(GO_ARCH_DEPENDS) +golang-golang-x-text-dev - PKGARCH:=all -endef - -define Package/golang-golang-x-net-dev/description -Supplementary Go networking libraries. -endef - -# http2/testdata/draft-ietf-httpbis-http2.xml is a non-free document -# http2/z_spec_test.go uses http2/testdata/draft-ietf-httpbis-http2.xml -define Package/golang-golang-x-net-dev/install - $(call GoPackage/Package/Install/Src,$(1)) - - rm -f $(1)$(GO_PKG_PATH)/src/$(GO_PKG)/http2/testdata/draft-ietf-httpbis-http2.xml - rmdir $(1)$(GO_PKG_PATH)/src/$(GO_PKG)/http2/testdata/ - - rm -f $(1)$(GO_PKG_PATH)/src/$(GO_PKG)/http2/z_spec_test.go -endef - -$(eval $(call GoSrcPackage,golang-golang-x-net-dev)) -$(eval $(call BuildPackage,golang-golang-x-net-dev)) diff --git a/golang/golang-golang-x-sys/Makefile b/golang/golang-golang-x-sys/Makefile deleted file mode 100644 index 5350f3cbe..000000000 --- a/golang/golang-golang-x-sys/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -# -# Copyright (C) 2018 Jeffery To -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=golang-golang-x-sys -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/golang/sys.git -PKG_SOURCE_VERSION:=63fc586f45fe72d95d5240a5d5eb95e6503907d3 -PKG_SOURCE_DATE:=20180621 -PKG_MIRROR_HASH:=3afe7936fb9fb291ef9b9cfa88f51576cdc19abbd34240232ce284958ac7dbaf - -PKG_LICENSE:=BSD-3-Clause -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Jeffery To - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 - -GO_PKG:=golang.org/x/sys -GO_PKG_SOURCE_ONLY:=1 - -include $(INCLUDE_DIR)/package.mk -include ../golang-package.mk - -define Package/golang-golang-x-sys-dev -$(call GoPackage/GoSubMenu) - TITLE:=Go packages for interaction with the OS - URL:=https://godoc.org/golang.org/x/sys - DEPENDS:=$(GO_ARCH_DEPENDS) - PKGARCH:=all -endef - -define Package/golang-golang-x-sys-dev/description -Supplementary Go packages for low-level interactions with the operating -system. -endef - -$(eval $(call GoSrcPackage,golang-golang-x-sys-dev)) -$(eval $(call BuildPackage,golang-golang-x-sys-dev)) diff --git a/golang/golang-golang-x-text/Makefile b/golang/golang-golang-x-text/Makefile deleted file mode 100644 index e3b1120b9..000000000 --- a/golang/golang-golang-x-text/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# -# Copyright (C) 2018 Jeffery To -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=golang-golang-x-text -PKG_RELEASE:=1 - -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/golang/text.git -PKG_SOURCE_VERSION:=5cec4b58c438bd98288aeb248bab2c1840713d21 -PKG_SOURCE_DATE:=20180520 -PKG_MIRROR_HASH:=6c541a59f32f57afa54a2216045ddf16a077f8fe2e823fbbe77723eca04ddddb - -PKG_LICENSE:=BSD-3-Clause -PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Jeffery To - -PKG_BUILD_DEPENDS:=golang/host -PKG_BUILD_PARALLEL:=1 - -GO_PKG:=golang.org/x/text -# exclude gotext (and message/pipeline) to avoid dependency on golang.org/x/tools -# since there are no other binaries, can skip compilation -GO_PKG_SOURCE_ONLY:=1 - -include $(INCLUDE_DIR)/package.mk -include ../golang-package.mk - -define Package/golang-golang-x-text-dev -$(call GoPackage/GoSubMenu) - TITLE:=Go text processing support - URL:=https://godoc.org/golang.org/x/text - DEPENDS:=$(GO_ARCH_DEPENDS) - PKGARCH:=all -endef - -define Package/golang-golang-x-text-dev/description -Supplementary Go libraries for text processing, many involving Unicode. -endef - -$(eval $(call GoSrcPackage,golang-golang-x-text-dev)) -$(eval $(call BuildPackage,golang-golang-x-text-dev)) diff --git a/golang/golang-host-build.mk b/golang/golang-host-build.mk new file mode 100644 index 000000000..7c7551fd1 --- /dev/null +++ b/golang/golang-host-build.mk @@ -0,0 +1,220 @@ +# +# Copyright (C) 2020, 2022 Jeffery To +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +ifeq ($(origin GO_INCLUDE_DIR),undefined) + GO_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST))) +endif + +include $(GO_INCLUDE_DIR)/golang-values.mk + + +# these variables have the same meanings as in golang-package.mk +GO_HOST_INSTALL_EXTRA?=$(GO_PKG_INSTALL_EXTRA) +GO_HOST_INSTALL_ALL?=$(GO_PKG_INSTALL_ALL) +GO_HOST_SOURCE_ONLY?=$(GO_PKG_SOURCE_ONLY) +GO_HOST_BUILD_PKG?=$(GO_PKG_BUILD_PKG) +GO_HOST_EXCLUDES?=$(GO_PKG_EXCLUDES) +GO_HOST_GO_GENERATE?=$(GO_PKG_GO_GENERATE) +GO_HOST_GCFLAGS?=$(GO_PKG_GCFLAGS) +GO_HOST_LDFLAGS?=$(GO_PKG_LDFLAGS) +GO_HOST_LDFLAGS_X?=$(GO_PKG_LDFLAGS_X) +GO_HOST_TAGS?=$(GO_PKG_TAGS) +GO_HOST_INSTALL_BIN_PATH?=/bin + + +# need to repeat this here in case golang-package.mk is not included +GO_PKG_BUILD_PKG?=$(strip $(GO_PKG))/... + +GO_HOST_WORK_DIR_NAME:=.go_work +GO_HOST_BUILD_DIR=$(HOST_BUILD_DIR)/$(GO_HOST_WORK_DIR_NAME)/build +GO_HOST_BUILD_BIN_DIR=$(GO_HOST_BUILD_DIR)/bin + +GO_HOST_BUILD_DEPENDS_PATH:=/share/gocode +GO_HOST_BUILD_DEPENDS_SRC=$(STAGING_DIR_HOSTPKG)$(GO_HOST_BUILD_DEPENDS_PATH)/src + +GO_HOST_DIR_NAME:=$(lastword $(subst /,$(space),$(CURDIR))) +GO_HOST_STAGING_DIR:=$(TMP_DIR)/host-stage-$(GO_HOST_DIR_NAME) +GO_HOST_STAGING_FILES_LIST_DIR:=$(HOST_BUILD_PREFIX)/stamp +GO_HOST_BIN_STAGING_FILES_LIST:=$(GO_HOST_STAGING_FILES_LIST_DIR)/$(GO_HOST_DIR_NAME)-bin.list +GO_HOST_SRC_STAGING_FILES_LIST:=$(GO_HOST_STAGING_FILES_LIST_DIR)/$(GO_HOST_DIR_NAME)-src.list + +ifeq ($(GO_HOST_PIE_SUPPORTED),1) + GO_HOST_ENABLE_PIE:=1 +endif + +GO_HOST_BUILD_CONFIG_VARS= \ + GO_PKG="$(strip $(GO_PKG))" \ + GO_INSTALL_EXTRA="$(strip $(GO_HOST_INSTALL_EXTRA))" \ + GO_INSTALL_ALL="$(strip $(GO_HOST_INSTALL_ALL))" \ + GO_SOURCE_ONLY="$(strip $(GO_HOST_SOURCE_ONLY))" \ + GO_BUILD_PKG="$(strip $(GO_HOST_BUILD_PKG))" \ + GO_EXCLUDES="$(strip $(GO_HOST_EXCLUDES))" \ + GO_GO_GENERATE="$(strip $(GO_HOST_GO_GENERATE))" \ + GO_INSTALL_BIN_PATH="$(strip $(GO_HOST_INSTALL_BIN_PATH))" \ + BUILD_DIR="$(HOST_BUILD_DIR)" \ + GO_BUILD_DIR="$(GO_HOST_BUILD_DIR)" \ + GO_BUILD_BIN_DIR="$(GO_HOST_BUILD_BIN_DIR)" \ + GO_BUILD_DEPENDS_PATH="$(GO_HOST_BUILD_DEPENDS_PATH)" \ + GO_BUILD_DEPENDS_SRC="$(GO_HOST_BUILD_DEPENDS_SRC)" + +GO_HOST_MORE_CFLAGS?= \ + -Wformat -Werror=format-security \ + -fstack-protector-strong \ + -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 \ + -Wl,-z,now -Wl,-z,relro \ + $(if $(GO_HOST_ENABLE_PIE),$(FPIC)) + +GO_HOST_MORE_LDFLAGS?= \ + -znow -zrelro \ + $(if $(GO_HOST_ENABLE_PIE),$(FPIC) -specs=$(INCLUDE_DIR)/hardened-ld-pie.specs) + +GO_HOST_TARGET_VARS= \ + CGO_ENABLED=1 \ + CC=gcc \ + CXX=g++ \ + PKG_CONFIG=pkg-config \ + CGO_CFLAGS="$(HOST_CFLAGS) $(GO_HOST_MORE_CFLAGS)" \ + CGO_CPPFLAGS="$(HOST_CPPFLAGS) $(GO_HOST_MORE_CPPFLAGS)" \ + CGO_CXXFLAGS="$(HOST_CFLAGS) $(GO_HOST_MORE_CFLAGS)" \ + CGO_LDFLAGS="$(HOST_LDFLAGS) $(GO_HOST_MORE_LDFLAGS)" \ + GO_GCC_HELPER_CC="$(HOSTCC)" \ + GO_GCC_HELPER_CXX="$(HOSTCXX)" \ + GO_GCC_HELPER_PATH="$$$$PATH" \ + PATH="$(STAGING_DIR_HOSTPKG)/lib/go-cross/openwrt:$$$$PATH" + +GO_HOST_BUILD_VARS= \ + GOPATH="$(GO_HOST_BUILD_DIR)" \ + GOCACHE="$(GO_BUILD_CACHE_DIR)" \ + GOMODCACHE="$(GO_MOD_CACHE_DIR)" \ + GOENV=off + +GO_HOST_VARS= \ + $(GO_HOST_TARGET_VARS) \ + $(GO_HOST_BUILD_VARS) + +GO_HOST_DEFAULT_LDFLAGS= \ + -linkmode external \ + -extldflags '$(patsubst -z%,-Wl$(comma)-z$(comma)%,$(HOST_LDFLAGS) $(GO_HOST_MORE_LDFLAGS))' + +GO_HOST_CUSTOM_LDFLAGS= \ + $(GO_HOST_LDFLAGS) \ + $(patsubst %,-X %,$(GO_HOST_LDFLAGS_X)) + +GO_HOST_INSTALL_ARGS= \ + -v \ + -ldflags "all=$(GO_HOST_DEFAULT_LDFLAGS)" \ + $(if $(GO_HOST_ENABLE_PIE),-buildmode pie) \ + $(if $(strip $(GO_HOST_GCFLAGS)),-gcflags "$(GO_HOST_GCFLAGS)") \ + $(if $(strip $(GO_HOST_CUSTOM_LDFLAGS)),-ldflags "$(GO_HOST_CUSTOM_LDFLAGS) $(GO_HOST_DEFAULT_LDFLAGS)") \ + $(if $(strip $(GO_HOST_TAGS)),-tags "$(GO_HOST_TAGS)") + +define GoHost/Host/Configure + $(GO_GENERAL_BUILD_CONFIG_VARS) \ + $(GO_HOST_BUILD_CONFIG_VARS) \ + $(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh configure +endef + +# $(1) additional arguments for go command line (optional) +define GoHost/Host/Compile + $(GO_GENERAL_BUILD_CONFIG_VARS) \ + $(GO_HOST_BUILD_CONFIG_VARS) \ + $(GO_HOST_VARS) \ + $(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh build $(GO_HOST_INSTALL_ARGS) $(1) +endef + +define GoHost/Host/Install/Bin + rm -rf "$(GO_HOST_STAGING_DIR)" + mkdir -p "$(GO_HOST_STAGING_DIR)" "$(GO_HOST_STAGING_FILES_LIST_DIR)" + + $(GO_GENERAL_BUILD_CONFIG_VARS) \ + $(GO_HOST_BUILD_CONFIG_VARS) \ + $(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh install_bin "$(GO_HOST_STAGING_DIR)" + + if [ -f "$(GO_HOST_BIN_STAGING_FILES_LIST)" ]; then \ + "$(SCRIPT_DIR)/clean-package.sh" \ + "$(GO_HOST_BIN_STAGING_FILES_LIST)" \ + "$(1)" ; \ + fi + + cd "$(GO_HOST_STAGING_DIR)" && find ./ > "$(GO_HOST_STAGING_DIR).files" + + $(call locked, \ + mv "$(GO_HOST_STAGING_DIR).files" "$(GO_HOST_BIN_STAGING_FILES_LIST)" && \ + $(CP) "$(GO_HOST_STAGING_DIR)"/* "$(1)/", \ + host-staging-dir \ + ) + + rm -rf "$(GO_HOST_STAGING_DIR)" +endef + +define GoHost/Host/Install/Src + rm -rf "$(GO_HOST_STAGING_DIR)" + mkdir -p "$(GO_HOST_STAGING_DIR)" "$(GO_HOST_STAGING_FILES_LIST_DIR)" + + $(GO_GENERAL_BUILD_CONFIG_VARS) \ + $(GO_HOST_BUILD_CONFIG_VARS) \ + $(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh install_src "$(GO_HOST_STAGING_DIR)" + + if [ -f "$(GO_HOST_SRC_STAGING_FILES_LIST)" ]; then \ + "$(SCRIPT_DIR)/clean-package.sh" \ + "$(GO_HOST_SRC_STAGING_FILES_LIST)" \ + "$(1)" ; \ + fi + + cd "$(GO_HOST_STAGING_DIR)" && find ./ > "$(GO_HOST_STAGING_DIR).files" + + $(call locked, \ + mv "$(GO_HOST_STAGING_DIR).files" "$(GO_HOST_SRC_STAGING_FILES_LIST)" && \ + $(CP) "$(GO_HOST_STAGING_DIR)"/* "$(1)/", \ + host-staging-dir \ + ) + + rm -rf "$(GO_HOST_STAGING_DIR)" +endef + +define GoHost/Host/Install + $(if $(filter $(GO_HOST_SOURCE_ONLY),1),, \ + $(call GoHost/Host/Install/Bin,$(1)) \ + ) + $(call GoHost/Host/Install/Src,$(1)) +endef + +define GoHost/Host/Uninstall + if [ -f "$(GO_HOST_BIN_STAGING_FILES_LIST)" ]; then \ + "$(SCRIPT_DIR)/clean-package.sh" \ + "$(GO_HOST_BIN_STAGING_FILES_LIST)" \ + "$(HOST_BUILD_PREFIX)" ; \ + rm -f "$(GO_HOST_BIN_STAGING_FILES_LIST)" ; \ + fi + + if [ -f "$(GO_HOST_SRC_STAGING_FILES_LIST)" ]; then \ + "$(SCRIPT_DIR)/clean-package.sh" \ + "$(GO_HOST_SRC_STAGING_FILES_LIST)" \ + "$(HOST_BUILD_PREFIX)" ; \ + rm -f "$(GO_HOST_SRC_STAGING_FILES_LIST)" ; \ + fi +endef + + +ifneq ($(strip $(GO_PKG)),) + Host/Configure=$(call GoHost/Host/Configure) + Host/Compile=$(call GoHost/Host/Compile) + Hooks/HostCompile/Post+=Go/CacheCleanup + Host/Uninstall=$(call GoHost/Host/Uninstall,$(1)) +endif + +define GoHostBuild + Host/Install=$$(call GoHost/Host/Install,$$(1)) +endef + +define GoBinHostBuild + Host/Install=$$(call GoHost/Host/Install/Bin,$$(1)) +endef + +define GoSrcHostBuild + Host/Install=$$(call GoHost/Host/Install/Src,$$(1)) +endef diff --git a/golang/golang-package.mk b/golang/golang-package.mk index 1df4c3fec..cc0050536 100644 --- a/golang/golang-package.mk +++ b/golang/golang-package.mk @@ -1,5 +1,5 @@ # -# Copyright (C) 2018 Jeffery To +# Copyright (C) 2018-2022 Jeffery To # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -28,10 +28,12 @@ include $(GO_INCLUDE_DIR)/golang-values.mk # files are installed: # # * Files with one of these extensions: -# .go, .c, .cc, .h, .hh, .proto, .s +# .go, .c, .cc, .cpp, .h, .hh, .hpp, .proto, .s # # * Files in any 'testdata' directory # +# * go.mod, go.sum and go.work, in any directory +# # e.g. GO_PKG_INSTALL_EXTRA:=example.toml marshal_test.toml # # @@ -54,7 +56,7 @@ include $(GO_INCLUDE_DIR)/golang-values.mk # GO_PKG_BUILD_PKG - list of build targets, default GO_PKG/... # # Build targets for compiling this Go package, i.e. arguments passed -# to 'go install' +# to 'go install'. # # e.g. GO_PKG_BUILD_PKG:=github.com/debian/ratt/cmd/... # @@ -74,28 +76,92 @@ include $(GO_INCLUDE_DIR)/golang-values.mk # not necessary. # # e.g. GO_PKG_GO_GENERATE:=1 +# +# +# GO_PKG_GCFLAGS - list of options, default empty +# +# Additional go tool compile options to use when building targets. +# +# e.g. GO_PKG_GCFLAGS:=-N -l +# +# +# GO_PKG_LDFLAGS - list of options, default empty +# +# Additional go tool link options to use when building targets. +# +# Note that the OpenWrt build system has an option to strip binaries +# (enabled by default), so -s (Omit the symbol table and debug +# information) and -w (Omit the DWARF symbol table) flags are not +# necessary. +# +# e.g. GO_PKG_LDFLAGS:=-r dir1:dir2 -u +# +# +# GO_PKG_LDFLAGS_X - list of string variable definitions, default empty +# +# Each definition will be passed as the parameter to the -X go tool +# link option, i.e. -ldflags "-X importpath.name=value". +# +# e.g. GO_PKG_LDFLAGS_X:=main.Version=$(PKG_VERSION) main.BuildStamp=$(SOURCE_DATE_EPOCH) +# +# +# GO_PKG_TAGS - list of build tags, default empty +# +# Build tags to consider satisfied during the build, passed as the +# parameter to the -tags option for 'go install'. +# +# e.g. GO_PKG_TAGS:=release,noupgrade +# +# +# GO_PKG_INSTALL_BIN_PATH - target directory path, default /usr/bin +# +# Directory path under "dest_dir" where binaries will be installed by +# '$(call GoPackage/Package/Install/Bin,dest_dir)'. +# +# e.g. GO_PKG_INSTALL_BIN_PATH:=/sbin # Credit for this package build process (GoPackage/Build/Configure and # GoPackage/Build/Compile) belong to Debian's dh-golang completely. -# https://anonscm.debian.org/cgit/pkg-go/packages/dh-golang.git +# https://salsa.debian.org/go-team/packages/dh-golang -# for building packages, not user code -GO_PKG_PATH:=/usr/share/gocode - -GO_PKG_BUILD_PKG?=$(GO_PKG)/... +GO_PKG_BUILD_PKG?=$(strip $(GO_PKG))/... +GO_PKG_INSTALL_BIN_PATH?=/usr/bin GO_PKG_WORK_DIR_NAME:=.go_work -GO_PKG_WORK_DIR:=$(PKG_BUILD_DIR)/$(GO_PKG_WORK_DIR_NAME) +GO_PKG_BUILD_DIR=$(PKG_BUILD_DIR)/$(GO_PKG_WORK_DIR_NAME)/build +GO_PKG_BUILD_BIN_DIR=$(GO_PKG_BUILD_DIR)/bin$(if $(GO_HOST_TARGET_DIFFERENT),/$(GO_OS_ARCH)) -GO_PKG_BUILD_DIR:=$(GO_PKG_WORK_DIR)/build -GO_PKG_CACHE_DIR:=$(GO_PKG_WORK_DIR)/cache -GO_PKG_TMP_DIR:=$(GO_PKG_WORK_DIR)/tmp +GO_PKG_BUILD_DEPENDS_PATH:=/usr/share/gocode +GO_PKG_BUILD_DEPENDS_SRC=$(STAGING_DIR)$(GO_PKG_BUILD_DEPENDS_PATH)/src -GO_PKG_BUILD_BIN_DIR:=$(GO_PKG_BUILD_DIR)/bin$(if \ - $(GO_HOST_TARGET_DIFFERENT),/$(GO_OS)_$(GO_ARCH)) +ifdef CONFIG_PKG_ASLR_PIE_ALL + ifeq ($(strip $(PKG_ASLR_PIE)),1) + ifeq ($(GO_TARGET_PIE_SUPPORTED),1) + GO_PKG_ENABLE_PIE:=1 + else + $(warning PIE buildmode is not supported for $(GO_OS)/$(GO_ARCH)) + endif + endif +endif -GO_PKG_BUILD_DEPENDS_SRC:=$(STAGING_DIR)$(GO_PKG_PATH)/src +ifdef CONFIG_PKG_ASLR_PIE_REGULAR + ifeq ($(strip $(PKG_ASLR_PIE_REGULAR)),1) + ifeq ($(GO_TARGET_PIE_SUPPORTED),1) + GO_PKG_ENABLE_PIE:=1 + else + $(warning PIE buildmode is not supported for $(GO_OS)/$(GO_ARCH)) + endif + endif +endif + +ifdef CONFIG_GOLANG_SPECTRE + ifeq ($(GO_TARGET_SPECTRE_SUPPORTED),1) + GO_PKG_ENABLE_SPECTRE:=1 + else + $(warning Spectre mitigations are not supported for $(GO_ARCH)) + endif +endif # sstrip causes corrupted section header size ifneq ($(CONFIG_USE_SSTRIP),) @@ -105,16 +171,6 @@ ifneq ($(CONFIG_USE_SSTRIP),) GO_PKG_STRIP_ARGS:=--strip-all endif STRIP:=$(TARGET_CROSS)strip $(GO_PKG_STRIP_ARGS) - RSTRIP= \ - export CROSS="$(TARGET_CROSS)" \ - $(if $(PKG_BUILD_ID),KEEP_BUILD_ID=1) \ - $(if $(CONFIG_KERNEL_KALLSYMS),NO_RENAME=1) \ - $(if $(CONFIG_KERNEL_PROFILING),KEEP_SYMBOLS=1); \ - NM="$(TARGET_CROSS)nm" \ - STRIP="$(STRIP)" \ - STRIP_KMOD="$(SCRIPT_DIR)/strip-kmod.sh" \ - PATCHELF="$(STAGING_DIR_HOST)/bin/patchelf" \ - $(SCRIPT_DIR)/rstrip.sh endif define GoPackage/GoSubMenu @@ -123,153 +179,91 @@ define GoPackage/GoSubMenu CATEGORY:=Languages endef -define GoPackage/Environment - GOOS=$(GO_OS) \ - GOARCH=$(GO_ARCH) \ - GO386=$(GO_386) \ - GOARM=$(GO_ARM) \ - GOMIPS=$(GO_MIPS) \ - GOMIPS64=$(GO_MIPS64) \ +GO_PKG_BUILD_CONFIG_VARS= \ + GO_PKG="$(strip $(GO_PKG))" \ + GO_INSTALL_EXTRA="$(strip $(GO_PKG_INSTALL_EXTRA))" \ + GO_INSTALL_ALL="$(strip $(GO_PKG_INSTALL_ALL))" \ + GO_SOURCE_ONLY="$(strip $(GO_PKG_SOURCE_ONLY))" \ + GO_BUILD_PKG="$(strip $(GO_PKG_BUILD_PKG))" \ + GO_EXCLUDES="$(strip $(GO_PKG_EXCLUDES))" \ + GO_GO_GENERATE="$(strip $(GO_PKG_GO_GENERATE))" \ + GO_INSTALL_BIN_PATH="$(strip $(GO_PKG_INSTALL_BIN_PATH))" \ + BUILD_DIR="$(PKG_BUILD_DIR)" \ + GO_BUILD_DIR="$(GO_PKG_BUILD_DIR)" \ + GO_BUILD_BIN_DIR="$(GO_PKG_BUILD_BIN_DIR)" \ + GO_BUILD_DEPENDS_PATH="$(GO_PKG_BUILD_DEPENDS_PATH)" \ + GO_BUILD_DEPENDS_SRC="$(GO_PKG_BUILD_DEPENDS_SRC)" + +GO_PKG_TARGET_VARS= \ + GOOS="$(GO_OS)" \ + GOARCH="$(GO_ARCH)" \ + GO386="$(GO_386)" \ + GOAMD64="$(GO_AMD64)" \ + GOARM="$(GO_ARM)" \ + GOMIPS="$(GO_MIPS)" \ + GOMIPS64="$(GO_MIPS64)" \ + GOPPC64="$(GO_PPC64)" \ CGO_ENABLED=1 \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ CGO_CFLAGS="$(filter-out $(GO_CFLAGS_TO_REMOVE),$(TARGET_CFLAGS))" \ CGO_CPPFLAGS="$(TARGET_CPPFLAGS)" \ - CGO_CXXFLAGS="$(filter-out $(GO_CFLAGS_TO_REMOVE),$(TARGET_CXXFLAGS))" -endef + CGO_CXXFLAGS="$(filter-out $(GO_CFLAGS_TO_REMOVE),$(TARGET_CXXFLAGS))" \ + CGO_LDFLAGS="$(TARGET_LDFLAGS)" -# false if directory does not exist -GoPackage/is_dir_not_empty=$$$$($(FIND) $(1) -maxdepth 0 -type d \! -empty 2>/dev/null) +GO_PKG_BUILD_VARS= \ + GOPATH="$(GO_PKG_BUILD_DIR)" \ + GOCACHE="$(GO_BUILD_CACHE_DIR)" \ + GOMODCACHE="$(GO_MOD_CACHE_DIR)" \ + GOENV=off \ + GOTOOLCHAIN=local -GoPackage/has_binaries=$(call GoPackage/is_dir_not_empty,$(GO_PKG_BUILD_BIN_DIR)) +GO_PKG_VARS= \ + $(GO_PKG_TARGET_VARS) \ + $(GO_PKG_BUILD_VARS) + +GO_PKG_DEFAULT_GCFLAGS= \ + $(if $(GO_PKG_ENABLE_SPECTRE),-spectre all) + +GO_PKG_DEFAULT_ASMFLAGS= \ + $(if $(GO_PKG_ENABLE_SPECTRE),-spectre all) + +GO_PKG_DEFAULT_LDFLAGS= \ + -buildid '$(SOURCE_DATE_EPOCH)' \ + -linkmode external \ + -extldflags '$(patsubst -z%,-Wl$(comma)-z$(comma)%,$(TARGET_LDFLAGS))' + +GO_PKG_CUSTOM_LDFLAGS= \ + $(GO_PKG_LDFLAGS) \ + $(patsubst %,-X %,$(GO_PKG_LDFLAGS_X)) + +GO_PKG_INSTALL_ARGS= \ + -v \ + -buildvcs=false \ + -trimpath \ + -ldflags "all=$(GO_PKG_DEFAULT_LDFLAGS)" \ + $(if $(strip $(GO_PKG_DEFAULT_GCFLAGS)),-gcflags "all=$(GO_PKG_DEFAULT_GCFLAGS)") \ + $(if $(strip $(GO_PKG_DEFAULT_ASMFLAGS)),-asmflags "all=$(GO_PKG_DEFAULT_ASMFLAGS)") \ + $(if $(GO_PKG_ENABLE_PIE),-buildmode pie) \ + $(if $(filter $(GO_ARCH),arm),-installsuffix "v$(GO_ARM)") \ + $(if $(filter $(GO_ARCH),mips mipsle),-installsuffix "$(GO_MIPS)") \ + $(if $(filter $(GO_ARCH),mips64 mips64le),-installsuffix "$(GO_MIPS64)") \ + $(if $(strip $(GO_PKG_GCFLAGS)),-gcflags "$(GO_PKG_GCFLAGS) $(GO_PKG_DEFAULT_GCFLAGS)") \ + $(if $(strip $(GO_PKG_CUSTOM_LDFLAGS)),-ldflags "$(GO_PKG_CUSTOM_LDFLAGS) $(GO_PKG_DEFAULT_LDFLAGS)") \ + $(if $(strip $(GO_PKG_TAGS)),-tags "$(GO_PKG_TAGS)") define GoPackage/Build/Configure - ( \ - cd $(PKG_BUILD_DIR) ; \ - mkdir -p $(GO_PKG_BUILD_DIR)/bin $(GO_PKG_BUILD_DIR)/src \ - $(GO_PKG_CACHE_DIR) $(GO_PKG_TMP_DIR) ; \ - \ - files=$$$$($(FIND) ./ \ - -type d -a \( -path './.git' -o -path './$(GO_PKG_WORK_DIR_NAME)' \) -prune -o \ - \! -type d -print | \ - sed 's|^\./||') ; \ - \ - if [ "$(GO_PKG_INSTALL_ALL)" != 1 ]; then \ - code=$$$$(echo "$$$$files" | grep '\.\(c\|cc\|go\|h\|hh\|proto\|s\)$$$$') ; \ - testdata=$$$$(echo "$$$$files" | grep '\(^\|/\)testdata/') ; \ - \ - for pattern in $(GO_PKG_INSTALL_EXTRA); do \ - extra=$$$$(echo "$$$$extra"; echo "$$$$files" | grep "$$$$pattern") ; \ - done ; \ - \ - files=$$$$(echo "$$$$code"; echo "$$$$testdata"; echo "$$$$extra") ; \ - files=$$$$(echo "$$$$files" | grep -v '^[[:space:]]*$$$$' | sort -u) ; \ - fi ; \ - \ - echo "Copying files from $(PKG_BUILD_DIR) into $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)" ; \ - for file in $$$$files; do \ - echo $$$$file ; \ - dest=$(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/$$$$file ; \ - mkdir -p $$$$(dirname $$$$dest) ; \ - $(CP) $$$$file $$$$dest ; \ - done ; \ - echo ; \ - \ - link_contents() { \ - local src=$$$$1 ; \ - local dest=$$$$2 ; \ - local dirs dir base ; \ - \ - if [ -n "$$$$($(FIND) $$$$src -mindepth 1 -maxdepth 1 -name '*.go' \! -type d)" ]; then \ - echo "$$$$src is already a Go library" ; \ - return 1 ; \ - fi ; \ - \ - dirs=$$$$($(FIND) $$$$src -mindepth 1 -maxdepth 1 -type d) ; \ - for dir in $$$$dirs; do \ - base=$$$$(basename $$$$dir) ; \ - if [ -d $$$$dest/$$$$base ]; then \ - case $$$$dir in \ - *$(GO_PKG_PATH)/src/$(GO_PKG)) \ - echo "$(GO_PKG) is already installed. Please check for circular dependencies." ;; \ - *) \ - link_contents $$$$src/$$$$base $$$$dest/$$$$base ;; \ - esac ; \ - else \ - echo "...$$$${src#$(GO_PKG_BUILD_DEPENDS_SRC)}/$$$$base" ; \ - $(LN) $$$$src/$$$$base $$$$dest/$$$$base ; \ - fi ; \ - done ; \ - } ; \ - \ - if [ "$(GO_PKG_SOURCE_ONLY)" != 1 ]; then \ - if [ -d $(GO_PKG_BUILD_DEPENDS_SRC) ]; then \ - echo "Symlinking directories from $(GO_PKG_BUILD_DEPENDS_SRC) into $(GO_PKG_BUILD_DIR)/src" ; \ - link_contents $(GO_PKG_BUILD_DEPENDS_SRC) $(GO_PKG_BUILD_DIR)/src ; \ - else \ - echo "$(GO_PKG_BUILD_DEPENDS_SRC) does not exist, skipping symlinks" ; \ - fi ; \ - else \ - echo "Not building binaries, skipping symlinks" ; \ - fi ; \ - echo ; \ - ) + $(GO_GENERAL_BUILD_CONFIG_VARS) \ + $(GO_PKG_BUILD_CONFIG_VARS) \ + $(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh configure endef # $(1) additional arguments for go command line (optional) define GoPackage/Build/Compile - ( \ - cd $(GO_PKG_BUILD_DIR) ; \ - export GOPATH=$(GO_PKG_BUILD_DIR) \ - GOCACHE=$(GO_PKG_CACHE_DIR) \ - GOTMPDIR=$(GO_PKG_TMP_DIR) \ - GOROOT_FINAL=$(GO_TARGET_ROOT) \ - CC=$(TARGET_CC) \ - CXX=$(TARGET_CXX) \ - $(call GoPackage/Environment) ; \ - \ - echo "Finding targets" ; \ - targets=$$$$(go list $(GO_PKG_BUILD_PKG)) ; \ - for pattern in $(GO_PKG_EXCLUDES); do \ - targets=$$$$(echo "$$$$targets" | grep -v "$$$$pattern") ; \ - done ; \ - echo ; \ - \ - if [ "$(GO_PKG_GO_GENERATE)" = 1 ]; then \ - echo "Calling go generate" ; \ - go generate -v $(1) $$$$targets ; \ - echo ; \ - fi ; \ - \ - if [ "$(GO_PKG_SOURCE_ONLY)" != 1 ]; then \ - echo "Building targets" ; \ - case $(GO_ARCH) in \ - arm) installsuffix="-installsuffix v$(GO_ARM)" ;; \ - mips|mipsle) installsuffix="-installsuffix $(GO_MIPS)" ;; \ - mips64|mips64le) installsuffix="-installsuffix $(GO_MIPS64)" ;; \ - esac ; \ - trimpath="all=-trimpath=$(GO_PKG_BUILD_DIR)" ; \ - ldflags="all=-linkmode external -extldflags '$(TARGET_LDFLAGS)'" ; \ - go install \ - $$$$installsuffix \ - -gcflags "$$$$trimpath" \ - -asmflags "$$$$trimpath" \ - -ldflags "$$$$ldflags" \ - -v \ - $(1) \ - $$$$targets ; \ - retval=$$$$? ; \ - echo ; \ - \ - if [ "$$$$retval" -eq 0 ] && [ -z "$(call GoPackage/has_binaries)" ]; then \ - echo "No binaries were generated, consider adding GO_PKG_SOURCE_ONLY:=1 to Makefile" ; \ - echo ; \ - fi ; \ - \ - echo "Cleaning module download cache (golang/go#27455)" ; \ - go clean -modcache ; \ - echo ; \ - fi ; \ - exit $$$$retval ; \ - ) + $(GO_GENERAL_BUILD_CONFIG_VARS) \ + $(GO_PKG_BUILD_CONFIG_VARS) \ + $(GO_PKG_VARS) \ + $(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh build $(GO_PKG_INSTALL_ARGS) $(1) endef define GoPackage/Build/InstallDev @@ -277,27 +271,33 @@ define GoPackage/Build/InstallDev endef define GoPackage/Package/Install/Bin - if [ -n "$(call GoPackage/has_binaries)" ]; then \ - $(INSTALL_DIR) $(1)/usr/bin ; \ - $(INSTALL_BIN) $(GO_PKG_BUILD_BIN_DIR)/* $(1)/usr/bin/ ; \ - fi + $(GO_GENERAL_BUILD_CONFIG_VARS) \ + $(GO_PKG_BUILD_CONFIG_VARS) \ + $(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh install_bin "$(1)" endef define GoPackage/Package/Install/Src - dir=$$$$(dirname $(GO_PKG)) ; \ - $(INSTALL_DIR) $(1)$(GO_PKG_PATH)/src/$$$$dir ; \ - $(CP) $(GO_PKG_BUILD_DIR)/src/$(GO_PKG) $(1)$(GO_PKG_PATH)/src/$$$$dir/ + $(GO_GENERAL_BUILD_CONFIG_VARS) \ + $(GO_PKG_BUILD_CONFIG_VARS) \ + $(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh install_src "$(1)" endef define GoPackage/Package/Install - $(call GoPackage/Package/Install/Bin,$(1)) + $(if $(filter $(GO_PKG_SOURCE_ONLY),1),, \ + $(call GoPackage/Package/Install/Bin,$(1)) \ + ) $(call GoPackage/Package/Install/Src,$(1)) endef -ifneq ($(GO_PKG),) +ifneq ($(strip $(GO_PKG)),) + ifeq ($(GO_TARGET_SPECTRE_SUPPORTED),1) + PKG_CONFIG_DEPENDS+=CONFIG_GOLANG_SPECTRE + endif + Build/Configure=$(call GoPackage/Build/Configure) Build/Compile=$(call GoPackage/Build/Compile) + Hooks/Compile/Post+=Go/CacheCleanup Build/InstallDev=$(call GoPackage/Build/InstallDev,$(1)) endif diff --git a/golang/golang-values.mk b/golang/golang-values.mk index 893f9296d..7ee00898a 100644 --- a/golang/golang-values.mk +++ b/golang/golang-values.mk @@ -1,5 +1,5 @@ # -# Copyright (C) 2018 Jeffery To +# Copyright (C) 2018-2023 Jeffery To # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,22 +9,123 @@ ifeq ($(origin GO_INCLUDE_DIR),undefined) GO_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST))) endif -include $(GO_INCLUDE_DIR)/golang-version.mk +# Unset environment variables +# There are more magic variables to track down, but ain't nobody got time for that +# From https://pkg.go.dev/cmd/go#hdr-Environment_variables + +# General-purpose environment variables: unexport \ - GOARCH GOBIN GOCACHE GODEBUG GOHOSTARCH GOOS GOPATH GORACE GOROOT GOTMPDIR GCCGO \ + GO111MODULE \ + GCCGO \ + GOARCH \ + GOBIN \ + GOCACHE \ + GOMODCACHE \ + GODEBUG \ + GOENV \ + GOFLAGS \ + GOOS \ + GOPATH \ + GOROOT \ + GOTOOLCHAIN \ + GOTMPDIR \ + GOWORK +# Unmodified: +# GOINSECURE +# GOPRIVATE +# GOPROXY +# GONOPROXY +# GOSUMDB +# GONOSUMDB +# GOVCS + +# Environment variables for use with cgo: +unexport \ + AR \ + CC \ CGO_ENABLED \ - CGO_CFLAGS CGO_CFLAGS_ALLOW CGO_CFLAGS_DISALLOW \ + CGO_CFLAGS CGO_CFLAGS_ALLOW CGO_CFLAGS_DISALLOW \ CGO_CPPFLAGS CGO_CPPFLAGS_ALLOW CGO_CPPFLAGS_DISALLOW \ CGO_CXXFLAGS CGO_CXXFLAGS_ALLOW CGO_CXXFLAGS_DISALLOW \ - CGO_FFLAGS CGO_FFLAGS_ALLOW CGO_FFLAGS_DISALLOW \ - CGO_LDFLAGS CGO_LDFLAGS_ALLOW CGO_LDFLAGS_DISALLOW \ - GOARM GO386 GOMIPS GOMIPS64 \ - GOROOT_FINAL GO_EXTLINK_ENABLED GIT_ALLOW_PROTOCOL \ - CC_FOR_TARGET CXX_FOR_TARGET GO_DISTFLAGS GO_GCFLAGS GO_LDFLAGS GOBUILDTIMELOGFILE GOROOT_BOOTSTRAP \ - BOOT_GO_GCFLAGS GOEXPERIMENT GOBOOTSTRAP_TOOLEXEC - # there are more magic environment variables to track down, but ain't nobody got time for that + CGO_FFLAGS CGO_FFLAGS_ALLOW CGO_FFLAGS_DISALLOW \ + CGO_LDFLAGS CGO_LDFLAGS_ALLOW CGO_LDFLAGS_DISALLOW \ + CXX \ + FC +# Unmodified: +# PKG_CONFIG + +# Architecture-specific environment variables: +unexport \ + GOARM \ + GOARM64 \ + GO386 \ + GOAMD64 \ + GOMIPS \ + GOMIPS64 \ + GOPPC64 \ + GORISCV64 \ + GOWASM + +# Environment variables for use with code coverage: +unexport \ + GOCOVERDIR + +# Special-purpose environment variables: +unexport \ + GCCGOTOOLDIR \ + GOEXPERIMENT \ + GOROOT_FINAL \ + GO_EXTLINK_ENABLED +# Unmodified: +# GIT_ALLOW_PROTOCOL + +# From https://pkg.go.dev/runtime#hdr-Environment_Variables +unexport \ + GOGC \ + GOMEMLIMIT \ + GOMAXPROCS \ + GORACE \ + GOTRACEBACK + +# From https://pkg.go.dev/cmd/cgo#hdr-Using_cgo_with_the_go_command +unexport \ + CC_FOR_TARGET \ + CXX_FOR_TARGET +# Todo: +# CC_FOR_${GOOS}_${GOARCH} +# CXX_FOR_${GOOS}_${GOARCH} + +# From https://go.dev/doc/install/source#environment +unexport \ + GOHOSTOS \ + GOHOSTARCH + +# From https://go.dev/src/make.bash +unexport \ + GO_GCFLAGS \ + GO_LDFLAGS \ + GO_LDSO \ + GO_DISTFLAGS \ + GOBUILDTIMELOGFILE \ + GOROOT_BOOTSTRAP + +# From https://go.dev/doc/go1.9#parallel-compile +unexport \ + GO19CONCURRENTCOMPILATION + +# From https://go.dev/src/cmd/dist/build.go +unexport \ + BOOT_GO_GCFLAGS \ + BOOT_GO_LDFLAGS + +# From https://go.dev/src/cmd/dist/buildtool.go +unexport \ + GOBOOTSTRAP_TOOLEXEC + + +# GOOS / GOARCH go_arch=$(subst \ aarch64,arm64,$(subst \ @@ -42,31 +143,129 @@ GO_HOST_OS:=$(call tolower,$(HOST_OS)) GO_HOST_ARCH:=$(call go_arch,$(subst \ armv6l,arm,$(subst \ armv7l,arm,$(subst \ - i486,i386,$(subst \ - i586,i386,$(subst \ - i686,i386,$(HOST_ARCH))))))) + i686,i386,$(HOST_ARCH))))) GO_HOST_OS_ARCH:=$(GO_HOST_OS)_$(GO_HOST_ARCH) -GO_HOST_TARGET_SAME:=$(if $(and $(findstring $(GO_OS_ARCH),$(GO_HOST_OS_ARCH)),$(findstring $(GO_HOST_OS_ARCH),$(GO_OS_ARCH))),1) -GO_HOST_TARGET_DIFFERENT:=$(if $(GO_HOST_TARGET_SAME),,1) +ifeq ($(GO_OS_ARCH),$(GO_HOST_OS_ARCH)) + GO_HOST_TARGET_SAME:=1 +else + GO_HOST_TARGET_DIFFERENT:=1 +endif -# ensure binaries can run on older CPUs -GO_386:=387 +ifeq ($(GO_ARCH),386) + ifeq ($(CONFIG_TARGET_x86_geode)$(CONFIG_TARGET_x86_legacy),y) + GO_386:=softfloat + else + GO_386:=sse2 + endif -GO_ARM:=$(if $(CONFIG_arm_v7),7,$(if $(CONFIG_arm_v6),6,$(if $(findstring $(GO_ARCH),arm),5,))) + # -fno-plt: causes "unexpected GOT reloc for non-dynamic symbol" errors + GO_CFLAGS_TO_REMOVE:=-fno-plt -GO_MIPS:=$(if $(filter $(GO_ARCH),mips mipsle),$(if $(CONFIG_HAS_FPU),hardfloat,softfloat),) +else ifeq ($(GO_ARCH),amd64) + GO_AMD64:=v1 -GO_MIPS64:=$(if $(filter $(GO_ARCH),mips64 mips64le),$(if $(CONFIG_HAS_FPU),hardfloat,softfloat),) +else ifeq ($(GO_ARCH),arm) + GO_TARGET_FPU:=$(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE)))) -# -fno-plt: causes "unexpected GOT reloc for non-dynamic symbol" errors -# -mips32r2: conflicts with -march=mips32 set by go -GO_CFLAGS_TO_REMOVE:=$(if \ -$(filter $(GO_ARCH),386),-fno-plt,$(if \ -$(filter $(GO_ARCH),mips mipsle),-mips32r2,)) + # FPU names from https://gcc.gnu.org/onlinedocs/gcc-8.4.0/gcc/ARM-Options.html#index-mfpu-1 + # see also https://github.com/gcc-mirror/gcc/blob/releases/gcc-8.4.0/gcc/config/arm/arm-cpus.in -GO_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mips64||mips64el||mipsel||powerpc64||x86_64) + ifeq ($(GO_TARGET_FPU),) + GO_ARM:=5 + else ifneq ($(filter $(GO_TARGET_FPU),vfp vfpv2),) + GO_ARM:=6 + else + GO_ARM:=7 + endif -GO_TARGET_PREFIX:=/usr -GO_TARGET_VERSION_ID:=$(GO_VERSION_MAJOR_MINOR) -GO_TARGET_ROOT:=$(GO_TARGET_PREFIX)/lib/go-$(GO_TARGET_VERSION_ID) +else ifneq ($(filter $(GO_ARCH),mips mipsle),) + ifeq ($(CONFIG_HAS_FPU),y) + GO_MIPS:=hardfloat + else + GO_MIPS:=softfloat + endif + + # -mips32r2: conflicts with -march=mips32 set by go + GO_CFLAGS_TO_REMOVE:=-mips32r2 + +else ifneq ($(filter $(GO_ARCH),mips64 mips64le),) + ifeq ($(CONFIG_HAS_FPU),y) + GO_MIPS64:=hardfloat + else + GO_MIPS64:=softfloat + endif + +else ifeq ($(GO_ARCH),ppc64) + GO_PPC64:=power8 + +endif + + +# Target Go + +GO_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mips64||mips64el||mipsel||powerpc64||riscv64||x86_64) + + +# ASLR/PIE + +# From https://go.dev/src/internal/platform/supported.go +GO_PIE_SUPPORTED_OS_ARCH:= \ + android_386 android_amd64 android_arm android_arm64 \ + linux_386 linux_amd64 linux_arm linux_arm64 \ + windows_386 windows_amd64 windows_arm windows_arm64 \ + \ + darwin_amd64 darwin_arm64 \ + ios_amd64 ios_arm64 \ + \ + freebsd_amd64 \ + \ + aix_ppc64 \ + \ + linux_loong64 linux_ppc64le linux_riscv64 linux_s390x + +# From https://go.dev/src/cmd/go/internal/work/init.go +go_pie_install_suffix=$(if $(filter $(1),aix_ppc64 windows_386 windows_amd64 windows_arm windows_arm64),,shared) + +ifneq ($(filter $(GO_HOST_OS_ARCH),$(GO_PIE_SUPPORTED_OS_ARCH)),) + GO_HOST_PIE_SUPPORTED:=1 + GO_HOST_PIE_INSTALL_SUFFIX:=$(call go_pie_install_suffix,$(GO_HOST_OS_ARCH)) +endif + +ifneq ($(filter $(GO_OS_ARCH),$(GO_PIE_SUPPORTED_OS_ARCH)),) + GO_TARGET_PIE_SUPPORTED:=1 + GO_TARGET_PIE_INSTALL_SUFFIX:=$(call go_pie_install_suffix,$(GO_OS_ARCH)) +endif + + +# Spectre mitigations + +GO_SPECTRE_SUPPORTED_ARCH:=amd64 + +ifneq ($(filter $(GO_HOST_ARCH),$(GO_SPECTRE_SUPPORTED_ARCH)),) + GO_HOST_SPECTRE_SUPPORTED:=1 +endif + +ifneq ($(filter $(GO_ARCH),$(GO_SPECTRE_SUPPORTED_ARCH)),) + GO_TARGET_SPECTRE_SUPPORTED:=1 +endif + + +# General build info + +GO_BUILD_CACHE_DIR:=$(or $(call qstrip,$(CONFIG_GOLANG_BUILD_CACHE_DIR)),$(TMP_DIR)/go-build) +GO_MOD_CACHE_DIR:=$(DL_DIR)/go-mod-cache + +GO_MOD_ARGS= \ + -modcacherw + +GO_GENERAL_BUILD_CONFIG_VARS= \ + CONFIG_GOLANG_MOD_CACHE_WORLD_READABLE="$(CONFIG_GOLANG_MOD_CACHE_WORLD_READABLE)" \ + GO_BUILD_CACHE_DIR="$(GO_BUILD_CACHE_DIR)" \ + GO_MOD_CACHE_DIR="$(GO_MOD_CACHE_DIR)" \ + GO_MOD_ARGS="$(GO_MOD_ARGS)" + +define Go/CacheCleanup + $(GO_GENERAL_BUILD_CONFIG_VARS) \ + $(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh cache_cleanup +endef diff --git a/golang/golang-version.mk b/golang/golang-version.mk deleted file mode 100644 index 494111452..000000000 --- a/golang/golang-version.mk +++ /dev/null @@ -1,14 +0,0 @@ -# -# Copyright (C) 2018 Jeffery To -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -ifeq ($(origin GO_INCLUDE_DIR),undefined) - GO_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST))) -endif - - -GO_VERSION_MAJOR_MINOR:=1.11 -GO_VERSION_PATCH:=5 diff --git a/golang/golang/Config.in b/golang/golang/Config.in new file mode 100644 index 000000000..76fd85c80 --- /dev/null +++ b/golang/golang/Config.in @@ -0,0 +1,33 @@ +menu "Configuration" + +config GOLANG_EXTERNAL_BOOTSTRAP_ROOT + string "External bootstrap Go root directory" + default "" + help + Path to a working Go tree (>= Go 1.4), with bin, pkg, and src + subdirectories and the Go compiler at bin/go. + + If specified, the existing Go installation will be used to + compile host (buildroot) Go. + + Leave blank to compile the default bootstrap Go. + +config GOLANG_BUILD_CACHE_DIR + string "Go build cache directory" + default "" + help + Store the Go build cache in this directory. + If not set, uses '$(TMP_DIR)/go-build'. + +config GOLANG_MOD_CACHE_WORLD_READABLE + bool "Ensure Go module cache is world-readable" + default n + +config GOLANG_SPECTRE + bool "Enable Spectre mitigations" + default n + depends on x86_64 + help + Currently only available for x86-64 (amd64). + +endmenu diff --git a/golang/golang/Makefile b/golang/golang/Makefile index 49e69a585..593f6ed5a 100644 --- a/golang/golang/Makefile +++ b/golang/golang/Makefile @@ -1,12 +1,14 @@ # -# Copyright (C) 2018 Jeffery To +# Copyright (C) 2018-2023 Jeffery To # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk -include ../golang-version.mk + +GO_VERSION_MAJOR_MINOR:=1.23 +GO_VERSION_PATCH:=4 PKG_NAME:=golang PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH)) @@ -18,21 +20,20 @@ GO_SOURCE_URLS:=https://dl.google.com/go/ \ PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz PKG_SOURCE_URL:=$(GO_SOURCE_URLS) -PKG_HASH:=bc1ef02bb1668835db1390a2e478dcbccb5dd16911691af9d75184bbe5aa943e +PKG_HASH:=ad345ac421e90814293a9699cca19dd5238251c3f687980bbcae28495b263531 +PKG_MAINTAINER:=Jeffery To PKG_LICENSE:=BSD-3-Clause PKG_LICENSE_FILES:=LICENSE -PKG_MAINTAINER:=Jeffery To +PKG_CPE_ID:=cpe:/a:golang:go PKG_BUILD_DEPENDS:=golang/host PKG_BUILD_DIR:=$(BUILD_DIR)/go-$(PKG_VERSION) PKG_BUILD_PARALLEL:=1 -PKG_USE_MIPS16:=0 +PKG_BUILD_FLAGS:=no-mips16 -PKG_GO_WORK_DIR:=$(PKG_BUILD_DIR)/.go_work -PKG_GO_HOST_CACHE_DIR:=$(PKG_GO_WORK_DIR)/host_cache -PKG_GO_TARGET_CACHE_DIR:=$(PKG_GO_WORK_DIR)/target_cache -PKG_GO_TMP_DIR:=$(PKG_GO_WORK_DIR)/tmp +PKG_GO_PREFIX:=/usr +PKG_GO_VERSION_ID:=$(GO_VERSION_MAJOR_MINOR) HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/go-$(PKG_VERSION) HOST_BUILD_PARALLEL:=1 @@ -42,18 +43,34 @@ HOST_GO_VERSION_ID:=cross HOST_GO_ROOT:=$(HOST_GO_PREFIX)/lib/go-$(HOST_GO_VERSION_ID) HOST_GO_VALID_OS_ARCH:= \ - android_arm \ - darwin_386 darwin_amd64 darwin_arm darwin_arm64 \ - dragonfly_amd64 \ - freebsd_386 freebsd_amd64 freebsd_arm \ - linux_386 linux_amd64 linux_arm linux_arm64 \ - netbsd_386 netbsd_amd64 netbsd_arm \ - openbsd_386 openbsd_amd64 openbsd_arm \ - plan9_386 plan9_amd64 \ - solaris_amd64 \ - windows_386 windows_amd64 \ + android_386 android_amd64 android_arm android_arm64 \ + freebsd_386 freebsd_amd64 freebsd_arm freebsd_arm64 \ + linux_386 linux_amd64 linux_arm linux_arm64 \ + openbsd_386 openbsd_amd64 openbsd_arm openbsd_arm64 \ + netbsd_386 netbsd_amd64 netbsd_arm netbsd_arm64 \ + windows_386 windows_amd64 windows_arm windows_arm64 \ \ - linux_ppc64 linux_ppc64le linux_mips linux_mipsle linux_mips64 linux_mips64le + plan9_386 plan9_amd64 plan9_arm \ + \ + darwin_amd64 darwin_arm64 \ + ios_amd64 ios_arm64 \ + \ + dragonfly_amd64 \ + illumos_amd64 \ + solaris_amd64 \ + \ + aix_ppc64 \ + js_wasm \ + wasip1_wasm \ + \ + freebsd_riscv64 \ + openbsd_riscv64 \ + \ + linux_ppc64 linux_ppc64le \ + linux_mips linux_mipsle linux_mips64 linux_mips64le \ + linux_loong64 linux_riscv64 linux_s390x \ + \ + openbsd_mips64 BOOTSTRAP_SOURCE:=go1.4-bootstrap-20171003.tar.gz BOOTSTRAP_SOURCE_URL:=$(GO_SOURCE_URLS) @@ -72,23 +89,41 @@ BOOTSTRAP_GO_VALID_OS_ARCH:= \ solaris_amd64 \ windows_386 windows_amd64 +BOOTSTRAP_1_17_SOURCE:=go1.17.13.src.tar.gz +BOOTSTRAP_1_17_SOURCE_URL:=$(GO_SOURCE_URLS) +BOOTSTRAP_1_17_HASH:=a1a48b23afb206f95e7bbaa9b898d965f90826f6f1d1fc0c1d784ada0cd300fd + +BOOTSTRAP_1_17_BUILD_DIR:=$(HOST_BUILD_DIR)/.go_bootstrap_1.17 + +BOOTSTRAP_1_20_SOURCE:=go1.20.6.src.tar.gz +BOOTSTRAP_1_20_SOURCE_URL:=$(GO_SOURCE_URLS) +BOOTSTRAP_1_20_HASH:=62ee5bc6fb55b8bae8f705e0cb8df86d6453626b4ecf93279e2867092e0b7f70 + +BOOTSTRAP_1_20_BUILD_DIR:=$(HOST_BUILD_DIR)/.go_bootstrap_1.20 + include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/package.mk include ../golang-compiler.mk include ../golang-package.mk -PKG_UNPACK:=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE) -HOST_UNPACK:=$(HOST_TAR) -C $(HOST_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(PKG_SOURCE) -BOOTSTRAP_UNPACK:=$(HOST_TAR) -C $(BOOTSTRAP_BUILD_DIR) --strip-components=1 -xzf $(DL_DIR)/$(BOOTSTRAP_SOURCE) +PKG_UNPACK:=$(HOST_TAR) -C "$(PKG_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(PKG_SOURCE)" +HOST_UNPACK:=$(HOST_TAR) -C "$(HOST_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(PKG_SOURCE)" +BOOTSTRAP_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(BOOTSTRAP_SOURCE)" +BOOTSTRAP_1_17_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_1_17_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(BOOTSTRAP_1_17_SOURCE)" +BOOTSTRAP_1_20_UNPACK:=$(HOST_TAR) -C "$(BOOTSTRAP_1_20_BUILD_DIR)" --strip-components=1 -xzf "$(DL_DIR)/$(BOOTSTRAP_1_20_SOURCE)" -# don't strip ELF executables in test data (and go itself) +# don't strip ELF executables in test data RSTRIP:=: STRIP:=: +ifeq ($(GO_TARGET_SPECTRE_SUPPORTED),1) + PKG_CONFIG_DEPENDS+=CONFIG_GOLANG_SPECTRE +endif + define Package/golang/Default $(call GoPackage/GoSubMenu) TITLE:=Go programming language - URL:=https://golang.org/ + URL:=https://go.dev/ DEPENDS:=$(GO_ARCH_DEPENDS) endef @@ -120,6 +155,10 @@ This package provides an assembler, compiler, linker, and compiled libraries for the Go programming language. endef +define Package/golang/config + source "$(SOURCE)/Config.in" +endef + define Package/golang-doc $(call Package/golang/Default) TITLE+= (documentation) @@ -143,36 +182,107 @@ This package provides the Go programming language source files needed for cross-compilation. endef -define Download/golang-bootstrap - FILE:=$(BOOTSTRAP_SOURCE) - URL:=$(BOOTSTRAP_SOURCE_URL) - HASH:=$(BOOTSTRAP_HASH) + +# Bootstrap + +BOOTSTRAP_ROOT_DIR:=$(call qstrip,$(CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT)) + +ifeq ($(BOOTSTRAP_ROOT_DIR),) + BOOTSTRAP_ROOT_DIR:=$(BOOTSTRAP_BUILD_DIR) + + define Download/golang-bootstrap + FILE:=$(BOOTSTRAP_SOURCE) + URL:=$(BOOTSTRAP_SOURCE_URL) + HASH:=$(BOOTSTRAP_HASH) + endef + $(eval $(call Download,golang-bootstrap)) + + define Bootstrap/Prepare + mkdir -p "$(BOOTSTRAP_BUILD_DIR)" && $(BOOTSTRAP_UNPACK) ; + endef + Hooks/HostPrepare/Post+=Bootstrap/Prepare + + $(eval $(call GoCompiler/AddProfile,Bootstrap,$(BOOTSTRAP_BUILD_DIR),,bootstrap,$(GO_HOST_OS_ARCH))) +endif + + +# Bootstrap 1.17 + +define Download/golang-bootstrap-1.17 + FILE:=$(BOOTSTRAP_1_17_SOURCE) + URL:=$(BOOTSTRAP_1_17_SOURCE_URL) + HASH:=$(BOOTSTRAP_1_17_HASH) endef -$(eval $(call Download,golang-bootstrap)) +$(eval $(call Download,golang-bootstrap-1.17)) -$(eval $(call GoCompiler/AddProfile,Bootstrap,$(BOOTSTRAP_BUILD_DIR),,bootstrap,$(GO_HOST_OS_ARCH))) -$(eval $(call GoCompiler/AddProfile,Host,$(HOST_BUILD_DIR),$(HOST_GO_PREFIX),$(HOST_GO_VERSION_ID),$(GO_HOST_OS_ARCH))) -$(eval $(call GoCompiler/AddProfile,Package,$(PKG_BUILD_DIR),$(GO_TARGET_PREFIX),$(GO_TARGET_VERSION_ID),$(GO_OS_ARCH))) - -define Host/Prepare - $(call Host/Prepare/Default) - mkdir -p $(BOOTSTRAP_BUILD_DIR) - $(BOOTSTRAP_UNPACK) +define Bootstrap-1.17/Prepare + mkdir -p "$(BOOTSTRAP_1_17_BUILD_DIR)" && $(BOOTSTRAP_1_17_UNPACK) ; endef +Hooks/HostPrepare/Post+=Bootstrap-1.17/Prepare -define Host/Compile +$(eval $(call GoCompiler/AddProfile,Bootstrap-1.17,$(BOOTSTRAP_1_17_BUILD_DIR),,bootstrap-1.17,$(GO_HOST_OS_ARCH))) + +# Bootstrap 1.20 + +define Download/golang-bootstrap-1.20 + FILE:=$(BOOTSTRAP_1_20_SOURCE) + URL:=$(BOOTSTRAP_1_20_SOURCE_URL) + HASH:=$(BOOTSTRAP_1_20_HASH) +endef +$(eval $(call Download,golang-bootstrap-1.20)) + +define Bootstrap-1.20/Prepare + mkdir -p "$(BOOTSTRAP_1_20_BUILD_DIR)" && $(BOOTSTRAP_1_20_UNPACK) ; +endef +Hooks/HostPrepare/Post+=Bootstrap-1.20/Prepare + +$(eval $(call GoCompiler/AddProfile,Bootstrap-1.20,$(BOOTSTRAP_1_20_BUILD_DIR),,bootstrap-1.20,$(GO_HOST_OS_ARCH))) + + +# Host + +ifeq ($(GO_HOST_PIE_SUPPORTED),1) + HOST_GO_ENABLE_PIE:=1 +endif + +# when using GO_LDFLAGS to set buildmode=pie, the PIE install suffix +# does not apply (we also delete the std lib during Host/Install) + +$(eval $(call GoCompiler/AddProfile,Host,$(HOST_BUILD_DIR),$(HOST_GO_PREFIX),$(HOST_GO_VERSION_ID),$(GO_HOST_OS_ARCH),$(HOST_GO_INSTALL_SUFFIX))) + +HOST_GO_VARS= \ + GOHOSTARCH="$(GO_HOST_ARCH)" \ + GOCACHE="$(GO_BUILD_CACHE_DIR)" \ + GOENV=off \ + CC="$(HOSTCC_NOCACHE)" \ + CXX="$(HOSTCXX_NOCACHE)" + +define Host/Configure $(call GoCompiler/Bootstrap/CheckHost,$(BOOTSTRAP_GO_VALID_OS_ARCH)) $(call GoCompiler/Host/CheckHost,$(HOST_GO_VALID_OS_ARCH)) + mkdir -p "$(GO_BUILD_CACHE_DIR)" +endef + +define Host/Compile $(call GoCompiler/Bootstrap/Make, \ - CC=$(HOSTCC_NOCACHE) \ - CXX=$(HOSTCXX_NOCACHE) \ + $(HOST_GO_VARS) \ + ) + + $(call GoCompiler/Bootstrap-1.17/Make, \ + GOROOT_BOOTSTRAP="$(BOOTSTRAP_ROOT_DIR)" \ + $(HOST_GO_VARS) \ + ) + + $(call GoCompiler/Bootstrap-1.20/Make, \ + GOROOT_BOOTSTRAP="$(BOOTSTRAP_1_17_BUILD_DIR)" \ + $(HOST_GO_VARS) \ ) $(call GoCompiler/Host/Make, \ - GOROOT_BOOTSTRAP=$(BOOTSTRAP_BUILD_DIR) \ - CC=$(HOSTCC_NOCACHE) \ - CXX=$(HOSTCXX_NOCACHE) \ + GOROOT_BOOTSTRAP="$(BOOTSTRAP_1_20_BUILD_DIR)" \ + $(if $(HOST_GO_ENABLE_PIE),GO_LDFLAGS="-buildmode pie") \ + $(HOST_GO_VARS) \ ) endef @@ -187,77 +297,124 @@ define Host/Install $(call GoCompiler/Host/Install/BinLinks,) - rm -rf $(HOST_GO_ROOT)/pkg/$(GO_HOST_OS_ARCH) + rm -rf "$(HOST_GO_ROOT)/pkg/$(GO_HOST_OS_ARCH)$(if $(HOST_GO_INSTALL_SUFFIX),_$(HOST_GO_INSTALL_SUFFIX))" - $(INSTALL_DIR) $(HOST_GO_ROOT)/openwrt - $(INSTALL_BIN) ./files/go-gcc-helper $(HOST_GO_ROOT)/openwrt/ - $(LN) go-gcc-helper $(HOST_GO_ROOT)/openwrt/gcc - $(LN) go-gcc-helper $(HOST_GO_ROOT)/openwrt/g++ + $(INSTALL_DIR) "$(HOST_GO_ROOT)/openwrt" + $(INSTALL_BIN) ./files/go-gcc-helper "$(HOST_GO_ROOT)/openwrt/" + $(LN) go-gcc-helper "$(HOST_GO_ROOT)/openwrt/gcc" + $(LN) go-gcc-helper "$(HOST_GO_ROOT)/openwrt/g++" endef define Host/Uninstall - rm -rf $(HOST_GO_ROOT)/openwrt + rm -rf "$(HOST_GO_ROOT)/openwrt" $(call GoCompiler/Host/Uninstall/BinLinks,) $(call GoCompiler/Host/Uninstall,) endef -define Build/Compile - mkdir -p \ - $(PKG_GO_HOST_CACHE_DIR) \ - $(PKG_GO_TARGET_CACHE_DIR) \ - $(PKG_GO_TMP_DIR) +# Target + +ifeq ($(GO_PKG_ENABLE_PIE),1) + PKG_GO_INSTALL_SUFFIX:=$(GO_TARGET_PIE_INSTALL_SUFFIX) +endif + +$(eval $(call GoCompiler/AddProfile,Package,$(PKG_BUILD_DIR),$(PKG_GO_PREFIX),$(PKG_GO_VERSION_ID),$(GO_OS_ARCH),$(PKG_GO_INSTALL_SUFFIX))) + +PKG_GO_ZBOOTSTRAP_MODS:= \ + s/defaultGO386 = `[^`]*`/defaultGO386 = `$(or $(GO_386),sse2)`/; \ + s/defaultGOAMD64 = `[^`]*`/defaultGOAMD64 = `$(or $(GO_AMD64),v1)`/; \ + s/defaultGOARM = `[^`]*`/defaultGOARM = `$(or $(GO_ARM),7)`/; \ + s/defaultGOMIPS = `[^`]*`/defaultGOMIPS = `$(or $(GO_MIPS),hardfloat)`/; \ + s/defaultGOMIPS64 = `[^`]*`/defaultGOMIPS64 = `$(or $(GO_MIPS64),hardfloat)`/; \ + s/defaultGOPPC64 = `[^`]*`/defaultGOPPC64 = `$(or $(GO_PPC64),power8)`/; + +PKG_GO_ZBOOTSTRAP_PATH:=$(PKG_BUILD_DIR)/src/internal/buildcfg/zbootstrap.go + +PKG_GO_VARS= \ + GOHOSTARCH="$(GO_HOST_ARCH)" \ + GOCACHE="$(GO_BUILD_CACHE_DIR)" \ + GOENV=off \ + GO_GCC_HELPER_PATH="$$$$PATH" \ + CC=gcc \ + CXX=g++ \ + PKG_CONFIG=pkg-config \ + PATH="$(HOST_GO_ROOT)/openwrt:$$$$PATH" + +PKG_GO_GCFLAGS= \ + $(if $(GO_PKG_ENABLE_SPECTRE),-spectre all) + +PKG_GO_ASMFLAGS= \ + $(if $(GO_PKG_ENABLE_SPECTRE),-spectre all) + +PKG_GO_LDFLAGS= \ + -buildid '$(SOURCE_DATE_EPOCH)' \ + -linkmode external \ + -extldflags '$(patsubst -z%,-Wl$(comma)-z$(comma)%,$(TARGET_LDFLAGS))' \ + $(if $(CONFIG_NO_STRIP)$(CONFIG_DEBUG),,-s -w) + +PKG_GO_INSTALL_ARGS= \ + -buildvcs=false \ + -trimpath \ + -ldflags "all=$(PKG_GO_LDFLAGS)" \ + $(if $(PKG_GO_GCFLAGS),-gcflags "all=$(PKG_GO_GCFLAGS)") \ + $(if $(PKG_GO_ASMFLAGS),-asmflags "all=$(PKG_GO_ASMFLAGS)") \ + $(if $(filter $(GO_PKG_ENABLE_PIE),1),-buildmode pie) + +define Build/Configure + mkdir -p "$(GO_BUILD_CACHE_DIR)" +endef + +define Build/Compile @echo "Building target Go first stage" $(call GoCompiler/Package/Make, \ - GOROOT_BOOTSTRAP=$(HOST_GO_ROOT) \ - GOCACHE=$(PKG_GO_HOST_CACHE_DIR) \ - GOTMPDIR=$(PKG_GO_TMP_DIR) \ + GOROOT_BOOTSTRAP="$(HOST_GO_ROOT)" \ GO_GCC_HELPER_CC="$(HOSTCC)" \ GO_GCC_HELPER_CXX="$(HOSTCXX)" \ - GO_GCC_HELPER_PATH=$$$$PATH \ - CC=gcc \ - CXX=g++ \ - PKG_CONFIG=pkg-config \ - PATH=$(HOST_GO_ROOT)/openwrt:$$$$PATH \ + $(PKG_GO_VARS) \ + ) + + $(SED) '$(PKG_GO_ZBOOTSTRAP_MODS)' "$(PKG_GO_ZBOOTSTRAP_PATH)" + + ( \ + if echo 'int main() { return 0; }' | $(TARGET_CC) -o $(PKG_BUILD_DIR)/test-ldso -x c - > /dev/null 2>&1; then \ + LDSO=$$$$( \ + readelf -l $(PKG_BUILD_DIR)/test-ldso | \ + sed -n -e 's/^.*interpreter: \(.*\)[]]/\1/p' \ + ) ; \ + fi ; \ + $(SED) "s,defaultGO_LDSO = \`[^\`]*\`,defaultGO_LDSO = \`$$$$LDSO\`," "$(PKG_GO_ZBOOTSTRAP_PATH)" ; \ ) @echo "Building target Go second stage" ( \ - cd $(PKG_BUILD_DIR)/bin ; \ + cd "$(PKG_BUILD_DIR)/bin" ; \ + export $(GO_PKG_TARGET_VARS) ; \ $(CP) go go-host ; \ - GOROOT_FINAL=$(GO_TARGET_ROOT) \ - GOCACHE=$(PKG_GO_TARGET_CACHE_DIR) \ - GOTMPDIR=$(PKG_GO_TMP_DIR) \ GO_GCC_HELPER_CC="$(TARGET_CC)" \ GO_GCC_HELPER_CXX="$(TARGET_CXX)" \ - GO_GCC_HELPER_PATH=$$$$PATH \ - CC=gcc \ - CXX=g++ \ - PKG_CONFIG=pkg-config \ - PATH=$(HOST_GO_ROOT)/openwrt:$$$$PATH \ - $(call GoPackage/Environment) \ - ./go-host install -a -v std cmd ; \ - retval=$$$$? ; \ + $(PKG_GO_VARS) \ + ./go-host install -a $(PKG_GO_INSTALL_ARGS) std cmd ; \ + retval="$$$$?" ; \ rm -f go-host ; \ - exit $$$$retval ; \ + exit "$$$$retval" ; \ ) endef define Package/golang/install - $(call GoCompiler/Package/Install/Bin,$(1)$(GO_TARGET_PREFIX)) - $(call GoCompiler/Package/Install/BinLinks,$(1)$(GO_TARGET_PREFIX)) + $(call GoCompiler/Package/Install/Bin,$(1)$(PKG_GO_PREFIX)) + $(call GoCompiler/Package/Install/BinLinks,$(1)$(PKG_GO_PREFIX)) endef define Package/golang-doc/install - $(call GoCompiler/Package/Install/Doc,$(1)$(GO_TARGET_PREFIX)) + $(call GoCompiler/Package/Install/Doc,$(1)$(PKG_GO_PREFIX)) endef define Package/golang-src/install - $(call GoCompiler/Package/Install/Src,$(1)$(GO_TARGET_PREFIX)) + $(call GoCompiler/Package/Install/Src,$(1)$(PKG_GO_PREFIX)) endef # src/debug contains ELF executables as test data @@ -268,6 +425,7 @@ define Package/golang-src/extra_provides echo 'libc.so.6' endef + $(eval $(call HostBuild)) $(eval $(call BuildPackage,golang)) $(eval $(call BuildPackage,golang-doc)) diff --git a/golang/golang/files/go-gcc-helper b/golang/golang/files/go-gcc-helper index 3d3f8935d..b21457b55 100644 --- a/golang/golang/files/go-gcc-helper +++ b/golang/golang/files/go-gcc-helper @@ -1,23 +1,47 @@ #!/bin/sh +# +# Copyright (C) 2018, 2020 Jeffery To +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# me=go-gcc-helper -name=$(basename $0) +name="${0##*/}" -case $name in +log() { + # shellcheck disable=SC2039 + local IFS=" " + printf '%s\n' "$me: $*" +} + +case "$name" in gcc) - cmd=$GO_GCC_HELPER_CC + if [ -z "$GO_GCC_HELPER_CC" ]; then + log "missing GO_GCC_HELPER_CC" + exit 1 + fi + cmd="$GO_GCC_HELPER_CC" ;; g++) - cmd=$GO_GCC_HELPER_CXX + if [ -z "$GO_GCC_HELPER_CXX" ]; then + log "missing GO_GCC_HELPER_CXX" + exit 1 + fi + cmd="$GO_GCC_HELPER_CXX" ;; *) - echo "$me: unknown command \"$name\"" + log "unknown command \"$name\"" exit 1 ;; esac -export PATH="$GO_GCC_HELPER_PATH" +if [ -n "$GO_GCC_HELPER_PATH" ]; then + export PATH="$GO_GCC_HELPER_PATH" +else + log "missing GO_GCC_HELPER_PATH" +fi -echo "$me: running $cmd $@" +log "running $cmd $*" $cmd "$@" diff --git a/golang/golang/test.sh b/golang/golang/test.sh new file mode 100644 index 000000000..114b427ef --- /dev/null +++ b/golang/golang/test.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +[ "$1" = golang ] || exit 0 + +go version | grep -F " go$PKG_VERSION " diff --git a/grpcurl/Makefile b/grpcurl/Makefile new file mode 100644 index 000000000..8bec5ccf4 --- /dev/null +++ b/grpcurl/Makefile @@ -0,0 +1,60 @@ +# +# Copyright (C) 2022 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=grpcurl +PKG_VERSION:=1.8.6 +PKG_RELEASE:=1 + +PKG_SOURCE:=v$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://github.com/fullstorydev/grpcurl/archive/refs/tags/ +PKG_HASH:=18b457f644baabeef0de350596dd8d23563586ee94a3ed3cb290063e097ab934 + +PKG_LICENSE:=MIT +PKG_LICENSE_FILES:=LICENSE +PKG_MAINTAINER:=Yannick Chabanois + +PKG_BUILD_DEPENDS:=golang/host +PKG_BUILD_PARALLEL:=1 +PKG_USE_MIPS16:=0 + +GO_PKG:=github.com/fullstorydev/grpcurl +GO_PKG_BUILD_PKG:=github.com/fullstorydev/grpcurl/cmd/grpcurl +GO_PKG_LDFLAGS_X:= \ + $(GO_PKG)/constant.Version=$(PKG_VERSION) \ + $(GO_PKG)/constant.Commit=v$(PKG_VERSION) +GO_PKG_LDFLAGS:=-s -w +GO_PKG_TAGS:=master + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk + +define Package/grpcurl + TITLE:=grpcurl is a command-line tool that lets you interact with gRPC servers + URL:=https://github.com/fullstorydev/grpcurl + SECTION:=net + CATEGORY:=Network + DEPENDS:=$(GO_ARCH_DEPENDS) +protobuf +endef + +define Package/grpcurl/description + grpcurl is a command-line tool that lets you interact with gRPC servers. It's basically curl for gRPC servers. + + The main purpose for this tool is to invoke RPC methods on a gRPC server from the command-line. gRPC servers use a binary encoding on the wire (protocol buffers, or "protobufs" for short). So they are basically impossible to interact with using regular curl (and older versions of curl that do not support HTTP/2 are of course non-starters). This program accepts messages using JSON encoding, which is much more friendly for both humans and scripts. +endef + +define Package/v2ray-core/install + $(call GoPackage/Package/Install/Bin,$(PKG_INSTALL_DIR)) + + $(INSTALL_DIR) $(1)/usr/bin + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/grpcurl $(1)/usr/bin +endef + +$(eval $(call GoBinPackage,grpcurl)) +$(eval $(call BuildPackage,grpcurl)) diff --git a/ipcalc/Makefile b/ipcalc/Makefile index f2d752d59..3d95869ff 100644 --- a/ipcalc/Makefile +++ b/ipcalc/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -10,11 +10,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ipcalc PKG_RELEASE:=1 -PKG_SOURCE_URL:=https://github.com/nmav/ipcalc.git +PKG_SOURCE_URL:=https://gitlab.com/ipcalc/ipcalc.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_VERSION:=e9f88461f2585575d12fc95f5eeb9996b863f5af +PKG_SOURCE_VERSION:=d8a2fe29a89f0f9f0d44a7b15e260c74f0e8388b PKG_MAINTAINER:=Ycarus (Yannick Chabanois) PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILE:=COPYING include $(INCLUDE_DIR)/package.mk diff --git a/iperf3/Makefile b/iperf3/Makefile index 1a7f3c839..a5fe60450 100644 --- a/iperf3/Makefile +++ b/iperf3/Makefile @@ -1,6 +1,5 @@ # # Copyright (C) 2007-2010 OpenWrt.org -# Copyright (C) 2019 Ycarus (Yannick Chabanois) # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,15 +8,16 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iperf -PKG_SOURCE_VERSION:=40e7c05440583f229edd6b6ca05c5d97b66fcf15 -PKG_VERSION:=3.6-$(PKG_SOURCE_VERSION) -PKG_RELEASE:=2 +PKG_VERSION:=3.18 +PKG_RELEASE:=1 -PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://github.com/esnet/iperf.git +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_SOURCE_URL:=https://downloads.es.net/pub/iperf +PKG_HASH:=c0618175514331e766522500e20c94bfb293b4424eb27d7207fb427b88d20bab -PKG_MAINTAINER:=Yannick Chabanois +PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=BSD-3-Clause +PKG_CPE_ID:=cpe:/a:es:iperf3 PKG_BUILD_PARALLEL:=1 PKG_INSTALL:=1 @@ -38,24 +38,36 @@ endef define Package/iperf3 $(call Package/iperf3/default) VARIANT:=nossl + DEPENDS:=+libiperf3 endef define Package/iperf3-ssl $(call Package/iperf3/default) TITLE+= with iperf_auth support VARIANT:=ssl - DEPENDS:= +libopenssl + DEPENDS:=+libopenssl +libatomic + CONFLICTS:=iperf3 +endef + +define Package/libiperf3 + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Internet Protocol bandwidth measuring library + URL:=https://github.com/esnet/iperf + DEPENDS+=+libatomic endef TARGET_CFLAGS += -D_GNU_SOURCE -CONFIGURE_ARGS += --disable-shared +TARGET_LDFLAGS += -latomic ifeq ($(BUILD_VARIANT),ssl) - CONFIGURE_ARGS += --with-openssl="$(STAGING_DIR)/usr" + CONFIGURE_ARGS += --with-openssl="$(STAGING_DIR)/usr" --disable-shared else CONFIGURE_ARGS += --without-openssl endif +CONFIGURE_ARGS += --without-sctp + MAKE_FLAGS += noinst_PROGRAMS= define Package/iperf3/description @@ -64,6 +76,17 @@ define Package/iperf3/description characteristics. endef +define Package/libiperf3/description + Libiperf is a library providing an API for iperf3 functionality. +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/lib + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libiperf.* $(1)/usr/lib/ + $(CP) $(PKG_INSTALL_DIR)/usr/include/* $(1)/usr/include/ +endef + # autoreconf fails if the README file isn't present define Build/Prepare $(call Build/Prepare/Default) @@ -80,5 +103,11 @@ define Package/iperf3-ssl/install $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/iperf3 $(1)/usr/bin/ endef +define Package/libiperf3/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libiperf.so.* $(1)/usr/lib +endef + $(eval $(call BuildPackage,iperf3)) $(eval $(call BuildPackage,iperf3-ssl)) +$(eval $(call BuildPackage,libiperf3)) diff --git a/iperf3/patches/010-big-endian.patch b/iperf3/patches/010-big-endian.patch new file mode 100644 index 000000000..f57ef51a4 --- /dev/null +++ b/iperf3/patches/010-big-endian.patch @@ -0,0 +1,21 @@ +From fe09305eb6f907e4eb637b8edd0c8a986187d1dd Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Sat, 8 Jun 2024 15:23:51 -0700 +Subject: [PATCH] fix crash under big endian musl + +iperf_printf is using an int format here but an int64_t variable. The format only needs the first 3 digits. Cast to int to fix it. +--- + src/iperf_api.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/iperf_api.c ++++ b/src/iperf_api.c +@@ -4137,7 +4137,7 @@ iperf_print_results(struct iperf_test *t + iperf_printf(test, report_sender_not_available_summary_format, "SUM"); + } + else { +- iperf_printf(test, report_sum_bw_retrans_format, mbuf, start_time, sender_time, ubuf, nbuf, total_retransmits, report_sender); ++ iperf_printf(test, report_sum_bw_retrans_format, mbuf, start_time, sender_time, ubuf, nbuf, (int)total_retransmits, report_sender); + } + } else { + /* Summary sum, TCP without retransmits. */ diff --git a/iperf3/patches/add-MPTCP-support.patch b/iperf3/patches/add-MPTCP-support.patch new file mode 100644 index 000000000..fce1a388f --- /dev/null +++ b/iperf3/patches/add-MPTCP-support.patch @@ -0,0 +1,266 @@ +From cf75cf46785871330717a6d2c889abeb7bbd7bfd Mon Sep 17 00:00:00 2001 +From: Geliang Tang +Date: Wed, 6 Mar 2024 11:23:33 +0800 +Subject: [PATCH] add MPTCPv1 support + +The Multipath TCP (MPTCP) protocol (v1 / RFC 8684) has been added in +the upstream Linux kernel since v5.6. + +MPTCP is strongly tied to TCP, and the kernel APIs are almost the same. +The only required dependency is the 'IPPROTO_MPTCP' protocol number +definition, which should be provided by the netinet/in.h header if it +is recent enough. + +This patch adds a new flag '-m' or '--mptcp' to support MPTCPv1. It can +be used like this: + + > iperf3 -m -s + > iperf3 -m -c 127.0.0.1 + +If IPPROTO_MPTCP is not supported by the kernel being tested, it is +normal to fail because the feature is not available and the user +explicitly asked to use MPTCP. + +Closes: https://github.com/esnet/iperf/pull/1659 +Co-developed-by: Paolo Abeni +Signed-off-by: Geliang Tang +--- + configure.ac | 12 ++++++++++++ + src/iperf.h | 1 + + src/iperf3.1 | 4 ++++ + src/iperf_api.c | 19 ++++++++++++++++++- + src/iperf_locale.c | 3 +++ + src/iperf_tcp.c | 18 +++++++++++++++--- + src/net.c | 10 +++++----- + src/net.h | 2 +- + 8 files changed, 59 insertions(+), 10 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 66c1e97a5..22c2a95cf 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -337,6 +337,18 @@ if test "x$iperf3_cv_header_tcp_info_snd_wnd" = "xyes"; then + AC_DEFINE([HAVE_TCP_INFO_SND_WND], [1], [Have tcpi_snd_wnd field in tcp_info.]) + fi + ++# Check for IPPROTO_MPTCP (Linux) ++AC_CACHE_CHECK([MPTCP protocol], ++[iperf3_cv_header_ipproto_mptcp], ++AC_COMPILE_IFELSE( ++ [AC_LANG_PROGRAM([[#include ]], ++ [[int foo = IPPROTO_MPTCP;]])], ++ iperf3_cv_header_ipproto_mptcp=yes, ++ iperf3_cv_header_ipproto_mptcp=no)) ++if test "x$iperf3_cv_header_ipproto_mptcp" = "xyes"; then ++ AC_DEFINE([HAVE_IPPROTO_MPTCP], [1], [Have MPTCP protocol.]) ++fi ++ + # Check if we need -lrt for clock_gettime + AC_SEARCH_LIBS(clock_gettime, [rt posix4]) + # Check for clock_gettime support +diff --git a/src/iperf.h b/src/iperf.h +index 202d3016f..4043031b3 100644 +--- a/src/iperf.h ++++ b/src/iperf.h +@@ -353,6 +353,7 @@ struct iperf_test + int repeating_payload; /* --repeating-payload */ + int timestamps; /* --timestamps */ + char *timestamp_format; ++ int mptcp; /* -m, --mptcp */ + + char *json_output_string; /* rendered JSON output if json_output is set */ + /* Select related parameters */ +diff --git a/src/iperf3.1 b/src/iperf3.1 +index f8eff48d2..9e425cabc 100644 +--- a/src/iperf3.1 ++++ b/src/iperf3.1 +@@ -202,6 +202,10 @@ iperf-3.17, OAEP padding is used, however this is a breaking change + that is not compatible with older iperf3 versions. Use this option to + preserve the less secure, but more compatible, behavior. + .TP ++.BR -m ", " --mptcp " " ++use mptcp variant for the current protocol. This only applies to ++TCP and enables MPTCP usage. ++.TP + .BR -d ", " --debug " " + emit debugging output. + Primarily (perhaps exclusively) of use to developers. +diff --git a/src/iperf_api.c b/src/iperf_api.c +index fa06dc830..419b48657 100644 +--- a/src/iperf_api.c ++++ b/src/iperf_api.c +@@ -1149,6 +1149,9 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + {"idle-timeout", required_argument, NULL, OPT_IDLE_TIMEOUT}, + {"rcv-timeout", required_argument, NULL, OPT_RCV_TIMEOUT}, + {"snd-timeout", required_argument, NULL, OPT_SND_TIMEOUT}, ++#if defined(HAVE_IPPROTO_MPTCP) ++ {"mptcp", no_argument, NULL, 'm'}, ++#endif + {"debug", optional_argument, NULL, 'd'}, + {"help", no_argument, NULL, 'h'}, + {NULL, 0, NULL, 0} +@@ -1174,7 +1177,7 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + FILE *ptr_file; + #endif /* HAVE_SSL */ + +- while ((flag = getopt_long(argc, argv, "p:f:i:D1VJvsc:ub:t:n:k:l:P:Rw:B:M:N46S:L:ZO:F:A:T:C:dI:hX:", longopts, NULL)) != -1) { ++ while ((flag = getopt_long(argc, argv, "p:f:i:D1VJvsc:ub:t:n:k:l:P:Rw:B:M:N46S:L:ZO:F:A:T:C:dI:mhX:", longopts, NULL)) != -1) { + switch (flag) { + case 'p': + portno = atoi(optarg); +@@ -1647,6 +1650,12 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + test->settings->connect_timeout = unit_atoi(optarg); + client_flag = 1; + break; ++#if defined(HAVE_IPPROTO_MPTCP) ++ case 'm': ++ set_protocol(test, Ptcp); ++ test->mptcp = 1; ++ break; ++#endif + case 'h': + usage_long(stdout); + exit(0); +@@ -2259,6 +2268,10 @@ send_parameters(struct iperf_test *test) + cJSON_AddTrueToObject(j, "reverse"); + if (test->bidirectional) + cJSON_AddTrueToObject(j, "bidirectional"); ++#if defined(HAVE_IPPROTO_MPTCP) ++ if (test->mptcp) ++ cJSON_AddTrueToObject(j, "mptcp"); ++#endif + if (test->settings->socket_bufsize) + cJSON_AddNumberToObject(j, "window", test->settings->socket_bufsize); + if (test->settings->blksize) +@@ -2375,6 +2388,10 @@ get_parameters(struct iperf_test *test) + iperf_set_test_reverse(test, 1); + if ((j_p = iperf_cJSON_GetObjectItemType(j, "bidirectional", cJSON_True)) != NULL) + iperf_set_test_bidirectional(test, 1); ++#if defined(HAVE_IPPROTO_MPTCP) ++ if ((j_p = iperf_cJSON_GetObjectItemType(j, "mptcp", cJSON_True)) != NULL) ++ test->mptcp = 1; ++#endif + if ((j_p = iperf_cJSON_GetObjectItemType(j, "window", cJSON_Number)) != NULL) + test->settings->socket_bufsize = j_p->valueint; + if ((j_p = iperf_cJSON_GetObjectItemType(j, "len", cJSON_Number)) != NULL) +diff --git a/src/iperf_locale.c b/src/iperf_locale.c +index 32883da84..f1d89e298 100644 +--- a/src/iperf_locale.c ++++ b/src/iperf_locale.c +@@ -128,6 +128,9 @@ const char usage_longstr[] = "Usage: iperf3 [-s|-c host] [options]\n" + " --snd-timeout # timeout for unacknowledged TCP data\n" + " (in ms, default is system settings)\n" + #endif /* HAVE_TCP_USER_TIMEOUT */ ++#if defined(HAVE_IPPROTO_MPTCP) ++ " -m, --mptcp use MPTCP rather than plain TCP\n" ++#endif + " -d, --debug[=#] emit debugging output\n" + " (optional optional \"=\" and debug level: 1-4. Default is 4 - all messages)\n" + " -v, --version show version information and quit\n" +diff --git a/src/iperf_tcp.c b/src/iperf_tcp.c +index 481c09dc8..2c10d7df5 100644 +--- a/src/iperf_tcp.c ++++ b/src/iperf_tcp.c +@@ -184,9 +184,10 @@ iperf_tcp_listen(struct iperf_test *test) + * + * It's not clear whether this is a requirement or a convenience. + */ +- if (test->no_delay || test->settings->mss || test->settings->socket_bufsize) { ++ if (test->no_delay || test->mptcp || test->settings->mss || test->settings->socket_bufsize) { + struct addrinfo hints, *res; + char portstr[6]; ++ int proto = 0; + + FD_CLR(s, &test->read_set); + close(s); +@@ -212,7 +213,12 @@ iperf_tcp_listen(struct iperf_test *test) + return -1; + } + +- if ((s = socket(res->ai_family, SOCK_STREAM, 0)) < 0) { ++#if defined(HAVE_IPPROTO_MPTCP) ++ if (test->mptcp) ++ proto = IPPROTO_MPTCP; ++#endif ++ ++ if ((s = socket(res->ai_family, SOCK_STREAM, proto)) < 0) { + freeaddrinfo(res); + i_errno = IESTREAMLISTEN; + return -1; +@@ -380,8 +386,14 @@ iperf_tcp_connect(struct iperf_test *test) + socklen_t optlen; + int saved_errno; + int rcvbuf_actual, sndbuf_actual; ++ int proto = 0; ++ ++#if defined(HAVE_IPPROTO_MPTCP) ++ if (test->mptcp) ++ proto = IPPROTO_MPTCP; ++#endif + +- s = create_socket(test->settings->domain, SOCK_STREAM, test->bind_address, test->bind_dev, test->bind_port, test->server_hostname, test->server_port, &server_res); ++ s = create_socket(test->settings->domain, SOCK_STREAM, proto, test->bind_address, test->bind_dev, test->bind_port, test->server_hostname, test->server_port, &server_res); + if (s < 0) { + i_errno = IESTREAMCONNECT; + return -1; +diff --git a/src/net.c b/src/net.c +index b693ea7fb..febf20885 100644 +--- a/src/net.c ++++ b/src/net.c +@@ -124,7 +124,7 @@ timeout_connect(int s, const struct sockaddr *name, socklen_t namelen, + + /* create a socket */ + int +-create_socket(int domain, int proto, const char *local, const char *bind_dev, int local_port, const char *server, int port, struct addrinfo **server_res_out) ++create_socket(int domain, int type, int proto, const char *local, const char *bind_dev, int local_port, const char *server, int port, struct addrinfo **server_res_out) + { + struct addrinfo hints, *local_res = NULL, *server_res = NULL; + int s, saved_errno; +@@ -133,14 +133,14 @@ create_socket(int domain, int proto, const char *local, const char *bind_dev, in + if (local) { + memset(&hints, 0, sizeof(hints)); + hints.ai_family = domain; +- hints.ai_socktype = proto; ++ hints.ai_socktype = type; + if ((gerror = getaddrinfo(local, NULL, &hints, &local_res)) != 0) + return -1; + } + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = domain; +- hints.ai_socktype = proto; ++ hints.ai_socktype = type; + snprintf(portstr, sizeof(portstr), "%d", port); + if ((gerror = getaddrinfo(server, portstr, &hints, &server_res)) != 0) { + if (local) +@@ -148,7 +148,7 @@ create_socket(int domain, int proto, const char *local, const char *bind_dev, in + return -1; + } + +- s = socket(server_res->ai_family, proto, 0); ++ s = socket(server_res->ai_family, type, proto); + if (s < 0) { + if (local) + freeaddrinfo(local_res); +@@ -238,7 +238,7 @@ netdial(int domain, int proto, const char *local, const char *bind_dev, int loca + struct addrinfo *server_res = NULL; + int s, saved_errno; + +- s = create_socket(domain, proto, local, bind_dev, local_port, server, port, &server_res); ++ s = create_socket(domain, proto, 0, local, bind_dev, local_port, server, port, &server_res); + if (s < 0) { + return -1; + } +diff --git a/src/net.h b/src/net.h +index 859c52cef..fb78d289b 100644 +--- a/src/net.h ++++ b/src/net.h +@@ -28,7 +28,7 @@ + #define __NET_H + + int timeout_connect(int s, const struct sockaddr *name, socklen_t namelen, int timeout); +-int create_socket(int domain, int proto, const char *local, const char *bind_dev, int local_port, const char *server, int port, struct addrinfo **server_res_out); ++int create_socket(int domain, int type, int proto, const char *local, const char *bind_dev, int local_port, const char *server, int port, struct addrinfo **server_res_out); + int netdial(int domain, int proto, const char *local, const char *bind_dev, int local_port, const char *server, int port, int timeout); + int netannounce(int domain, int proto, const char *local, const char *bind_dev, int port); + int Nread(int fd, char *buf, size_t count, int prot); diff --git a/iperf3/patches/add-sock5-proxy-tcp-support.patch b/iperf3/patches/add-sock5-proxy-tcp-support.patch new file mode 100644 index 000000000..4cb90879c --- /dev/null +++ b/iperf3/patches/add-sock5-proxy-tcp-support.patch @@ -0,0 +1,552 @@ +From 197d8ba733f0502985abb5b0a22bf9f71c2596a7 Mon Sep 17 00:00:00 2001 +From: David Bar-On +Date: Mon, 25 Mar 2024 22:11:49 +0200 +Subject: [PATCH] Add SOCKS5 Proxy support for TCP + +--- + src/iperf.h | 8 ++ + src/iperf_api.c | 250 ++++++++++++++++++++++++++++++++++++++++- + src/iperf_api.h | 13 ++- + src/iperf_client_api.c | 27 ++++- + src/iperf_error.c | 10 ++ + src/iperf_locale.c | 2 + + src/iperf_tcp.c | 22 +++- + 7 files changed, 323 insertions(+), 9 deletions(-) + +diff --git a/src/iperf.h b/src/iperf.h +index dc3c0d1df..9823dc180 100644 +--- a/src/iperf.h ++++ b/src/iperf.h +@@ -343,6 +343,14 @@ struct iperf_test + int timestamps; /* --timestamps */ + char *timestamp_format; + ++ char *socks5_host; /* --socks5 option */ ++ uint16_t socks5_port; /* --socks5 option optional value */ ++ char *socks5_username; /* --socks5 option optional value */ ++ char *socks5_password; /* --socks5 option optional value */ ++ char socks5_bind_atyp; /* from socks5 CONNECT response ATYP */ ++ char *socks5_bind_host; /* from socks5 CONNECT response BIND.ADDR*/ ++ uint16_t socks5_bind_port; /* from socks5 CONNECT response BIND.PORT */ ++ + char *json_output_string; /* rendered JSON output if json_output is set */ + /* Select related parameters */ + int max_fd; +diff --git a/src/iperf_api.c b/src/iperf_api.c +index 4765d4e97..ca47f708d 100644 +--- a/src/iperf_api.c ++++ b/src/iperf_api.c +@@ -115,7 +115,7 @@ usage() + void + usage_long(FILE *f) + { +- fprintf(f, usage_longstr, DEFAULT_NO_MSG_RCVD_TIMEOUT, UDP_RATE / (1024*1024), DEFAULT_PACING_TIMER, DURATION, DEFAULT_TCP_BLKSIZE / 1024, DEFAULT_UDP_BLKSIZE); ++ fprintf(f, usage_longstr, DEFAULT_NO_MSG_RCVD_TIMEOUT, UDP_RATE / (1024*1024), DEFAULT_PACING_TIMER, DURATION, DEFAULT_TCP_BLKSIZE / 1024, DEFAULT_UDP_BLKSIZE, SOCKS5_DEFAULT_PORT); + } + + +@@ -1100,6 +1100,7 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + {"version6", no_argument, NULL, '6'}, + {"tos", required_argument, NULL, 'S'}, + {"dscp", required_argument, NULL, OPT_DSCP}, ++ {"socks5", required_argument, NULL, OPT_SOCKS5}, + {"extra-data", required_argument, NULL, OPT_EXTRA_DATA}, + #if defined(HAVE_FLOWLABEL) + {"flowlabel", required_argument, NULL, 'L'}, +@@ -1157,7 +1158,7 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + char* comma; + #endif /* HAVE_CPU_AFFINITY */ + char* slash; +- char *p, *p1; ++ char *p, *p1, *p2; + struct xbind_entry *xbe; + double farg; + int rcv_timeout_in = 0; +@@ -1433,6 +1434,47 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + } + client_flag = 1; + break; ++ case OPT_SOCKS5: // Format: "[username:password@][:port]" ++ if (strlen(optarg) <= 0) { ++ i_errno = IESOCKS5HOST; ++ return -1; ++ } ++ p1 = strtok(optarg, "@"); // p1 -> user:password ++ if (p1 == NULL) { ++ i_errno = IESOCKS5HOST; ++ return -1; ++ } ++ p = strtok(NULL, "@"); // p -> host[:port] ++ if (p == NULL) { ++ p = p1; ++ p1 = NULL; ++ } ++ p2 = strtok(p, ":"); // parse host[:port] ++ if (strlen(p2) <= 0) { ++ i_errno = IESOCKS5HOST; ++ return -1; ++ } ++ test->socks5_host = strdup(p2); ++ p2 = strtok(NULL, ":"); ++ if (p2 && strlen(p2) > 0) { ++ test->socks5_port = atoi(p2); ++ } ++ if (p1) { // parse user:password ++ p2 = strtok(p1, ":"); ++ if (strlen(p2) <= 0 || strlen(p2) > 255) { ++ i_errno = IESOCKS5HOST; ++ return -1; ++ } ++ test->socks5_username = strdup(p2); ++ p2 = strtok(NULL, ":"); ++ if (!p2 || strlen(p2) <= 0 || strlen(p2) > 255) { ++ i_errno = IESOCKS5HOST; ++ return -1; ++ } ++ test->socks5_password = strdup(p2); ++ } ++ client_flag = 1; ++ break; + case OPT_EXTRA_DATA: + test->extra_data = strdup(optarg); + client_flag = 1; +@@ -1740,6 +1782,12 @@ iperf_parse_arguments(struct iperf_test *test, int argc, char **argv) + return -1; + } + ++ // SOCKS5 Proxy is supported only for TCP ++ if(test->role == 'c' && test->socks5_host && test->protocol->id != Ptcp) { ++ i_errno = IESOCKS5RTCPONLY; ++ return -1; ++ } ++ + if (blksize == 0) { + if (test->protocol->id == Pudp) + blksize = 0; /* try to dynamically determine from MSS */ +@@ -2943,6 +2991,12 @@ iperf_defaults(struct iperf_test *testp) + testp->stats_interval = testp->reporter_interval = 1; + testp->num_streams = 1; + ++ testp->socks5_host = NULL; ++ testp->socks5_port = SOCKS5_DEFAULT_PORT; ++ testp->socks5_username = NULL; ++ testp->socks5_password = NULL; ++ testp->socks5_bind_host = NULL; ++ + testp->settings->domain = AF_UNSPEC; + testp->settings->unit_format = 'a'; + testp->settings->socket_bufsize = 0; /* use autotuning */ +@@ -3100,6 +3154,14 @@ iperf_free_test(struct iperf_test *test) + free(test->remote_congestion_used); + if (test->timestamp_format) + free(test->timestamp_format); ++ if (test->socks5_host) ++ free(test->socks5_host); ++ if (test->socks5_username) ++ free(test->socks5_username); ++ if (test->socks5_password) ++ free(test->socks5_password); ++ if (test->socks5_bind_host) ++ free(test->socks5_bind_host); + if (test->omit_timer != NULL) + tmr_cancel(test->omit_timer); + if (test->timer != NULL) +@@ -3289,6 +3351,23 @@ iperf_reset_test(struct iperf_test *test) + free(test->extra_data); + test->extra_data = NULL; + } ++ if (test->socks5_host) { ++ free(test->socks5_host); ++ test->socks5_host = NULL; ++ } ++ test->socks5_port = SOCKS5_DEFAULT_PORT; ++ if (test->socks5_username) { ++ free(test->socks5_username); ++ test->socks5_username = NULL; ++ } ++ if (test->socks5_password) { ++ free(test->socks5_password); ++ test->socks5_password = NULL; ++ } ++ if (test->socks5_bind_host) { ++ free(test->socks5_bind_host); ++ test->socks5_bind_host = NULL; ++ } + + /* Free output line buffers, if any (on the server only) */ + struct iperf_textline *t; +@@ -4614,6 +4693,173 @@ iperf_add_stream(struct iperf_test *test, struct iperf_stream *sp) + } + } + ++/**************************************************************************/ ++ ++/* iperf_socks5_handshake ++ * ++ * Handshake with a SOCKS5 Proxy per RFC1928, RFC1929 ++ */ ++int ++iperf_socks5_handshake(struct iperf_test *test, int s) { ++ char req[1024]; ++ char res[1024]; ++ char selected_mthod; ++ char *p, *p1; ++ size_t len; ++ int ret; ++ uint16_t net_order_short; ++ ++ // Send method selection request [RFC1928] ++ p = req; ++ *p++ = 5; // VERSION ++ if (test->socks5_username) // Number of METHODs supported ++ *p++ = 2; ++ else ++ *p++ = 1; ++ *p++ = 0; // NO AUTHENTICATION REQUIRED ++ if (test->socks5_username) *p++ = 2; // USERNAME/PASSWORD ++ if (Nwrite(s, req, p - req, Ptcp) < 0) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Writing SOCKS5 auth methods message failed\n"); ++ return -1; ++ } ++ ++ // Receive selected method ++ if (Nread(s, res, 2, Ptcp) != 2) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Reading selected SOCKS5 method message failed\n"); ++ return -1; ++ } ++ ++ selected_mthod = res[1]; ++ if (res[0] != 5 || (selected_mthod != 0 && selected_mthod != 2)) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Ilegal SOCKS5 method selection response: version=%d, auth method=%d\n", res[0], selected_mthod); ++ return -1; ++ } ++ if (test->debug) { ++ iperf_printf(test, "SOCKS5 server selected authentication method %d\n", selected_mthod); ++ } ++ ++ // Send Username/Password request and receive the auth response [RFC1929] ++ if (selected_mthod == 2) { ++ p = req; ++ *p++ = 1; // VERSION ++ len = strlen(test->socks5_username); ++ *p++ = len; ++ memcpy(p, test->socks5_username, len); // USERNAME ++ p += len; ++ len = strlen(test->socks5_password); ++ *p++ = len; ++ memcpy(p, test->socks5_password, len); // PASSWORD ++ p += len; ++ ++ if (Nwrite(s, req, p - req, Ptcp) < 0) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Writing SOCKS5 Username/Password request message failed\n"); ++ return -1; ++ } ++ ++ if ((ret = Nread(s, res, 2, Ptcp)) != 2) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Reading SOCKS5 Username/Password response failed; Returned %d\n", ret); ++ return -1; ++ } ++ if (res[1] != 0) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "SOCKS5 Username/Password failed with error %d\n", res[1]); ++ return -1; ++ } ++ } ++ ++ // Send CONNECT request [RFC1928] ++ p = req; ++ *p++ = 5; // VERSION ++ *p++ = 1; // CMD = CONNECT ++ *p++ = 0; // RESERVED ++ *p++ = 3; // ATYPE = DOMAINNAME: ++ len = strlen(test->server_hostname); ++ if (len > 255) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "iperf3 host option length is limited to 255 chars when SOCKS5 is used\n"); ++ return -1; ++ } ++ *p++ = len; ++ memcpy(p, test->server_hostname, len); // ADDR ++ p += len; ++ net_order_short = htons(test->server_port); ++ p1 = (char *)&net_order_short; ++ *p++ = *p1++; // PORT ++ *p++ = *p1; ++ if (Nwrite(s, req, p - req, Ptcp) < 0) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Writing SOCKS5 CONNECT message failed\n"); ++ return -1; ++ } ++ ++ // Read CONNECT response [RFC1928] ++ if ((ret = Nread(s, res, 4, Ptcp)) != 4) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Reading SOCKS5 CONNECT response failed; Returned %d\n", ret); ++ return -1; ++ } ++ ++ if (res[0] != 5 || res[1] != 0 || res[2] != 0) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "SOCKS5 CONNECT failed with error %d\n", res[1]); ++ return -1; ++ } ++ ++ // Get BND.ADDR length ++ test->socks5_bind_atyp = res[3]; // ATYP ++ switch (test->socks5_bind_atyp) { ++ case 1: // IP V4 address ++ len = 4; ++ break; ++ case 3: // DOMAINNAME: ++ if ((ret = read(s, res, 1)) != 1) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Failed to read SOCKS5 CONNECT response BND.ADDR length; Returned %d\n", ret); ++ return -1; ++ } ++ len = (unsigned char)res[0]; ++ break; ++ case 4: // IP V6 address ++ len = 16; ++ break; ++ default: ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Illegal SOCKS5 CONNECT response ATYP %d\n", res[3]); ++ return -1; ++ } ++ // Read BND.ADDR ++ if ((ret = Nread(s, res, len, Ptcp)) != len) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Failed to read SOCKS5 detailes BND.ADDR; Returned %d\n", ret); ++ return -1; ++ } ++ res[len] = '\0'; ++ test->socks5_bind_host = strdup(res); ++ // Read BND.PORT ++ if ((ret = Nread(s, res, 2, Ptcp)) != 2) { ++ i_errno = IESOCKS5HANDSHAKE; ++ iperf_err(test, "Failed to read SOCKS5 detailes BND.PORT; Returned %d\n", ret); ++ return -1; ++ } ++ p1 = (char *)&net_order_short; ++ *p1++ = res[0]; ++ *p1 = res[1]; ++ test->socks5_bind_port = ntohs(net_order_short); ++ if (test->debug) { ++ iperf_printf(test, "SOCKS5 server BIND ADDR type=%d, PORT=%d\n", test->socks5_bind_atyp, test->socks5_bind_port); ++ } ++ ++ return 0; ++} ++ ++/**************************************************************************/ ++ ++ + /* This pair of routines gets inserted into the snd/rcv function pointers + ** when there's a -F flag. They handle the file stuff and call the real + ** snd/rcv functions, which have been saved in snd2/rcv2. +diff --git a/src/iperf_api.h b/src/iperf_api.h +index d2bbdfe96..01d63bf5e 100644 +--- a/src/iperf_api.h ++++ b/src/iperf_api.h +@@ -68,6 +68,7 @@ typedef atomic_uint_fast64_t atomic_iperf_size_t; + #define DEFAULT_PACING_TIMER 1000 + #define DEFAULT_NO_MSG_RCVD_TIMEOUT 120000 + #define MIN_NO_MSG_RCVD_TIMEOUT 100 ++#define SOCKS5_DEFAULT_PORT 1080 + + #define WARN_STR_LEN 128 + +@@ -100,7 +101,8 @@ typedef atomic_uint_fast64_t atomic_iperf_size_t; + #define OPT_RCV_TIMEOUT 27 + #define OPT_JSON_STREAM 28 + #define OPT_SND_TIMEOUT 29 + #define OPT_USE_PKCS1_PADDING 30 ++#define OPT_SOCKS5 31 + + /* states */ + #define TEST_START 1 +@@ -308,6 +310,12 @@ void iperf_free_stream(struct iperf_stream * sp); + */ + int iperf_common_sockopts(struct iperf_test *, int s); + ++/** ++ * iperf_socks5_handshake - handshake with a SOCKS5 Proxy per RFC1928, RFC1929 ++ * ++ */ ++int iperf_socks5_handshake(struct iperf_test *test, int s); ++ + int has_tcpinfo(void); + int has_tcpinfo_retransmits(void); + void save_tcpinfo(struct iperf_stream *sp, struct iperf_interval_results *irp); +@@ -419,6 +427,8 @@ enum { + IESNDTIMEOUT = 33, // Illegal message send timeout + IEUDPFILETRANSFER = 34, // Cannot transfer file using UDP + IESERVERAUTHUSERS = 35, // Cannot access authorized users file ++ IESOCKS5HOST = 36, // Illegal SOCKS5 host / creadentials ++ IESOCKS5RTCPONLY = 37, // SOCKS5 Proxy is supported only for TCP + /* Test errors */ + IENEWTEST = 100, // Unable to create a new test (check perror) + IEINITTEST = 101, // Test initialization failed (check perror) +@@ -473,8 +483,9 @@ enum { + IEPTHREADCANCEL=151, // Unable to cancel thread (check perror) + IEPTHREADJOIN=152, // Unable to join thread (check perror) + IEPTHREADATTRINIT=153, // Unable to initialize thread attribute (check perror) + IEPTHREADATTRDESTROY=154, // Unable to destroy thread attribute (check perror) + IEPTHREADSIGMASK=155, // Unable to initialize sub thread signal mask (check perror) ++ IESOCKS5HANDSHAKE = 156, // SOCKS5 Handshake with the server failed + /* Stream errors */ + IECREATESTREAM = 200, // Unable to create a new stream (check herror/perror) + IEINITSTREAM = 201, // Unable to initialize stream (check herror/perror) +diff --git a/src/iperf_client_api.c b/src/iperf_client_api.c +index 7ad4c939b..670e3521d 100644 +--- a/src/iperf_client_api.c ++++ b/src/iperf_client_api.c +@@ -385,6 +385,8 @@ iperf_connect(struct iperf_test *test) + { + int opt; + socklen_t len; ++ const char *connect_server; ++ int connect_port; + + if (NULL == test) + { +@@ -397,12 +399,20 @@ iperf_connect(struct iperf_test *test) + make_cookie(test->cookie); + + /* Create and connect the control channel */ +- if (test->ctrl_sck < 0) +- // Create the control channel using an ephemeral port +- test->ctrl_sck = netdial(test->settings->domain, Ptcp, test->bind_address, test->bind_dev, 0, test->server_hostname, test->server_port, test->settings->connect_timeout); + if (test->ctrl_sck < 0) { +- i_errno = IECONNECT; +- return -1; ++ if (test->socks5_host) { ++ connect_server = test->socks5_host; ++ connect_port = test->socks5_port; ++ } else { ++ connect_server = test->server_hostname; ++ connect_port = test->server_port; ++ } ++ // Create the control channel using an ephemeral port ++ test->ctrl_sck = netdial(test->settings->domain, Ptcp, test->bind_address, test->bind_dev, 0, connect_server, connect_port, test->settings->connect_timeout); ++ if (test->ctrl_sck < 0) { ++ i_errno = IECONNECT; ++ return -1; ++ } + } + + // set TCP_NODELAY for lower latency on control messages +@@ -421,6 +431,13 @@ iperf_connect(struct iperf_test *test) + } + #endif /* HAVE_TCP_USER_TIMEOUT */ + ++ /* socks5 proxy handshake */ ++ if (test->socks5_host) { ++ if (0 != iperf_socks5_handshake(test, test->ctrl_sck)) { ++ return -1; ++ } ++ } ++ + if (Nwrite(test->ctrl_sck, test->cookie, COOKIE_SIZE, Ptcp) < 0) { + i_errno = IESENDCOOKIE; + return -1; +diff --git a/src/iperf_error.c b/src/iperf_error.c +index 6426554cf..a0bbb6844 100644 +--- a/src/iperf_error.c ++++ b/src/iperf_error.c +@@ -216,6 +216,9 @@ iperf_strerror(int int_errno) + case IEUNIMP: + snprintf(errstr, len, "an option you are trying to set is not implemented yet"); + break; ++ case IESOCKS5HOST: ++ snprintf(errstr, len, "ilegal SOCKS5 host / creadentials"); ++ break; + case IEFILE: + snprintf(errstr, len, "unable to open -F file"); + perr = 1; +@@ -375,6 +378,9 @@ iperf_strerror(int int_errno) + case IEUDPFILETRANSFER: + snprintf(errstr, len, "cannot transfer file using UDP"); + break; ++ case IESOCKS5RTCPONLY: ++ snprintf(errstr, len, "SOCKS5 Proxy is supported only for TCP"); ++ break; + case IERVRSONLYRCVTIMEOUT: + snprintf(errstr, len, "client receive timeout is valid only in receiving mode"); + perr = 1; +@@ -507,6 +513,10 @@ iperf_strerror(int int_errno) + snprintf(errstr, len, "unable to destroy thread attributes"); + perr = 1; + break; ++ case IESOCKS5HANDSHAKE: ++ snprintf(errstr, len, "socks5 Handshake with the server failed"); ++ perr = 1; ++ break; + default: + snprintf(errstr, len, "int_errno=%d", int_errno); + perr = 1; +diff --git a/src/iperf_locale.c b/src/iperf_locale.c +index ae0f63a41..c8b9a71d1 100644 +--- a/src/iperf_locale.c ++++ b/src/iperf_locale.c +@@ -194,6 +194,8 @@ const char usage_longstr[] = "Usage: iperf3 [-s|-c host] [options]\n" + " --dscp N or --dscp val set the IP dscp value, either 0-63 or symbolic.\n" + " Numeric values can be specified in decimal,\n" + " octal and hex (see --tos above).\n" ++ " --socks5 [user:password@][:port] use SOCKS5 Proxy for TCP connections,\n" ++ " using no auth or user:password. Default Proxy port is %d \n" + #if defined(HAVE_FLOWLABEL) + " -L, --flowlabel N set the IPv6 flow label (only supported on Linux)\n" + #endif /* HAVE_FLOWLABEL */ +diff --git a/src/iperf_tcp.c b/src/iperf_tcp.c +index 184a1955e..515913581 100644 +--- a/src/iperf_tcp.c ++++ b/src/iperf_tcp.c +@@ -375,14 +375,24 @@ iperf_tcp_connect(struct iperf_test *test) + socklen_t optlen; + int saved_errno; + int rcvbuf_actual, sndbuf_actual; + int proto = 0; ++ const char *connect_server; ++ int connect_port; + + #if defined(HAVE_IPPROTO_MPTCP) + if (test->mptcp) + proto = IPPROTO_MPTCP; + #endif + +- s = create_socket(test->settings->domain, SOCK_STREAM, proto, test->bind_address, test->bind_dev, test->bind_port, test->server_hostname, test->server_port, &server_res); ++ if (test->socks5_host) { ++ connect_server = test->socks5_host; ++ connect_port = test->socks5_port; ++ } else { ++ connect_server = test->server_hostname; ++ connect_port = test->server_port; ++ } ++ ++ s = create_socket(test->settings->domain, SOCK_STREAM, proto, test->bind_address, test->bind_dev, test->bind_port, connect_server, connect_port, &server_res); + if (s < 0) { + i_errno = IESTREAMCONNECT; + return -1; +@@ -571,6 +581,16 @@ iperf_tcp_connect(struct iperf_test *test) + + freeaddrinfo(server_res); + ++ /* socks5 proxy handshake */ ++ if (test->socks5_host) { ++ if (0 != iperf_socks5_handshake(test, s)) { ++ saved_errno = errno; ++ close(s); ++ errno = saved_errno; ++ return -1; ++ } ++ } ++ + /* Send cookie for verification */ + if (Nwrite(s, test->cookie, COOKIE_SIZE, Ptcp) < 0) { + saved_errno = errno; diff --git a/iproute2/Makefile b/iproute2/Makefile new file mode 100644 index 000000000..ca6793d49 --- /dev/null +++ b/iproute2/Makefile @@ -0,0 +1,268 @@ +# +# Copyright (C) 2006-2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=iproute2 +PKG_VERSION:=6.12.0 +PKG_RELEASE:=2 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2 +PKG_HASH:=bbd141ef7b5d0127cc2152843ba61f274dc32814fa3e0f13e7d07a080bef53d9 +PKG_BUILD_PARALLEL:=1 +PKG_BUILD_DEPENDS:=iptables +PKG_LICENSE:=GPL-2.0 +PKG_CPE_ID:=cpe:/a:iproute2_project:iproute2 + +PKG_BUILD_FLAGS:=gc-sections lto + +include $(INCLUDE_DIR)/kernel.mk +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/nls.mk + +define Package/iproute2/Default + SECTION:=net + CATEGORY:=Network + URL:=http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2 + SUBMENU:=Routing and Redirection + MAINTAINER:=Russell Senior +endef + +define Package/ip-tiny +$(call Package/iproute2/Default) + TITLE:=Routing control utility (minimal) + VARIANT:=iptiny + DEFAULT_VARIANT:=1 + PROVIDES:=ip + ALTERNATIVES:=200:/sbin/ip:/usr/libexec/ip-tiny + DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/ip-full +$(call Package/iproute2/Default) + TITLE:=Routing control utility (full) + VARIANT:=ipfull + PROVIDES:=ip + ALTERNATIVES:=300:/sbin/ip:/usr/libexec/ip-full + DEPENDS:=+libnl-tiny +libbpf +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/tc-tiny +$(call Package/iproute2/Default) + TITLE:=Traffic control utility (minimal) + VARIANT:=tctiny + DEFAULT_VARIANT:=1 + PROVIDES:=tc + ALTERNATIVES:=200:/sbin/tc:/usr/libexec/tc-tiny + DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/tc-bpf +$(call Package/iproute2/Default) + TITLE:=Traffic control utility (bpf) + VARIANT:=tcbpf + PROVIDES:=tc + ALTERNATIVES:=300:/sbin/tc:/usr/libexec/tc-bpf + DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +endef + +define Package/tc-full +$(call Package/iproute2/Default) + TITLE:=Traffic control utility (full) + VARIANT:=tcfull + PROVIDES:=tc + ALTERNATIVES:=400:/sbin/tc:/usr/libexec/tc-full + DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +libxtables +endef + +define Package/genl +$(call Package/iproute2/Default) + TITLE:=General netlink utility frontend + DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/ip-bridge +$(call Package/iproute2/Default) + TITLE:=Bridge configuration utility from iproute2 + DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/ss +$(call Package/iproute2/Default) + TITLE:=Socket statistics utility + DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libbpf +kmod-netlink-diag +endef + +define Package/nstat +$(call Package/iproute2/Default) + TITLE:=Network statistics utility + DEPENDS:=+libnl-tiny +(PACKAGE_devlink||PACKAGE_rdma):libmnl +endef + +define Package/devlink +$(call Package/iproute2/Default) + TITLE:=Network devlink utility + DEPENDS:=+libmnl +endef + +define Package/rdma +$(call Package/iproute2/Default) + TITLE:=Network rdma utility + DEPENDS:=+libmnl +endef + +ifeq ($(BUILD_VARIANT),iptiny) + IP_CONFIG_TINY:=y + LIBBPF_FORCE:=off +endif + +ifeq ($(BUILD_VARIANT),ipfull) + HAVE_ELF:=y + LIBBPF_FORCE:=on +endif + +ifeq ($(BUILD_VARIANT),tctiny) + LIBBPF_FORCE:=off +endif + +ifeq ($(BUILD_VARIANT),tcbpf) + HAVE_ELF:=y + LIBBPF_FORCE:=on + SHARED_LIBS:=y +endif + +ifeq ($(BUILD_VARIANT),tcfull) + #enable iptables/xtables requirement only if tciptables variant is selected + TC_CONFIG_XT:=y + TC_CONFIG_XT_OLD:=y + TC_CONFIG_XT_OLD_H:=y + TC_CONFIG_IPSET:=y + HAVE_ELF:=y + LIBBPF_FORCE:=on + SHARED_LIBS:=y +else + #disable iptables requirement by default + TC_CONFIG_XT:=n + TC_CONFIG_XT_OLD:=n + TC_CONFIG_XT_OLD_H:=n + TC_CONFIG_IPSET:=n +endif + +ifdef CONFIG_PACKAGE_devlink + HAVE_MNL:=y +endif + +ifdef CONFIG_PACKAGE_rdma + HAVE_MNL:=y +endif + +define Build/Configure + echo "static const char SNAPSHOT[] = \"$(PKG_VERSION)-$(PKG_RELEASE)-openwrt\";" \ + > $(PKG_BUILD_DIR)/include/SNAPSHOT.h +endef + +TARGET_LDFLAGS += -Wl,--as-needed +TARGET_CPPFLAGS += -I$(STAGING_DIR)/usr/include/libnl-tiny + +MAKE_FLAGS += \ + KERNEL_INCLUDE="$(LINUX_DIR)/include/uapi" \ + SHARED_LIBS=$(SHARED_LIBS) \ + IP_CONFIG_TINY=$(IP_CONFIG_TINY) \ + BUILD_VARIANT=$(BUILD_VARIANT) \ + LIBBPF_FORCE=$(LIBBPF_FORCE) \ + HAVE_ELF=$(HAVE_ELF) \ + HAVE_MNL=$(HAVE_MNL) \ + HAVE_CAP=$(HAVE_CAP) \ + HAVE_TIRPC=n \ + IPT_LIB_DIR=/usr/lib/iptables \ + XT_LIB_DIR=/usr/lib/iptables \ + TC_CONFIG_XT=$(TC_CONFIG_XT) \ + TC_CONFIG_XT_OLD=$(TC_CONFIG_XT_OLD) \ + TC_CONFIG_XT_OLD_H=$(TC_CONFIG_XT_OLD_H) \ + TC_CONFIG_IPSET=$(TC_CONFIG_IPSET) \ + FPIC="$(FPIC)" \ + $(if $(findstring c,$(OPENWRT_VERBOSE)),V=1,V='') + +define Build/Compile + +$(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) $(MAKE_FLAGS) +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include/iproute2 + $(CP) $(PKG_BUILD_DIR)/include/bpf_elf.h $(1)/usr/include/iproute2 + $(CP) $(PKG_BUILD_DIR)/include/{libgenl,libnetlink}.h $(1)/usr/include/ + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_BUILD_DIR)/lib/libnetlink.a $(1)/usr/lib/ +endef + +define Package/ip-tiny/install + $(INSTALL_DIR) $(1)/usr/libexec + $(INSTALL_BIN) $(PKG_BUILD_DIR)/ip/ip $(1)/usr/libexec/ip-tiny +endef + +define Package/ip-full/install + $(INSTALL_DIR) $(1)/usr/libexec + $(INSTALL_BIN) $(PKG_BUILD_DIR)/ip/ip $(1)/usr/libexec/ip-full +endef + +define Package/tc-tiny/install + $(INSTALL_DIR) $(1)/usr/libexec + $(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-tiny +endef + +define Package/tc-bpf/install + $(INSTALL_DIR) $(1)/usr/libexec + $(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-bpf +endef + +define Package/tc-full/install + $(INSTALL_DIR) $(1)/usr/libexec + $(INSTALL_BIN) $(PKG_BUILD_DIR)/tc/tc $(1)/usr/libexec/tc-full +endef + +define Package/genl/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/genl/genl $(1)/usr/sbin/ +endef + +define Package/ip-bridge/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/bridge/bridge $(1)/usr/sbin/ +endef + +define Package/ss/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/misc/ss $(1)/usr/sbin/ +endef + +define Package/nstat/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/misc/nstat $(1)/usr/sbin/ +endef + +define Package/devlink/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/devlink/devlink $(1)/usr/sbin/ +endef + +define Package/rdma/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/rdma/rdma $(1)/usr/sbin/ +endef + +$(eval $(call BuildPackage,ip-tiny)) +$(eval $(call BuildPackage,ip-full)) +$(eval $(call BuildPackage,tc-tiny)) +$(eval $(call BuildPackage,tc-bpf)) +$(eval $(call BuildPackage,tc-full)) +$(eval $(call BuildPackage,genl)) +$(eval $(call BuildPackage,ip-bridge)) +$(eval $(call BuildPackage,ss)) +$(eval $(call BuildPackage,nstat)) +$(eval $(call BuildPackage,devlink)) +$(eval $(call BuildPackage,rdma)) diff --git a/iproute2/patches/013-endian.h.patch b/iproute2/patches/013-endian.h.patch new file mode 100644 index 000000000..a81c3b5ee --- /dev/null +++ b/iproute2/patches/013-endian.h.patch @@ -0,0 +1,22 @@ +From c8b3ecc22ed0edaf0259eaf7d1a5c04f300ad6e4 Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Thu, 12 Dec 2024 11:24:18 -0800 +Subject: [PATCH] libnetlink: add missing endian.h + +Need endian.h to get htobe64 with musl. + +Signed-off-by: Stephen Hemminger +--- + include/libnetlink.h | 1 + + 1 file changed, 1 insertion(+) + +--- a/include/libnetlink.h ++++ b/include/libnetlink.h +@@ -4,6 +4,7 @@ + + #include + #include ++#include + #include + #include + #include diff --git a/iproute2/patches/014-basename.patch b/iproute2/patches/014-basename.patch new file mode 100644 index 000000000..f98238ec6 --- /dev/null +++ b/iproute2/patches/014-basename.patch @@ -0,0 +1,29 @@ +From fa3949b792e275f75d7d6200dc2036ef7fff8816 Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Thu, 12 Dec 2024 11:21:56 -0800 +Subject: [PATCH] rdma: add missing header for basename + +The function basename prototype is in libgen.h +Fixes build on musl + +Signed-off-by: Stephen Hemminger +--- + rdma/rdma.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/rdma/rdma.h ++++ b/rdma/rdma.h +@@ -10,11 +10,12 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include + #include +-#include + #include + + #include "list.h" diff --git a/iproute2/patches/015-limits.h.patch b/iproute2/patches/015-limits.h.patch new file mode 100644 index 000000000..e212b88eb --- /dev/null +++ b/iproute2/patches/015-limits.h.patch @@ -0,0 +1,84 @@ +From 7e23da91fca6e5dedeb32a7d308cf20982e897c3 Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Tue, 10 Dec 2024 13:38:08 -0800 +Subject: [PATCH] ip: rearrange and prune header files + +The recent report of issues with missing limits.h impacting musl +suggested looking at what files are and are not included in ip code. + +The standard practice is to put standard headers first, then system, +then local headers. Used iwyu to get suggestions about missing +and extraneous headers. + +Signed-off-by: Stephen Hemminger +--- + ip/iplink.c | 13 +++++-------- + ip/ipnetns.c | 19 +++++++++---------- + 2 files changed, 14 insertions(+), 18 deletions(-) + +--- a/ip/iplink.c ++++ b/ip/iplink.c +@@ -11,17 +11,14 @@ + #include + #include + #include ++#include ++#include ++#include ++ + #include ++#include + #include +-#include + #include +-#include +-#include +-#include +-#include +-#include +-#include +-#include + + #include "rt_names.h" + #include "utils.h" +--- a/ip/ipnetns.c ++++ b/ip/ipnetns.c +@@ -1,21 +1,21 @@ + /* SPDX-License-Identifier: GPL-2.0 */ + #define _ATFILE_SOURCE +-#include +-#include +-#include +-#include +-#include +-#include +-#include ++ + #include ++#include + #include +-#include + #include + #include + #include + #include + #include +-#include ++#include ++ ++#include ++#include ++#include ++#include ++#include + + #include + +@@ -23,7 +23,6 @@ + #include "list.h" + #include "ip_common.h" + #include "namespace.h" +-#include "json_print.h" + + static int usage(void) + { diff --git a/iproute2/patches/016-limits.h.patch b/iproute2/patches/016-limits.h.patch new file mode 100644 index 000000000..c20404f6f --- /dev/null +++ b/iproute2/patches/016-limits.h.patch @@ -0,0 +1,26 @@ +From f982f30e166a02e09097de05129449031ba51f76 Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Thu, 12 Dec 2024 11:29:44 -0800 +Subject: [PATCH] cg_map: use limits.h + +Prefer limits.h from system headers over linux/limits.h +Fixes build with musl. + +Signed-off-by: Stephen Hemminger +--- + lib/cg_map.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/lib/cg_map.c ++++ b/lib/cg_map.c +@@ -9,8 +9,9 @@ + #include + #include + #include ++#include ++ + #include +-#include + #include + + #include "cg_map.h" diff --git a/iproute2/patches/017-linux-limits.patch b/iproute2/patches/017-linux-limits.patch new file mode 100644 index 000000000..0c5d13840 --- /dev/null +++ b/iproute2/patches/017-linux-limits.patch @@ -0,0 +1,178 @@ +From ac547ad027e3d4e283202ecb487cf54707234491 Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Thu, 12 Dec 2024 14:15:59 -0800 +Subject: [PATCH] flower: replace XATTR_SIZE_MAX + +The flower tc parser was using XATTR_SIZE_MAX from linux/limits.h, +but this constant is intended to before extended filesystem attributes +not for TC. Replace it with a local define. + +This fixes issue on systems with musl and XATTR_SIZE_MAX is not +defined in limits.h there. + +Signed-off-by: Stephen Hemminger +--- + tc/f_flower.c | 37 ++++++++++++++++++++----------------- + 1 file changed, 20 insertions(+), 17 deletions(-) + +--- a/tc/f_flower.c ++++ b/tc/f_flower.c +@@ -10,7 +10,7 @@ + #include + #include + #include +-#include ++ + #include + #include + #include +@@ -22,6 +22,9 @@ + #include "tc_util.h" + #include "rt_names.h" + ++/* maximum length of options string */ ++#define FLOWER_OPTS_MAX 4096 ++ + #ifndef IPPROTO_L2TP + #define IPPROTO_L2TP 115 + #endif +@@ -1252,7 +1255,7 @@ static int flower_check_enc_opt_key(char + + static int flower_parse_enc_opts_geneve(char *str, struct nlmsghdr *n) + { +- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; ++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; + int data_len, key_len, mask_len, err; + char *token, *slash; + struct rtattr *nest; +@@ -1265,7 +1268,7 @@ static int flower_parse_enc_opts_geneve( + if (slash) + *slash = '\0'; + +- if ((key_len + strlen(token) > XATTR_SIZE_MAX) || ++ if ((key_len + strlen(token) > FLOWER_OPTS_MAX) || + flower_check_enc_opt_key(token)) + return -1; + +@@ -1275,7 +1278,7 @@ static int flower_parse_enc_opts_geneve( + + if (!slash) { + /* Pad out mask when not provided */ +- if (mask_len + strlen(token) > XATTR_SIZE_MAX) ++ if (mask_len + strlen(token) > FLOWER_OPTS_MAX) + return -1; + + data_len = strlen(rindex(token, ':')); +@@ -1288,7 +1291,7 @@ static int flower_parse_enc_opts_geneve( + continue; + } + +- if (mask_len + strlen(slash + 1) > XATTR_SIZE_MAX) ++ if (mask_len + strlen(slash + 1) > FLOWER_OPTS_MAX) + return -1; + + strcpy(&mask[mask_len], slash + 1); +@@ -1318,7 +1321,7 @@ static int flower_parse_enc_opts_geneve( + + static int flower_parse_enc_opts_vxlan(char *str, struct nlmsghdr *n) + { +- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; ++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; + struct rtattr *nest; + char *slash; + int err; +@@ -1326,14 +1329,14 @@ static int flower_parse_enc_opts_vxlan(c + slash = strchr(str, '/'); + if (slash) { + *slash++ = '\0'; +- if (strlen(slash) > XATTR_SIZE_MAX) ++ if (strlen(slash) > FLOWER_OPTS_MAX) + return -1; + strcpy(mask, slash); + } else { + strcpy(mask, "0xffffffff"); + } + +- if (strlen(str) > XATTR_SIZE_MAX) ++ if (strlen(str) > FLOWER_OPTS_MAX) + return -1; + strcpy(key, str); + +@@ -1355,7 +1358,7 @@ static int flower_parse_enc_opts_vxlan(c + + static int flower_parse_enc_opts_erspan(char *str, struct nlmsghdr *n) + { +- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; ++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; + struct rtattr *nest; + char *slash; + int err; +@@ -1364,7 +1367,7 @@ static int flower_parse_enc_opts_erspan( + slash = strchr(str, '/'); + if (slash) { + *slash++ = '\0'; +- if (strlen(slash) > XATTR_SIZE_MAX) ++ if (strlen(slash) > FLOWER_OPTS_MAX) + return -1; + strcpy(mask, slash); + } else { +@@ -1376,7 +1379,7 @@ static int flower_parse_enc_opts_erspan( + strcpy(mask + index, ":0xffffffff:0xff:0xff"); + } + +- if (strlen(str) > XATTR_SIZE_MAX) ++ if (strlen(str) > FLOWER_OPTS_MAX) + return -1; + strcpy(key, str); + +@@ -1398,7 +1401,7 @@ static int flower_parse_enc_opts_erspan( + + static int flower_parse_enc_opts_gtp(char *str, struct nlmsghdr *n) + { +- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; ++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; + struct rtattr *nest; + char *slash; + int err; +@@ -1406,13 +1409,13 @@ static int flower_parse_enc_opts_gtp(cha + slash = strchr(str, '/'); + if (slash) { + *slash++ = '\0'; +- if (strlen(slash) > XATTR_SIZE_MAX) ++ if (strlen(slash) > FLOWER_OPTS_MAX) + return -1; + strcpy(mask, slash); + } else + strcpy(mask, "ff:ff"); + +- if (strlen(str) > XATTR_SIZE_MAX) ++ if (strlen(str) > FLOWER_OPTS_MAX) + return -1; + strcpy(key, str); + +@@ -1433,7 +1436,7 @@ static int flower_parse_enc_opts_gtp(cha + + static int flower_parse_enc_opts_pfcp(char *str, struct nlmsghdr *n) + { +- char key[XATTR_SIZE_MAX], mask[XATTR_SIZE_MAX]; ++ char key[FLOWER_OPTS_MAX], mask[FLOWER_OPTS_MAX]; + struct rtattr *nest; + char *slash; + int err; +@@ -1442,14 +1445,14 @@ static int flower_parse_enc_opts_pfcp(ch + slash = strchr(str, '/'); + if (slash) { + *slash++ = '\0'; +- if (strlen(slash) > XATTR_SIZE_MAX) ++ if (strlen(slash) > FLOWER_OPTS_MAX) + return -1; + strcpy(mask, slash); + } else { + strcpy(mask, "ff:ffffffffffffffff"); + } + +- if (strlen(str) > XATTR_SIZE_MAX) ++ if (strlen(str) > FLOWER_OPTS_MAX) + return -1; + strcpy(key, str); + diff --git a/iproute2/patches/018-linux-limits.patch b/iproute2/patches/018-linux-limits.patch new file mode 100644 index 000000000..8c2669acd --- /dev/null +++ b/iproute2/patches/018-linux-limits.patch @@ -0,0 +1,37 @@ +From 458dce5d0431f0589aca1bc841904b5d1db3bbce Mon Sep 17 00:00:00 2001 +From: Stephen Hemminger +Date: Thu, 12 Dec 2024 14:18:35 -0800 +Subject: [PATCH] uapi: remove no longer used linux/limits.h + +Code is now using limits.h instead. + +Signed-off-by: Stephen Hemminger +--- + include/uapi/linux/limits.h | 21 --------------------- + 1 file changed, 21 deletions(-) + delete mode 100644 include/uapi/linux/limits.h + +--- a/include/uapi/linux/limits.h ++++ /dev/null +@@ -1,21 +0,0 @@ +-/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +-#ifndef _LINUX_LIMITS_H +-#define _LINUX_LIMITS_H +- +-#define NR_OPEN 1024 +- +-#define NGROUPS_MAX 65536 /* supplemental group IDs are available */ +-#define ARG_MAX 131072 /* # bytes of args + environ for exec() */ +-#define LINK_MAX 127 /* # links a file may have */ +-#define MAX_CANON 255 /* size of the canonical input queue */ +-#define MAX_INPUT 255 /* size of the type-ahead buffer */ +-#define NAME_MAX 255 /* # chars in a file name */ +-#define PATH_MAX 4096 /* # chars in a path name including nul */ +-#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */ +-#define XATTR_NAME_MAX 255 /* # chars in an extended attribute name */ +-#define XATTR_SIZE_MAX 65536 /* size of an extended attribute value (64k) */ +-#define XATTR_LIST_MAX 65536 /* size of extended attribute namelist (64k) */ +- +-#define RTSIG_MAX 32 +- +-#endif diff --git a/iproute2/patches/110-darwin_fixes.patch b/iproute2/patches/110-darwin_fixes.patch new file mode 100644 index 000000000..06ae59f8b --- /dev/null +++ b/iproute2/patches/110-darwin_fixes.patch @@ -0,0 +1,59 @@ +--- a/netem/maketable.c ++++ b/netem/maketable.c +@@ -11,7 +11,9 @@ + #include + #include + #include ++#if !defined(__APPLE__) && !defined(__FreeBSD__) + #include ++#endif + #include + #include + #include +--- a/netem/normal.c ++++ b/netem/normal.c +@@ -9,8 +9,12 @@ + #include + #include + ++#if !defined(__APPLE__) && !defined(__FreeBSD__) + #include + #include ++#else ++#define NETEM_DIST_SCALE 8192 ++#endif + + #define TABLESIZE 16384 + #define TABLEFACTOR NETEM_DIST_SCALE +--- a/netem/pareto.c ++++ b/netem/pareto.c +@@ -8,8 +8,12 @@ + #include + #include + ++#if !defined(__APPLE__) && !defined(__FreeBSD__) + #include + #include ++#else ++#define NETEM_DIST_SCALE 8192 ++#endif + + static const double a=3.0; + #define TABLESIZE 16384 +--- a/netem/paretonormal.c ++++ b/netem/paretonormal.c +@@ -15,10 +15,13 @@ + #include + #include + #include ++#if !defined(__APPLE__) && !defined(__FreeBSD__) + #include +- + #include + #include ++#else ++#define NETEM_DIST_SCALE 8192 ++#endif + + #define TABLESIZE 16384 + #define TABLEFACTOR NETEM_DIST_SCALE diff --git a/iproute2/patches/115-add-config-xtlibdir.patch b/iproute2/patches/115-add-config-xtlibdir.patch new file mode 100644 index 000000000..38448e6cd --- /dev/null +++ b/iproute2/patches/115-add-config-xtlibdir.patch @@ -0,0 +1,12 @@ +--- a/tc/Makefile ++++ b/tc/Makefile +@@ -107,6 +107,9 @@ CFLAGS += -DCONFIG_GACT -DCONFIG_GACT_PR + ifneq ($(IPT_LIB_DIR),) + CFLAGS += -DIPT_LIB_DIR=\"$(IPT_LIB_DIR)\" + endif ++ifneq ($(XT_LIB_DIR),) ++ CFLAGS += -DXT_LIB_DIR=\"$(XT_LIB_DIR)\" ++endif + + LEX := flex + CFLAGS += -DYY_NO_INPUT diff --git a/iproute2/patches/120-no_arpd_ifstat_rtacct_lnstat.patch b/iproute2/patches/120-no_arpd_ifstat_rtacct_lnstat.patch new file mode 100644 index 000000000..bb6a8d018 --- /dev/null +++ b/iproute2/patches/120-no_arpd_ifstat_rtacct_lnstat.patch @@ -0,0 +1,20 @@ +--- a/misc/Makefile ++++ b/misc/Makefile +@@ -2,13 +2,13 @@ + SSOBJ=ss.o ssfilter_check.o ssfilter.tab.o + LNSTATOBJ=lnstat.o lnstat_util.o + +-TARGETS=ss nstat ifstat rtacct lnstat ++TARGETS=ss nstat + + include ../config.mk + +-ifeq ($(HAVE_BERKELEY_DB),y) +- TARGETS += arpd +-endif ++#ifeq ($(HAVE_BERKELEY_DB),y) ++# TARGETS += arpd ++#endif + + all: $(TARGETS) + diff --git a/iproute2/patches/130-no_netem_tipc_dcb_man_vdpa.patch b/iproute2/patches/130-no_netem_tipc_dcb_man_vdpa.patch new file mode 100644 index 000000000..7f946070f --- /dev/null +++ b/iproute2/patches/130-no_netem_tipc_dcb_man_vdpa.patch @@ -0,0 +1,14 @@ +--- a/Makefile ++++ b/Makefile +@@ -69,9 +69,9 @@ WFLAGS += -Wmissing-declarations -Wold-s + CFLAGS := $(WFLAGS) $(CCOPTS) -I../include -I../include/uapi $(DEFINES) $(CFLAGS) + YACCFLAGS = -d -t -v + +-SUBDIRS=lib ip tc bridge misc netem genl man ++SUBDIRS=lib ip tc bridge misc genl + ifeq ($(HAVE_MNL),y) +-SUBDIRS += tipc devlink rdma dcb vdpa ++SUBDIRS += devlink rdma + endif + + LIBNETLINK=../lib/libutil.a ../lib/libnetlink.a diff --git a/iproute2/patches/140-allow_pfifo_fast.patch b/iproute2/patches/140-allow_pfifo_fast.patch new file mode 100644 index 000000000..8f5a7d352 --- /dev/null +++ b/iproute2/patches/140-allow_pfifo_fast.patch @@ -0,0 +1,9 @@ +--- a/tc/q_fifo.c ++++ b/tc/q_fifo.c +@@ -90,5 +90,6 @@ struct qdisc_util pfifo_head_drop_qdisc_ + + struct qdisc_util pfifo_fast_qdisc_util = { + .id = "pfifo_fast", ++ .parse_qopt = fifo_parse_opt, + .print_qopt = prio_print_opt, + }; diff --git a/iproute2/patches/140-keep_libmnl_optional.patch b/iproute2/patches/140-keep_libmnl_optional.patch new file mode 100644 index 000000000..48a4ae751 --- /dev/null +++ b/iproute2/patches/140-keep_libmnl_optional.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -368,7 +368,7 @@ check_tirpc() + + check_mnl() + { +- if ${PKG_CONFIG} libmnl --exists; then ++ if [ "${HAVE_MNL}" = "y" ] && ${PKG_CONFIG} libmnl --exists; then + echo "HAVE_MNL:=y" >>$CONFIG + echo "yes" + diff --git a/iproute2/patches/145-keep_libelf_optional.patch b/iproute2/patches/145-keep_libelf_optional.patch new file mode 100644 index 000000000..99b9d326f --- /dev/null +++ b/iproute2/patches/145-keep_libelf_optional.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -217,7 +217,7 @@ EOF + + check_elf() + { +- if ${PKG_CONFIG} libelf --exists; then ++ if [ "${HAVE_ELF}" = "y" ] && ${PKG_CONFIG} libelf --exists; then + echo "HAVE_ELF:=y" >>$CONFIG + echo "yes" + diff --git a/iproute2/patches/150-keep_libcap_optional.patch b/iproute2/patches/150-keep_libcap_optional.patch new file mode 100644 index 000000000..49873f87b --- /dev/null +++ b/iproute2/patches/150-keep_libcap_optional.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -427,7 +427,7 @@ EOF + + check_cap() + { +- if ${PKG_CONFIG} libcap --exists; then ++ if [ "${HAVE_CAP}" = "y" ] && ${PKG_CONFIG} libcap --exists; then + echo "HAVE_CAP:=y" >>$CONFIG + echo "yes" + diff --git a/iproute2/patches/155-keep_tirpc_optional.patch b/iproute2/patches/155-keep_tirpc_optional.patch new file mode 100644 index 000000000..9e5e4330c --- /dev/null +++ b/iproute2/patches/155-keep_tirpc_optional.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -355,7 +355,7 @@ check_selinux() + + check_tirpc() + { +- if ${PKG_CONFIG} libtirpc --exists; then ++ if [ "${HAVE_TIRPC}" = "y" ] && ${PKG_CONFIG} libtirpc --exists; then + echo "HAVE_RPC:=y" >>$CONFIG + echo "yes" + diff --git a/iproute2/patches/160-libnetlink-pic.patch b/iproute2/patches/160-libnetlink-pic.patch new file mode 100644 index 000000000..145ec7a9e --- /dev/null +++ b/iproute2/patches/160-libnetlink-pic.patch @@ -0,0 +1,11 @@ +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -1,7 +1,7 @@ + # SPDX-License-Identifier: GPL-2.0 + include ../config.mk + +-CFLAGS += -fPIC ++CFLAGS += $(FPIC) + + UTILOBJ = utils.o utils_math.o rt_names.o ll_map.o ll_types.o ll_proto.o ll_addr.o \ + inet_proto.o namespace.o json_writer.o json_print.o json_print_math.o \ diff --git a/iproute2/patches/170-ip_tiny.patch b/iproute2/patches/170-ip_tiny.patch new file mode 100644 index 000000000..149bcd2af --- /dev/null +++ b/iproute2/patches/170-ip_tiny.patch @@ -0,0 +1,108 @@ +--- a/ip/Makefile ++++ b/ip/Makefile +@@ -19,6 +19,13 @@ RTMONOBJ=rtmon.o + + include ../config.mk + ++STATIC_SYM_FILTER:= ++ifeq ($(IP_CONFIG_TINY),y) ++ STATIC_SYM_FILTER:=iplink_can.c iplink_ipoib.c iplink_vxlan.c ++ CFLAGS += -DIPROUTE2_TINY ++endif ++STATIC_SYM_SOURCES:=$(filter-out $(STATIC_SYM_FILTER),$(wildcard *.c)) ++ + ALLOBJ=$(IPOBJ) $(RTMONOBJ) + SCRIPTS=routel + TARGETS=ip rtmon +@@ -48,7 +55,7 @@ else + + ip: static-syms.o + static-syms.o: static-syms.h +-static-syms.h: $(wildcard *.c) ++static-syms.h: $(STATIC_SYM_SOURCES) + files="$^" ; \ + for s in `grep -B 3 '\ +Date: Thu, 30 May 2013 11:54:04 +0200 +Subject: [PATCH] add support for dropping with FAILED_POLICY + +--- + include/linux/fib_rules.h | 4 ++++ + include/linux/rtnetlink.h | 1 + + ip/rtm_map.c | 4 ++++ + 3 files changed, 9 insertions(+) + +--- a/ip/rtm_map.c ++++ b/ip/rtm_map.c +@@ -49,6 +49,8 @@ char *rtnl_rtntype_n2a(int id, char *buf + return "nat"; + case RTN_XRESOLVE: + return "xresolve"; ++ case RTN_FAILED_POLICY: ++ return "failed_policy"; + default: + snprintf(buf, len, "%d", id); + return buf; +@@ -84,6 +86,8 @@ int rtnl_rtntype_a2n(int *id, char *arg) + res = RTN_UNICAST; + else if (strcmp(arg, "throw") == 0) + res = RTN_THROW; ++ else if (strcmp(arg, "failed_policy") == 0) ++ res = RTN_FAILED_POLICY; + else { + res = strtoul(arg, &end, 0); + if (!end || end == arg || *end || res > 255) +--- a/include/uapi/linux/rtnetlink.h ++++ b/include/uapi/linux/rtnetlink.h +@@ -265,6 +265,7 @@ enum { + RTN_THROW, /* Not in this table */ + RTN_NAT, /* Translate this address */ + RTN_XRESOLVE, /* Use external resolver */ ++ RTN_FAILED_POLICY, /* Source address failed policy */ + __RTN_MAX + }; + diff --git a/iproute2/patches/190-fix-nls-rpath-link.patch b/iproute2/patches/190-fix-nls-rpath-link.patch new file mode 100644 index 000000000..545075fd8 --- /dev/null +++ b/iproute2/patches/190-fix-nls-rpath-link.patch @@ -0,0 +1,20 @@ +--- a/configure ++++ b/configure +@@ -241,7 +241,7 @@ int main(int argc, char **argv) { + } + EOF + +- $CC -o $TMPDIR/libbpf_test $TMPDIR/libbpf_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS >/dev/null 2>&1 ++ $CC -o $TMPDIR/libbpf_test $TMPDIR/libbpf_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS $LDFLAGS >/dev/null 2>&1 + local ret=$? + + rm -f $TMPDIR/libbpf_test.c $TMPDIR/libbpf_test +@@ -259,7 +259,7 @@ int main(int argc, char **argv) { + } + EOF + +- $CC -o $TMPDIR/libbpf_sec_test $TMPDIR/libbpf_sec_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS >/dev/null 2>&1 ++ $CC -o $TMPDIR/libbpf_sec_test $TMPDIR/libbpf_sec_test.c $LIBBPF_CFLAGS $LIBBPF_LDLIBS $LDFLAGS >/dev/null 2>&1 + local ret=$? + + rm -f $TMPDIR/libbpf_sec_test.c $TMPDIR/libbpf_sec_test diff --git a/iproute2/patches/195-build_variant_ip_tc.patch b/iproute2/patches/195-build_variant_ip_tc.patch new file mode 100644 index 000000000..6ecf5568b --- /dev/null +++ b/iproute2/patches/195-build_variant_ip_tc.patch @@ -0,0 +1,22 @@ +--- a/ip/Makefile ++++ b/ip/Makefile +@@ -28,7 +28,7 @@ STATIC_SYM_SOURCES:=$(filter-out $(STATI + + ALLOBJ=$(IPOBJ) $(RTMONOBJ) + SCRIPTS=routel +-TARGETS=ip rtmon ++TARGETS=$(findstring ip,$(BUILD_VARIANT)) rtmon + + all: $(TARGETS) $(SCRIPTS) + +--- a/tc/Makefile ++++ b/tc/Makefile +@@ -120,7 +120,7 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc + $(QUIET_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -shared -fpic $< -o $@ + + +-all: tc $(TCSO) ++all: $(findstring tc,$(BUILD_VARIANT)) $(TCSO) + + tc: $(TCOBJ) $(LIBNETLINK) libtc.a + $(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) -o $@ diff --git a/iproute2/patches/200-drop_libbsd_dependency.patch b/iproute2/patches/200-drop_libbsd_dependency.patch new file mode 100644 index 000000000..38193be15 --- /dev/null +++ b/iproute2/patches/200-drop_libbsd_dependency.patch @@ -0,0 +1,19 @@ +--- a/configure ++++ b/configure +@@ -413,14 +413,8 @@ EOF + if $CC -I$INCLUDE -o $TMPDIR/strtest $TMPDIR/strtest.c >/dev/null 2>&1; then + echo "no" + else +- if ${PKG_CONFIG} libbsd --exists; then +- echo 'CFLAGS += -DHAVE_LIBBSD' "$(${PKG_CONFIG} libbsd --cflags)" >>$CONFIG +- echo 'LDLIBS +=' "$(${PKG_CONFIG} libbsd --libs)" >> $CONFIG +- echo "no" +- else +- echo 'CFLAGS += -DNEED_STRLCPY' >>$CONFIG +- echo "yes" +- fi ++ echo 'CFLAGS += -DNEED_STRLCPY' >>$CONFIG ++ echo "yes" + fi + rm -f $TMPDIR/strtest.c $TMPDIR/strtest + } diff --git a/iproute2/patches/300-selinux-configurable.patch b/iproute2/patches/300-selinux-configurable.patch new file mode 100644 index 000000000..9f07d3176 --- /dev/null +++ b/iproute2/patches/300-selinux-configurable.patch @@ -0,0 +1,11 @@ +--- a/configure ++++ b/configure +@@ -342,7 +342,7 @@ check_libbpf() + check_selinux() + # SELinux is a compile time option in the ss utility + { +- if ${PKG_CONFIG} libselinux --exists; then ++ if [ "${HAVE_SELINUX}" = "y" ] && ${PKG_CONFIG} libselinux --exists; then + echo "HAVE_SELINUX:=y" >>$CONFIG + echo "yes" + diff --git a/libbpf/Makefile b/libbpf/Makefile deleted file mode 100644 index 862b075a3..000000000 --- a/libbpf/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -# -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=libbpf -PKG_VERSION:=556e0a0 -PKG_RELEASE:=1 - -PKG_SOURCE_URL:=https://github.com/libbpf/libbpf.git -PKG_SOURCE_VERSION:=556e0a0def956ece0476d99ccb0570ee4ecd4d23 -PKG_MAINTAINER:=Yannick Chabanois (Ycarus) - -PKG_SOURCE_PROTO:=git - -include $(INCLUDE_DIR)/package.mk - -define Package/libbpf - SECTION:=net - CATEGORY:=Network - TITLE:=libbpf - DEPENDS:=+libstdcpp +libelf1 - KCONFIG:=CONFIG_BPF_STREAM_PARSER=y -endef - -define Package/libbpf/description - libbpf -endef - -EXTRA_CPPFLAGS += -fpermissive -Wno-variadic-macros - -TARGET_CFLAGS += -DCOMPAT_NEED_REALLOCARRAY - -define Build/Configure -endef - -define Build/Compile - BUILD_SHARED=y $(MAKE) -C $(PKG_BUILD_DIR)/src \ - CC="$(TARGET_CC)" \ - CFLAGS="$(TARGET_CFLAGS)" \ - LDFLAGS="$(TARGET_LDFLAGS)" -endef - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_BUILD_DIR)/src/libbpf.so $(1)/usr/lib - $(INSTALL_DIR) $(1)/usr/include/bpf - $(CP) $(PKG_BUILD_DIR)/src/*.h $(1)/usr/include/bpf -endef - -define Package/libbpf/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_BUILD_DIR)/src/libbpf.so $(1)/usr/lib -endef - -$(eval $(call BuildPackage,libbpf)) diff --git a/libell/Makefile b/libell/Makefile new file mode 100644 index 000000000..8b12f4b51 --- /dev/null +++ b/libell/Makefile @@ -0,0 +1,44 @@ +# +# Copyright (C) 2020-2021 Ycarus (Yannick Chabanois) +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=ell +PKG_VERSION:=0.41 +PKG_RELEASE:=1 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_HASH:=4e8dba6c53cf152dbd0fd1dc3d4c7b04abf79e20a948895f85943e586870505c +PKG_SOURCE_URL:=@KERNEL/linux/libs/ell +PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILES:=GPL +PKG_INSTALL:=1 +PKG_MAINTAINER:=Ycarus + +include $(INCLUDE_DIR)/package.mk + +define Package/libell + SECTION:=libs + CATEGORY:=Libraries + TITLE:=Embedded Linux library + URL:=https://git.kernel.org/pub/scm/libs/ell/ell.git +endef + +define Package/libell/description + Embeded Linux library +endef + +define Package/libell/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libell*.so* $(1)/usr/lib +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1) + $(CP) $(PKG_INSTALL_DIR)/* $(1)/ +endef + +$(eval $(call BuildPackage,libell)) diff --git a/libgpiod/Makefile b/libgpiod/Makefile new file mode 100644 index 000000000..57842ab78 --- /dev/null +++ b/libgpiod/Makefile @@ -0,0 +1,125 @@ +# +# Copyright (C) 2018-2019 Michael Heimpold +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=libgpiod +PKG_VERSION:=2.1.1 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz +PKG_SOURCE_URL:=@KERNEL/software/libs/libgpiod/ +PKG_HASH:=b21913f469d3135680d5516f00fdf9f81d5e564e19ffb690927ea7f1d7e312cb + +PKG_MAINTAINER:=Michael Heimpold +PKG_LICENSE:=LGPL-2.1-or-later +PKG_LICENSE_FILES:=COPYING + +PKG_INSTALL:=1 +PKG_BUILD_PARALLEL:=1 +PYTHON3_PKG_BUILD:=0 + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/feeds/packages/lang/python/python3-package.mk + +ifneq ($(CONFIG_PACKAGE_gpiod-tools),) +CONFIGURE_ARGS += --enable-tools +endif + +PYTHON3_PKG_SETUP_DIR:=bindings/python +TARGET_CPPFLAGS+=-I$(PKG_BUILD_DIR)/include +TARGET_LDFLAGS+=-L$(PKG_BUILD_DIR)/lib/.libs + +define Package/libgpiod + SECTION:=libs + CATEGORY:=Libraries + URL:=https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git + TITLE:=Library for interacting with Linux's GPIO character device + KCONFIG:= \ + CONFIG_GPIO_CDEV=y + DEPENDS:=@GPIO_SUPPORT +endef + +define Package/libgpiod/description + C library for interacting with the linux GPIO character device + (gpiod stands for GPIO device). +endef + +define Package/gpiod-tools + SECTION:=utils + CATEGORY:=Utilities + TITLE:=Tools for interacting with GPIO pins + DEPENDS:=+libgpiod +endef + +define Package/gpiod-tools/description + Tools for interacting with the linux GPIO character device + (gpiod stands for GPIO device). +endef + +define Package/python3-gpiod + SECTION:=lang + CATEGORY:=Languages + SUBMENU:=Python + TITLE:=Python bindings for libgpiod + URL:=https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git + DEPENDS:=+python3-light +libgpiod +endef + +define Package/python3-gpiod/description + This package contains the Python bindings for libgpiod. +endef + +define Build/Configure + $(call Build/Configure/Default) + ifneq ($(CONFIG_PACKAGE_python3-gpiod),) + $(call Py3Build/Configure) + endif +endef + +define Build/Compile + $(call Build/Compile/Default) + ifneq ($(CONFIG_PACKAGE_python3-gpiod),) + $(call Py3Build/Compile) + endif +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_INSTALL_DIR)/usr/include/gpiod.h $(1)/usr/include/ + + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgpiod.{so*,a} $(1)/usr/lib/ + + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libgpiod.pc $(1)/usr/lib/pkgconfig/ + + ifneq ($(CONFIG_PACKAGE_python3-gpiod),) + $(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR) + $(CP) $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/* $(1)$(PYTHON3_PKG_DIR) + endif +endef + +define Package/libgpiod/install + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libgpiod.so.* $(1)/usr/lib/ +endef + +define Package/gpiod-tools/install + $(INSTALL_DIR) $(1)/usr/bin + $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/ +endef + +define Py3Package/python3-gpiod/install + # this empty define prevent installing tools from /usr/bin +endef + +$(eval $(call BuildPackage,libgpiod)) +$(eval $(call BuildPackage,gpiod-tools)) +$(eval $(call Py3Package,python3-gpiod)) +$(eval $(call BuildPackage,python3-gpiod)) +$(eval $(call BuildPackage,python3-gpiod-src)) diff --git a/libmbim/Makefile b/libmbim/Makefile new file mode 100644 index 000000000..5482a3cfb --- /dev/null +++ b/libmbim/Makefile @@ -0,0 +1,97 @@ +# +# Copyright (C) 2016 Velocloud Inc. +# Copyright (C) 2016 Aleksander Morgado +# +# This is free software, licensed under the GNU General Public License v2. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=libmbim +PKG_VERSION:=1.31.6 +PKG_SOURCE_VERSION:=1.31.6-dev +#PKG_SOURCE_VERSION:=1866ed53c05916c66c5d52682778a6078e5221d3 +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libmbim.git +#libmPKG_MIRROR_HASH:=8fc4e2d78d6a1003bf89303d3ce779283b176d74e84a241ba8efb0d468605268 + +PKG_BUILD_FLAGS:=gc-sections + +PKG_MAINTAINER:=Nicholas Smith + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/nls.mk +include $(INCLUDE_DIR)/meson.mk + +TARGET_CFLAGS += -fno-merge-all-constants -fmerge-constants + +MESON_ARGS += \ + -Dintrospection=false \ + -Dman=false \ + -Dbash_completion=false \ + -Db_lto=true + +define Package/libmbim + SECTION:=libs + CATEGORY:=Libraries + DEPENDS:=+glib2 + TITLE:=Helper library and utils to talk to MBIM enabled modems + URL:=https://www.freedesktop.org/wiki/Software/libmbim + LICENSE:=LGPL-2.0-or-later + LICENSE_FILES:=COPYING.LIB +endef + +define Package/libmbim/description + Helper library to talk to MBIM enabled modems. + Add mbim-utils for extra utilities. +endef + +define Package/mbim-utils + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:=+libmbim + TITLE:=Utilities to talk to MBIM enabled modems + URL:=https://www.freedesktop.org/wiki/Software/libmbim + LICENSE:=GPL-2.0-or-later + LICENSE_FILES:=COPYING +endef + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) \ + $(PKG_INSTALL_DIR)/usr/include/libmbim-glib \ + $(1)/usr/include/ + + $(INSTALL_DIR) $(1)/usr/lib + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libmbim*.so* \ + $(1)/usr/lib/ + + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/mbim-glib.pc \ + $(1)/usr/lib/pkgconfig +endef + +define Package/libmbim/install + $(INSTALL_DIR) \ + $(1)/usr/lib \ + $(1)/usr/libexec + + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libmbim*.so.* \ + $(1)/usr/lib/ + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/mbim-proxy $(1)/usr/libexec/ +endef + +define Package/mbim-utils/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mbimcli $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mbim-network $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,libmbim)) +$(eval $(call BuildPackage,mbim-utils)) diff --git a/libqmi/Config.in b/libqmi/Config.in new file mode 100644 index 000000000..7dfa7ca52 --- /dev/null +++ b/libqmi/Config.in @@ -0,0 +1,31 @@ +menu "Configuration" + depends on PACKAGE_libqmi + +config LIBQMI_WITH_MBIM_QMUX + bool "Include MBIM QMUX service support" + default y + help + Compile libqmi with QMI-over-MBIM support + +config LIBQMI_WITH_QRTR_GLIB + bool "Include QRTR support" + default y + help + Compile libqmi with QRTR support + +choice + prompt "Select QMI message collection to build" + default LIBQMI_COLLECTION_BASIC + + config LIBQMI_COLLECTION_MINIMAL + depends on !MODEMMANAGER_WITH_QMI + bool "minimal" + + config LIBQMI_COLLECTION_BASIC + bool "basic (default)" + + config LIBQMI_COLLECTION_FULL + bool "full" +endchoice + +endmenu diff --git a/libqmi/Makefile b/libqmi/Makefile new file mode 100644 index 000000000..ca7122ad5 --- /dev/null +++ b/libqmi/Makefile @@ -0,0 +1,113 @@ +# +# Copyright (C) 2016 Velocloud Inc. +# Copyright (C) 2016 Aleksander Morgado +# +# This is free software, licensed under the GNU General Public License v2. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=libqmi +PKG_VERSION:=1.35.6 +PKG_SOURCE_VERSION:=1.35.6-dev +PKG_RELEASE:=1 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/libqmi.git +#PKG_MIRROR_HASH:=af3dc760d0c40ef8af1f8b424435daa12bff698ed45b1cc9a9e38ea62ed047f0 + +PKG_BUILD_FLAGS:=gc-sections + +PKG_MAINTAINER:=Nicholas Smith + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/nls.mk +include $(INCLUDE_DIR)/meson.mk + +TARGET_CFLAGS += -fno-merge-all-constants -fmerge-constants + +define Package/libqmi/config + source "$(SOURCE)/Config.in" +endef + +define Package/libqmi + SECTION:=libs + CATEGORY:=Libraries + DEPENDS:= \ + +glib2 \ + +LIBQMI_WITH_MBIM_QMUX:libmbim \ + +LIBQMI_WITH_QRTR_GLIB:libqrtr-glib + TITLE:=Helper library to talk to QMI enabled modems + URL:=https://www.freedesktop.org/wiki/Software/libqmi + LICENSE:=LGPL-2.0-or-later + LICENSE_FILES:=COPYING.LIB +endef + +define Package/libqmi/description + Helper library talk to QMI enabled modems. + Add qmi-utils for extra utilities. +endef + +define Package/qmi-utils + SECTION:=utils + CATEGORY:=Utilities + DEPENDS:=+libqmi + TITLE:=Utilities to talk to QMI enabled modems + URL:=https://www.freedesktop.org/wiki/Software/libqmi + LICENSE:=GPL-2.0-or-later + LICENSE_FILES:=COPYING +endef + +define Package/libqmi-utils/description + Utils to talk to QMI enabled modems +endef + +MESON_ARGS += \ + -Dudev=false \ + -Dintrospection=false \ + -Dman=false \ + -Dbash_completion=false \ + -Db_lto=true \ + -Dmbim_qmux=$(if $(CONFIG_LIBQMI_WITH_MBIM_QMUX),true,false) \ + -Dqrtr=$(if $(CONFIG_LIBQMI_WITH_QRTR_GLIB),true,false) \ + -Dcollection=$(if $(CONFIG_LIBQMI_COLLECTION_MINIMAL),minimal\ + ,$(if $(CONFIG_LIBQMI_COLLECTION_BASIC),basic,full)) + +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) \ + $(PKG_INSTALL_DIR)/usr/include/libqmi-glib \ + $(1)/usr/include/ + + $(INSTALL_DIR) $(1)/usr/lib + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libqmi*.so* \ + $(1)/usr/lib/ + + $(INSTALL_DIR) $(1)/usr/lib/pkgconfig + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/qmi-glib.pc \ + $(1)/usr/lib/pkgconfig +endef + +define Package/libqmi/install + $(INSTALL_DIR) \ + $(1)/usr/lib \ + $(1)/usr/libexec + + $(CP) \ + $(PKG_INSTALL_DIR)/usr/lib/libqmi*.so.* \ + $(1)/usr/lib/ + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/qmi-proxy $(1)/usr/libexec/ +endef + +define Package/qmi-utils/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qmicli $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qmi-network $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/qmi-firmware-update $(1)/usr/bin/ +endef + +$(eval $(call BuildPackage,libqmi)) +$(eval $(call BuildPackage,qmi-utils)) diff --git a/luci-app-dsvpn/Makefile b/luci-app-dsvpn/Makefile new file mode 100644 index 000000000..cc5052f9d --- /dev/null +++ b/luci-app-dsvpn/Makefile @@ -0,0 +1,16 @@ +# +# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) +# +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI Interface to DSVPN +LUCI_DEPENDS:=+dsvpn + +PKG_LICENSE:=GPLv3 + +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js b/luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js new file mode 100644 index 000000000..453a13836 --- /dev/null +++ b/luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js @@ -0,0 +1,66 @@ +'use strict'; +'require rpc'; +'require form'; +'require fs'; +'require uci'; +'require tools.widgets as widgets'; + +var callHostHints; + +return L.view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + load: function() { + return this.callHostHints(); + }, + + render: function(hosts) { + var m, s, o; + + m = new form.Map('dsvpn', _('DSVPN')); + + s = m.section(form.GridSection, 'dsvpn', _('Instances')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + o = s.option(form.Flag, 'enable', _('Enabled')); + o.default = o.enabled; + + o = s.option(form.Value, 'label', _('Label')); + o.rmempty = true; + + o = s.option(form.ListValue, 'mode', _('Mode')); + o.value('client',_('Client')); + o.value('server',_('Server')); + o.modalonly = true; + + o = s.option(form.Value, 'host', _('Host')); + o.rmempty = false; + + o = s.option(form.Value, 'port', _('Port')); + o.rmempty = false; + + o = s.option(form.Value, 'key', _('Key')); + o.rmempty = false; + o.modalonly = true; + + o = s.option(form.Value, 'dev', _('Interface name')); + o.rmempty = false; + o.modalonly = true; + + o = s.option(form.Value, 'localip', _('Local IP')); + o.datatype = 'or(ip4addr,ip6addr)'; + o.rmempty = false; + + o = s.option(form.Value, 'remoteip', _('Remote IP')); + o.datatype = 'or(ip4addr,ip6addr)'; + o.rmempty = false; + + return m.render(); + } +}); diff --git a/luci-app-dsvpn/po/fr/dsvpn.po b/luci-app-dsvpn/po/fr/dsvpn.po new file mode 100644 index 000000000..448d90c08 --- /dev/null +++ b/luci-app-dsvpn/po/fr/dsvpn.po @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:38 +msgid "Client" +msgstr "Client" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:24 +#: luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json:3 +msgid "DSVPN" +msgstr "DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:31 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json:3 +msgid "Grant access to DSVPN" +msgstr "Accorder l'accès à DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +msgid "Host" +msgstr "Hôte" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:26 +msgid "Instances" +msgstr "Instances" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:52 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:48 +msgid "Key" +msgstr "Clef" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:56 +msgid "Local IP" +msgstr "Adresse IP locale" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:37 +msgid "Mode" +msgstr "Mode" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +msgid "Port" +msgstr "Port" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:60 +msgid "Remote IP" +msgstr "IP Distante" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +msgid "Server" +msgstr "Serveur" diff --git a/luci-app-dsvpn/po/fr/dsvpn.po~ b/luci-app-dsvpn/po/fr/dsvpn.po~ new file mode 100644 index 000000000..dc421eb01 --- /dev/null +++ b/luci-app-dsvpn/po/fr/dsvpn.po~ @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:35 +msgid "Client" +msgstr "Client" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:24 +#: luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json:3 +msgid "DSVPN" +msgstr "DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:31 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json:3 +msgid "Grant access to DSVPN" +msgstr "Accorder l'accès à DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +msgid "Host" +msgstr "Hôte" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:26 +msgid "Instances" +msgstr "Instances" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:49 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +msgid "Key" +msgstr "Clef" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:61 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:53 +msgid "Local IP" +msgstr "Adresse IP locale" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +msgid "Mode" +msgstr "Mode" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +msgid "Port" +msgstr "Port" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:57 +msgid "Remote IP" +msgstr "IP Distante" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:36 +msgid "Server" +msgstr "Serveur" diff --git a/luci-app-dsvpn/po/ru/dsvpn.po b/luci-app-dsvpn/po/ru/dsvpn.po new file mode 100644 index 000000000..a926fd1ab --- /dev/null +++ b/luci-app-dsvpn/po/ru/dsvpn.po @@ -0,0 +1,69 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:38 +msgid "Client" +msgstr "Клиент" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:24 +#: luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json:3 +msgid "DSVPN" +msgstr "DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:31 +msgid "Enabled" +msgstr "Установлено" + +#: luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json:3 +msgid "Grant access to DSVPN" +msgstr "Полный доступ к DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +msgid "Host" +msgstr "Хост" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:26 +msgid "Instances" +msgstr "Экземпляры" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:52 +msgid "Interface name" +msgstr "Имя интерфейса" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:48 +msgid "Key" +msgstr "Ключ" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +msgid "Label" +msgstr "Метка" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:56 +msgid "Local IP" +msgstr "Локальный IP" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:37 +msgid "Mode" +msgstr "Режим" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +msgid "Port" +msgstr "Порт" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:60 +msgid "Remote IP" +msgstr "Удаленный IP" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +msgid "Server" +msgstr "Сервер" diff --git a/luci-app-dsvpn/po/templates/dsvpn.pot b/luci-app-dsvpn/po/templates/dsvpn.pot new file mode 100644 index 000000000..4b5645646 --- /dev/null +++ b/luci-app-dsvpn/po/templates/dsvpn.pot @@ -0,0 +1,59 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:38 +msgid "Client" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:24 +#: luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json:3 +msgid "DSVPN" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:31 +msgid "Enabled" +msgstr "" + +#: luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json:3 +msgid "Grant access to DSVPN" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +msgid "Host" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:26 +msgid "Instances" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:52 +msgid "Interface name" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:48 +msgid "Key" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +msgid "Label" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:56 +msgid "Local IP" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:37 +msgid "Mode" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +msgid "Port" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:60 +msgid "Remote IP" +msgstr "" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +msgid "Server" +msgstr "" diff --git a/luci-app-dsvpn/po/zh_Hans/dsvpn.po b/luci-app-dsvpn/po/zh_Hans/dsvpn.po new file mode 100644 index 000000000..e0379098d --- /dev/null +++ b/luci-app-dsvpn/po/zh_Hans/dsvpn.po @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-05 11:40+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:38 +msgid "Client" +msgstr "客户端" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:24 +#: luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json:3 +msgid "DSVPN" +msgstr "DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:31 +msgid "Enabled" +msgstr "启用" + +#: luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json:3 +msgid "Grant access to DSVPN" +msgstr "授予对DSVPN的访问权限" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +msgid "Host" +msgstr "主机" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:26 +msgid "Instances" +msgstr "实例" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:52 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:48 +msgid "Key" +msgstr "秘钥" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +msgid "Label" +msgstr "标签" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:56 +msgid "Local IP" +msgstr "本地IP" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:37 +msgid "Mode" +msgstr "模式" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +msgid "Port" +msgstr "端口" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:60 +msgid "Remote IP" +msgstr "远程IP" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +msgid "Server" +msgstr "服务器" diff --git a/luci-app-dsvpn/po/zh_Hans/dsvpn.po~ b/luci-app-dsvpn/po/zh_Hans/dsvpn.po~ new file mode 100644 index 000000000..177492257 --- /dev/null +++ b/luci-app-dsvpn/po/zh_Hans/dsvpn.po~ @@ -0,0 +1,68 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-04 16:03+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:35 +msgid "Client" +msgstr "客户端" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:24 +#: luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json:3 +msgid "DSVPN" +msgstr "DSVPN" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:31 +msgid "Enabled" +msgstr "开启" + +#: luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json:3 +msgid "Grant access to DSVPN" +msgstr "授予对DSVPN的访问权限" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:39 +msgid "Host" +msgstr "主机" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:26 +msgid "Instances" +msgstr "实例" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:49 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:45 +msgid "Key" +msgstr "秘钥" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:61 +msgid "Label" +msgstr "标签" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:53 +msgid "Local IP" +msgstr "本地IP" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:34 +msgid "Mode" +msgstr "模式" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:42 +msgid "Port" +msgstr "端口" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:57 +msgid "Remote IP" +msgstr "远程IP" + +#: luci-app-dsvpn/htdocs/luci-static/resources/view/services/dsvpn.js:36 +msgid "Server" +msgstr "服务器" diff --git a/luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json b/luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json new file mode 100644 index 000000000..49ebec311 --- /dev/null +++ b/luci-app-dsvpn/root/usr/share/luci/menu.d/luci-app-dsvpn.json @@ -0,0 +1,13 @@ +{ + "admin/vpn/dsvpn": { + "title": "DSVPN", + "order": 60, + "action": { + "type": "view", + "path": "services/dsvpn" + }, + "depends": { + "acl": [ "luci-app-dsvpn" ] + } + } +} diff --git a/luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json b/luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json new file mode 100644 index 000000000..e11c9127c --- /dev/null +++ b/luci-app-dsvpn/root/usr/share/rpcd/acl.d/luci-app-dsvpn.json @@ -0,0 +1,11 @@ +{ + "luci-app-dsvpn": { + "description": "Grant access to DSVPN", + "read": { + "uci": [ "dsvpn" ] + }, + "write": { + "uci": [ "dsvpn" ] + } + } +} \ No newline at end of file diff --git a/luci-app-firewall/Makefile b/luci-app-firewall/Makefile new file mode 100644 index 000000000..793e06468 --- /dev/null +++ b/luci-app-firewall/Makefile @@ -0,0 +1,17 @@ +# +# Copyright (C) 2008-2014 The LuCI Team +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Firewall and port forwarding application +LUCI_DEPENDS:=+luci-base +uci-firewall + +PKG_LICENSE:=Apache-2.0 +PKG_MAINTAINER:=Jo-Philipp Wich + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js b/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js new file mode 100644 index 000000000..f9d7dc611 --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js @@ -0,0 +1,703 @@ +'use strict'; +'require baseclass'; +'require dom'; +'require ui'; +'require uci'; +'require form'; +'require network'; +'require firewall'; +'require validation'; +'require tools.prng as random'; + +var protocols = [ + 'ip', 0, 'IP', + 'hopopt', 0, 'HOPOPT', + 'icmp', 1, 'ICMP', + 'igmp', 2, 'IGMP', + 'ggp', 3 , 'GGP', + 'ipencap', 4, 'IP-ENCAP', + 'st', 5, 'ST', + 'tcp', 6, 'TCP', + 'egp', 8, 'EGP', + 'igp', 9, 'IGP', + 'pup', 12, 'PUP', + 'udp', 17, 'UDP', + 'hmp', 20, 'HMP', + 'xns-idp', 22, 'XNS-IDP', + 'rdp', 27, 'RDP', + 'iso-tp4', 29, 'ISO-TP4', + 'dccp', 33, 'DCCP', + 'xtp', 36, 'XTP', + 'ddp', 37, 'DDP', + 'idpr-cmtp', 38, 'IDPR-CMTP', + 'ipv6', 41, 'IPv6', + 'ipv6-route', 43, 'IPv6-Route', + 'ipv6-frag', 44, 'IPv6-Frag', + 'idrp', 45, 'IDRP', + 'rsvp', 46, 'RSVP', + 'gre', 47, 'GRE', + 'esp', 50, 'IPSEC-ESP', + 'ah', 51, 'IPSEC-AH', + 'skip', 57, 'SKIP', + 'icmpv6', 58, 'IPv6-ICMP', + 'ipv6-icmp', 58, 'IPv6-ICMP', + 'ipv6-nonxt', 59, 'IPv6-NoNxt', + 'ipv6-opts', 60, 'IPv6-Opts', + 'rspf', 73, 'RSPF', + 'rspf', 73, 'CPHB', + 'vmtp', 81, 'VMTP', + 'eigrp', 88, 'EIGRP', + 'ospf', 89, 'OSPFIGP', + 'ax.25', 93, 'AX.25', + 'ipip', 94, 'IPIP', + 'etherip', 97, 'ETHERIP', + 'encap', 98, 'ENCAP', + 'pim', 103, 'PIM', + 'ipcomp', 108, 'IPCOMP', + 'vrrp', 112, 'VRRP', + 'l2tp', 115, 'L2TP', + 'isis', 124, 'ISIS', + 'sctp', 132, 'SCTP', + 'fc', 133, 'FC', + 'mh', 135, 'Mobility-Header', + 'ipv6-mh', 135, 'Mobility-Header', + 'mobility-header', 135, 'Mobility-Header', + 'udplite', 136, 'UDPLite', + 'mpls-in-ip', 137, 'MPLS-in-IP', + 'manet', 138, 'MANET', + 'hip', 139, 'HIP', + 'shim6', 140, 'Shim6', + 'wesp', 141, 'WESP', + 'rohc', 142, 'ROHC', +]; + +function lookupProto(x) { + if (x == null || x === '') + return null; + + var s = String(x).toLowerCase(); + + for (var i = 0; i < protocols.length; i += 3) + if (s == protocols[i] || s == protocols[i+1]) + return [ protocols[i+1], protocols[i+2], protocols[i] ]; + + return [ -1, x, x ]; +} + +return baseclass.extend({ + fmt: function(fmtstr, args, values) { + var repl = [], + wrap = false, + tokens = []; + + if (values == null) { + values = []; + wrap = true; + } + + var get = function(args, key) { + var names = key.trim().split(/\./), + obj = args, + ctx = obj; + + for (var i = 0; i < names.length; i++) { + if (!L.isObject(obj)) + return null; + + ctx = obj; + obj = obj[names[i]]; + } + + if (typeof(obj) == 'function') + return obj.call(ctx); + + return obj; + }; + + var isset = function(val) { + if (L.isObject(val) && !dom.elem(val)) { + for (var k in val) + if (val.hasOwnProperty(k)) + return true; + + return false; + } + else if (Array.isArray(val)) { + return (val.length > 0); + } + else { + return (val !== null && val !== undefined && val !== '' && val !== false); + } + }; + + var parse = function(tokens, text) { + if (dom.elem(text)) { + tokens.push(''.format(values.length)); + values.push(text); + } + else { + tokens.push(String(text).replace(/\\(.)/g, '$1')); + } + }; + + for (var i = 0, last = 0; i <= fmtstr.length; i++) { + if (fmtstr.charAt(i) == '%' && fmtstr.charAt(i + 1) == '{') { + if (i > last) + parse(tokens, fmtstr.substring(last, i)); + + var j = i + 1, nest = 0; + + var subexpr = []; + + for (var off = j + 1, esc = false; j <= fmtstr.length; j++) { + var ch = fmtstr.charAt(j); + + if (esc) { + esc = false; + } + else if (ch == '\\') { + esc = true; + } + else if (ch == '{') { + nest++; + } + else if (ch == '}') { + if (--nest == 0) { + subexpr.push(fmtstr.substring(off, j)); + break; + } + } + else if (ch == '?' || ch == ':' || ch == '#') { + if (nest == 1) { + subexpr.push(fmtstr.substring(off, j)); + subexpr.push(ch); + off = j + 1; + } + } + } + + var varname = subexpr[0].trim(), + op1 = (subexpr[1] != null) ? subexpr[1] : '?', + if_set = (subexpr[2] != null && subexpr[2] != '') ? subexpr[2] : '%{' + varname + '}', + op2 = (subexpr[3] != null) ? subexpr[3] : ':', + if_unset = (subexpr[4] != null) ? subexpr[4] : ''; + + /* Invalid expression */ + if (nest != 0 || subexpr.length > 5 || varname == '') { + return fmtstr; + } + + /* enumeration */ + else if (op1 == '#' && subexpr.length == 3) { + var items = L.toArray(get(args, varname)); + + for (var k = 0; k < items.length; k++) { + tokens.push.apply(tokens, this.fmt(if_set, Object.assign({}, args, { + first: k == 0, + next: k > 0, + last: (k + 1) == items.length, + item: items[k] + }), values)); + } + } + + /* ternary expression */ + else if (op1 == '?' && op2 == ':' && (subexpr.length == 1 || subexpr.length == 3 || subexpr.length == 5)) { + var val = get(args, varname); + + if (subexpr.length == 1) + parse(tokens, isset(val) ? val : ''); + else if (isset(val)) + tokens.push.apply(tokens, this.fmt(if_set, args, values)); + else + tokens.push.apply(tokens, this.fmt(if_unset, args, values)); + } + + /* unrecognized command */ + else { + return fmtstr; + } + + last = j + 1; + i = j; + } + else if (i >= fmtstr.length) { + if (i > last) + parse(tokens, fmtstr.substring(last, i)); + } + } + + if (wrap) { + var node = E('span', {}, tokens.join('')), + repl = node.querySelectorAll('span[data-fmt-placeholder]'); + + for (var i = 0; i < repl.length; i++) + repl[i].parentNode.replaceChild(values[repl[i].getAttribute('data-fmt-placeholder')], repl[i]); + + return node; + } + else { + return tokens; + } + }, + + map_invert: function(v, fn) { + return L.toArray(v).map(function(v) { + v = String(v); + + if (fn != null && typeof(v[fn]) == 'function') + v = v[fn].call(v); + + return { + ival: v, + inv: v.charAt(0) == '!', + val: v.replace(/^!\s*/, '') + }; + }); + }, + + lookupProto: lookupProto, + + addDSCPOption: function(s, is_target) { + var o = s.taboption(is_target ? 'general' : 'advanced', form.Value, is_target ? 'set_dscp' : 'dscp', + is_target ? _('DSCP mark') : _('Match DSCP'), + is_target ? _('Apply the given DSCP class or value to established connections.') : _('Matches traffic carrying the specified DSCP marking.')); + + o.modalonly = true; + o.rmempty = !is_target; + o.placeholder = _('any'); + + if (is_target) + o.depends('target', 'DSCP'); + + o.value('CS0'); + o.value('CS1'); + o.value('CS2'); + o.value('CS3'); + o.value('CS4'); + o.value('CS5'); + o.value('CS6'); + o.value('CS7'); + o.value('BE'); + o.value('AF11'); + o.value('AF12'); + o.value('AF13'); + o.value('AF21'); + o.value('AF22'); + o.value('AF23'); + o.value('AF31'); + o.value('AF32'); + o.value('AF33'); + o.value('AF41'); + o.value('AF42'); + o.value('AF43'); + o.value('EF'); + o.validate = function(section_id, value) { + if (value == '') + return is_target ? _('DSCP mark required') : true; + + if (!is_target) + value = String(value).replace(/^!\s*/, ''); + + var m = value.match(/^(?:CS[0-7]|BE|AF[1234][123]|EF|(0x[0-9a-f]{1,2}|[0-9]{1,2}))$/); + + if (!m || (m[1] != null && +m[1] > 0x3f)) + return _('Invalid DSCP mark'); + + return true; + }; + + return o; + }, + + addMarkOption: function(s, is_target) { + var o = s.taboption(is_target ? 'general' : 'advanced', form.Value, + (is_target > 1) ? 'set_xmark' : (is_target ? 'set_mark' : 'mark'), + (is_target > 1) ? _('XOR mark') : (is_target ? _('Set mark') : _('Match mark')), + (is_target > 1) ? _('Apply a bitwise XOR of the given value and the existing mark value on established connections. Format is value[/mask]. If a mask is specified then those bits set in the mask are zeroed out.') : + (is_target ? _('Set the given mark value on established connections. Format is value[/mask]. If a mask is specified then only those bits set in the mask are modified.') : + _('Matches a specific firewall mark or a range of different marks.'))); + + o.modalonly = true; + o.rmempty = true; + + if (is_target > 1) + o.depends('target', 'MARK_XOR'); + else if (is_target) + o.depends('target', 'MARK_SET'); + + o.validate = function(section_id, value) { + if (value == '') + return is_target ? _('Valid firewall mark required') : true; + + if (!is_target) + value = String(value).replace(/^!\s*/, ''); + + var m = value.match(/^(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i); + + if (!m || +m[1] > 0xffffffff || (m[2] != null && +m[2] > 0xffffffff)) + return _('Expecting: %s').format(_('valid firewall mark')); + + return true; + }; + + return o; + }, + + addLimitOption: function(s) { + var o = s.taboption('advanced', form.Value, 'limit', + _('Limit matching'), + _('Limits traffic matching to the specified rate.')); + + o.modalonly = true; + o.rmempty = true; + o.placeholder = _('unlimited'); + o.value('10/second'); + o.value('60/minute'); + o.value('3/hour'); + o.value('500/day'); + o.validate = function(section_id, value) { + if (value == '') + return true; + + var m = String(value).toLowerCase().match(/^(?:0x[0-9a-f]{1,8}|[0-9]{1,10})\/([a-z]+)$/), + u = ['second', 'minute', 'hour', 'day'], + i = 0; + + if (m) + for (i = 0; i < u.length; i++) + if (u[i].indexOf(m[1]) == 0) + break; + + if (!m || i >= u.length) + return _('Invalid limit value'); + + return true; + }; + + return o; + }, + + addLimitBurstOption: function(s) { + var o = s.taboption('advanced', form.Value, 'limit_burst', + _('Limit burst'), + _('Maximum initial number of packets to match: this number gets recharged by one every time the limit specified above is not reached, up to this number.')); + + o.modalonly = true; + o.rmempty = true; + o.placeholder = '5'; + o.datatype = 'uinteger'; + o.depends({ limit: null, '!reverse': true }); + + return o; + }, + + transformHostHints: function(family, hosts) { + var choice_values = [], + choice_labels = {}, + ip6addrs = {}, + ipaddrs = {}; + + for (var mac in hosts) { + L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4).forEach(function(ip) { + ipaddrs[ip] = mac; + }); + + L.toArray(hosts[mac].ip6addrs || hosts[mac].ipv6).forEach(function(ip) { + ip6addrs[ip] = mac; + }); + } + + if (!family || family == 'ipv4') { + L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ip) { + var val = ip, + txt = hosts[ipaddrs[ip]].name || ipaddrs[ip]; + + choice_values.push(val); + choice_labels[val] = E([], [ val, ' (', E('strong', {}, [txt]), ')' ]); + }); + } + + if (!family || family == 'ipv6') { + L.sortedKeys(ip6addrs, null, 'addr').forEach(function(ip) { + var val = ip, + txt = hosts[ip6addrs[ip]].name || ip6addrs[ip]; + + choice_values.push(val); + choice_labels[val] = E([], [ val, ' (', E('strong', {}, [txt]), ')' ]); + }); + } + + return [choice_values, choice_labels]; + }, + + updateHostHints: function(map, section_id, option, family, hosts) { + var opt = map.lookupOption(option, section_id)[0].getUIElement(section_id), + choices = this.transformHostHints(family, hosts); + + opt.clearChoices(); + opt.addChoices(choices[0], choices[1]); + }, + + CBIDynamicMultiValueList: form.DynamicList.extend({ + renderWidget: function(/* ... */) { + var dl = form.DynamicList.prototype.renderWidget.apply(this, arguments), + inst = dom.findClassInstance(dl); + + inst.addItem = function(dl, value, text, flash) { + var values = L.toArray(value); + for (var i = 0; i < values.length; i++) + ui.DynamicList.prototype.addItem.call(this, dl, values[i], null, true); + }; + + return dl; + } + }), + + addIPOption: function(s, tab, name, label, description, family, hosts, multiple) { + var o = s.taboption(tab, multiple ? this.CBIDynamicMultiValueList : form.Value, name, label, description); + var fw4 = L.hasSystemFeature('firewall4'); + + o.modalonly = true; + o.datatype = (fw4 && validation.types.iprange) ? 'list(neg(or(ipmask("true"),iprange)))' : 'list(neg(ipmask("true")))'; + o.placeholder = multiple ? _('-- add IP --') : _('any'); + + if (family != null) { + var choices = this.transformHostHints(family, hosts); + + for (var i = 0; i < choices[0].length; i++) + o.value(choices[0][i], choices[1][choices[0][i]]); + } + + /* force combobox rendering */ + o.transformChoices = function() { + return this.super('transformChoices', []) || {}; + }; + + return o; + }, + + addLocalIPOption: function(s, tab, name, label, description, devices) { + var o = s.taboption(tab, form.Value, name, label, description); + var fw4 = L.hasSystemFeature('firewall4'); + + o.modalonly = true; + o.datatype = !fw4?'ip4addr("nomask")':'ipaddr("nomask")'; + o.placeholder = _('any'); + + L.sortedKeys(devices, 'name').forEach(function(dev) { + var ip4addrs = devices[dev].ipaddrs; + var ip6addrs = devices[dev].ip6addrs; + + if (!L.isObject(devices[dev].flags) || devices[dev].flags.loopback) + return; + + for (var i = 0; Array.isArray(ip4addrs) && i < ip4addrs.length; i++) { + if (!L.isObject(ip4addrs[i]) || !ip4addrs[i].address) + continue; + + o.value(ip4addrs[i].address, E([], [ + ip4addrs[i].address, ' (', E('strong', {}, [dev]), ')' + ])); + } + for (var i = 0; fw4 && Array.isArray(ip6addrs) && i < ip6addrs.length; i++) { + if (!L.isObject(ip6addrs[i]) || !ip6addrs[i].address) + continue; + + o.value(ip6addrs[i].address, E([], [ + ip6addrs[i].address, ' (', E('strong', {}, [dev]), ')' + ])); + } + }); + + return o; + }, + + addMACOption: function(s, tab, name, label, description, hosts) { + var o = s.taboption(tab, this.CBIDynamicMultiValueList, name, label, description); + + o.modalonly = true; + o.datatype = 'list(macaddr)'; + o.placeholder = _('-- add MAC --'); + + L.sortedKeys(hosts).forEach(function(mac) { + o.value(mac, E([], [ mac, ' (', E('strong', {}, [ + hosts[mac].name || + L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4)[0] || + L.toArray(hosts[mac].ip6addrs || hosts[mac].ipv6)[0] || + '?' + ]), ')' ])); + }); + + return o; + }, + + CBIProtocolSelect: form.MultiValue.extend({ + __name__: 'CBI.ProtocolSelect', + + addChoice: function(value, label) { + if (!Array.isArray(this.keylist) || this.keylist.indexOf(value) == -1) + this.value(value, label); + }, + + load: function(section_id) { + var cfgvalue = L.toArray(this.super('load', [section_id]) || this.default).sort(); + + ['all', 'tcp', 'udp', 'icmp'].concat(cfgvalue).forEach(L.bind(function(value) { + switch (value) { + case 'all': + case 'any': + case '*': + this.addChoice('all', _('Any')); + break; + + case 'tcpudp': + this.addChoice('tcp', 'TCP'); + this.addChoice('udp', 'UDP'); + break; + + default: + var m = value.match(/^(0x[0-9a-f]{1,2}|[0-9]{1,3})$/), + p = lookupProto(m ? +m[1] : value); + + this.addChoice(p[2], p[1]); + break; + } + }, this)); + + if (cfgvalue == '*' || cfgvalue == 'any' || cfgvalue == 'all') + cfgvalue = 'all'; + + return cfgvalue; + }, + + renderWidget: function(section_id, option_index, cfgvalue) { + var value = (cfgvalue != null) ? cfgvalue : this.default, + choices = this.transformChoices(); + + var widget = new ui.Dropdown(L.toArray(value), choices, { + id: this.cbid(section_id), + sort: this.keylist, + multiple: true, + optional: false, + display_items: 10, + dropdown_items: -1, + create: true, + disabled: (this.readonly != null) ? this.readonly : this.map.readonly, + validate: function(value) { + var v = L.toArray(value); + + for (var i = 0; i < v.length; i++) { + if (v[i] == 'all') + continue; + + var m = v[i].match(/^(0x[0-9a-f]{1,2}|[0-9]{1,3})$/); + + if (m ? (+m[1] > 255) : (lookupProto(v[i])[0] == -1)) + return _('Unrecognized protocol'); + } + + return true; + } + }); + + widget.createChoiceElement = function(sb, value) { + var p = lookupProto(value); + + return ui.Dropdown.prototype.createChoiceElement.call(this, sb, p[2], p[1]); + }; + + widget.createItems = function(sb, value) { + var values = L.toArray(value).map(function(value) { + var m = value.match(/^(0x[0-9a-f]{1,2}|[0-9]{1,3})$/), + p = lookupProto(m ? +m[1] : value); + + return (p[0] > -1) ? p[2] : p[1]; + }); + + values.sort(); + + return ui.Dropdown.prototype.createItems.call(this, sb, values.join(' ')); + }; + + widget.toggleItem = function(sb, li) { + var value = li.getAttribute('data-value'), + toggleFn = ui.Dropdown.prototype.toggleItem; + + toggleFn.call(this, sb, li); + + if (value == 'all') { + var items = li.parentNode.querySelectorAll('li[data-value]'); + + for (var j = 0; j < items.length; j++) + if (items[j] !== li) + toggleFn.call(this, sb, items[j], false); + } + else { + toggleFn.call(this, sb, li.parentNode.querySelector('li[data-value="all"]'), false); + } + }; + + return widget.render(); + } + }), + + checkLegacySNAT: function() { + var redirects = uci.sections('firewall', 'redirect'); + + for (var i = 0; i < redirects.length; i++) + if ((redirects[i]['target'] || '').toLowerCase() == 'snat') + return true; + + return false; + }, + + handleMigration: function(ev) { + var redirects = uci.sections('firewall', 'redirect'), + tasks = []; + + var mapping = { + dest: 'src', + reflection: null, + reflection_src: null, + src_dip: 'snat_ip', + src_dport: 'snat_port', + src: null + }; + + for (var i = 0; i < redirects.length; i++) { + if ((redirects[i]['target'] || '').toLowerCase() != 'snat') + continue; + + var sid = uci.add('firewall', 'nat'); + + for (var opt in redirects[i]) { + if (opt.charAt(0) == '.') + continue; + + if (mapping[opt] === null) + continue; + + uci.set('firewall', sid, mapping[opt] || opt, redirects[i][opt]); + } + + uci.remove('firewall', redirects[i]['.name']); + } + + return uci.save() + .then(L.bind(ui.changes.init, ui.changes)) + .then(L.bind(ui.changes.apply, ui.changes)); + }, + + renderMigration: function() { + ui.showModal(_('Firewall configuration migration'), [ + E('p', _('The existing firewall configuration needs to be changed for LuCI to function properly.')), + E('p', _('Upon pressing "Continue", "redirect" sections with target "SNAT" will be converted to "nat" sections and the firewall will be restarted to apply the updated configuration.')), + E('div', { 'class': 'right' }, + E('button', { + 'class': 'btn cbi-button-action important', + 'click': ui.createHandlerFn(this, 'handleMigration') + }, _('Continue'))) + ]); + }, +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js new file mode 100644 index 000000000..1997a720c --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js @@ -0,0 +1,33 @@ +'use strict'; +'require view'; +'require fs'; +'require ui'; + +return view.extend({ + load: function() { + return L.resolveDefault(fs.read('/etc/firewall.user'), ''); + }, + + handleSave: function(ev) { + var value = (document.querySelector('textarea').value || '').trim().replace(/\r\n/g, '\n') + '\n'; + + return fs.write('/etc/firewall.user', value).then(function(rc) { + document.querySelector('textarea').value = value; + ui.addNotification(null, E('p', _('Contents have been saved.')), 'info'); + fs.exec('/etc/init.d/firewall', ['restart']); + }).catch(function(e) { + ui.addNotification(null, E('p', _('Unable to save contents: %s').format(e.message))); + }); + }, + + render: function(fwuser) { + return E([ + E('h2', _('Firewall - Custom Rules')), + E('p', {}, _('Custom rules allow you to execute arbitrary iptables commands which are not otherwise covered by the firewall framework. The commands are executed after each firewall restart, right after the default ruleset has been loaded.')), + E('p', {}, E('textarea', { 'style': 'width:100%', 'rows': 25 }, [ fwuser != null ? fwuser : '' ])) + ]); + }, + + handleSaveApply: null, + handleReset: null +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js new file mode 100644 index 000000000..5fc3245f5 --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js @@ -0,0 +1,361 @@ +'use strict'; +'require view'; +'require ui'; +'require rpc'; +'require uci'; +'require form'; +'require firewall as fwmodel'; +'require tools.firewall as fwtool'; +'require tools.widgets as widgets'; + +function rule_proto_txt(s, ctHelpers) { + var family = (uci.get('firewall', s, 'family') || '').toLowerCase().replace(/^(?:all|\*)$/, 'any'); + var dip = uci.get('firewall', s, 'dest_ip') || ''; + var proto = L.toArray(uci.get('firewall', s, 'proto')).filter(function(p) { + return (p != '*' && p != 'any' && p != 'all'); + }).map(function(p) { + var pr = fwtool.lookupProto(p); + return { + num: pr[0], + name: pr[1], + types: (pr[0] == 1 || pr[0] == 58) ? L.toArray(uci.get('firewall', s, 'icmp_type')) : null + }; + }); + + var m = String(uci.get('firewall', s, 'helper') || '').match(/^(!\s*)?(\S+)$/); + var h = m ? { + val: m[0].toUpperCase(), + inv: m[1], + name: (ctHelpers.filter(function(ctH) { return ctH.name.toLowerCase() == m[2].toLowerCase() })[0] || {}).description + } : null; + + m = String(uci.get('firewall', s, 'mark')).match(/^(!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i); + var f = m ? { + val: m[0].toUpperCase().replace(/X/g, 'x'), + inv: m[1], + num: '0x%02X'.format(+m[2]), + mask: m[3] ? '0x%02X'.format(+m[3]) : null + } : null; + + return fwtool.fmt(_('Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}'), { + ipv4: ((!family && dip.indexOf(':') == -1) || family == 'any' || (!family && !dip) || family == 'ipv4'), + ipv6: ((!family && dip.indexOf(':') != -1) || family == 'any' || family == 'ipv6'), + proto: proto, + helper: h, + mark: f + }); +} + +function rule_src_txt(s, hosts) { + var z = uci.get('firewall', s, 'src'); + + return fwtool.fmt(_('From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}'), { + src: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(z) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]), + src_ip: fwtool.map_invert(uci.get('firewall', s, 'src_ip'), 'toLowerCase'), + src_mac: fwtool.map_invert(uci.get('firewall', s, 'src_mac'), 'toUpperCase').map(function(v) { return Object.assign(v, { hint: hosts[v.val] }) }), + src_port: fwtool.map_invert(uci.get('firewall', s, 'src_port')) + }); +} + +function rule_dest_txt(s) { + return fwtool.fmt(_('To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}'), { + dest: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(null) }, [E('em', _('this device'))]), + dest_ip: fwtool.map_invert(uci.get('firewall', s, 'src_dip'), 'toLowerCase'), + dest_port: fwtool.map_invert(uci.get('firewall', s, 'src_dport')) + }); +} + +function rule_limit_txt(s) { + var m = String(uci.get('firewall', s, 'limit')).match(/^(\d+)\/([smhd])\w*$/i), + l = m ? { + num: +m[1], + unit: ({ s: _('second'), m: _('minute'), h: _('hour'), d: _('day') })[m[2]], + burst: uci.get('firewall', s, 'limit_burst') + } : null; + + if (!l) + return ''; + + return fwtool.fmt(_('Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}'), { limit: l }); +} + +function rule_target_txt(s) { + var z = uci.get('firewall', s, 'dest'); + + return fwtool.fmt(_('Forward to %{dest}%{dest_ip? IP %{dest_ip}}%{dest_port? port %{dest_port}}'), { + dest: E('span', { 'class': 'zonebadge', 'style': 'background-color:' + fwmodel.getColorForName((z && z != '*') ? z : null) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]), + dest_ip: (uci.get('firewall', s, 'dest_ip') || '').toLowerCase(), + dest_port: uci.get('firewall', s, 'dest_port') + }); +} + +function validate_opt_family(m, section_id, opt) { + var dopt = m.section.getOption('dest_ip'), + fmopt = m.section.getOption('family'); + + if (!dopt.isValid(section_id) && opt != 'dest_ip') + return true; + if (!fmopt.isValid(section_id) && opt != 'family') + return true; + + var dip = dopt.formvalue(section_id) || '', + fm = fmopt.formvalue(section_id) || ''; + + if (fm == '' || (fm == 'any' && dip == '') || (fm == 'ipv6' && (dip.indexOf(':') != -1 || dip == '')) || (fm == 'ipv4' && dip.indexOf(':') == -1)) + return true; + + return _('Address family, Internal IP address must match'); +} + +return view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + callConntrackHelpers: rpc.declare({ + object: 'luci', + method: 'getConntrackHelpers', + expect: { result: [] } + }), + + callNetworkDevices: rpc.declare({ + object: 'luci-rpc', + method: 'getNetworkDevices', + expect: { '': {} } + }), + + load: function() { + return Promise.all([ + this.callHostHints(), + this.callConntrackHelpers(), + this.callNetworkDevices(), + uci.load('firewall') + ]); + }, + + render: function(data) { + if (fwtool.checkLegacySNAT()) + return fwtool.renderMigration(); + else + return this.renderForwards(data); + }, + + renderForwards: function(data) { + var hosts = data[0], + ctHelpers = data[1], + devs = data[2], + m, s, o; + var fw4 = L.hasSystemFeature('firewall4'); + + m = new form.Map('firewall', _('Firewall - Port Forwards'), + _('Port forwarding allows remote computers on the Internet to connect to a specific computer or service within the private LAN.')); + + s = m.section(form.GridSection, 'redirect', _('Port Forwards')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + s.cloneable = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + + s.filter = function(section_id) { + return (uci.get('firewall', section_id, 'target') != 'SNAT'); + }; + + s.sectiontitle = function(section_id) { + return uci.get('firewall', section_id, 'name') || _('Unnamed forward'); + }; + + s.handleAdd = function(ev) { + var config_name = this.uciconfig || this.map.config, + section_id = uci.add(config_name, this.sectiontype); + + uci.set(config_name, section_id, 'dest', 'lan'); + uci.set(config_name, section_id, 'target', 'DNAT'); + + m.addedSection = section_id; + this.renderMoreOptionsModal(section_id); + }; + + o = s.taboption('general', form.Value, 'name', _('Name')); + o.placeholder = _('Unnamed forward'); + o.modalonly = true; + + if (fw4) { + o = s.taboption('general', form.ListValue, 'family', _('Restrict to address family')); + o.modalonly = true; + o.rmempty = true; + o.value('any', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.value('', _('automatic')); // infer from zone or used IP addresses + o.cfgvalue = function(section_id) { + var val = this.map.data.get(this.map.config, section_id, 'family'); + + if (!val) + return ''; + else if (val == 'any' || val == 'all' || val == '*') + return 'any'; + else if (val == 'inet' || String(val).indexOf('4') != -1) + return 'ipv4'; + else if (String(val).indexOf('6') != -1) + return 'ipv6'; + }; + o.validate = function(section_id, value) { + fwtool.updateHostHints(this.map, section_id, 'dest_ip', value, hosts); + return !fw4?true:validate_opt_family(this, section_id, 'family'); + }; + } + + o = s.option(form.DummyValue, '_match', _('Match')); + o.modalonly = false; + o.textvalue = function(s) { + return E('small', [ + rule_proto_txt(s, ctHelpers), E('br'), + rule_src_txt(s, hosts), E('br'), + rule_dest_txt(s), E('br'), + rule_limit_txt(s) + ]); + }; + + o = s.option(form.ListValue, '_dest', _('Action')); + o.modalonly = false; + o.textvalue = function(s) { + return E('small', [ + rule_target_txt(s) + ]); + }; + + o = s.option(form.Flag, 'enabled', _('Enable')); + o.modalonly = false; + o.default = o.enabled; + o.editable = true; + + o = s.taboption('general', fwtool.CBIProtocolSelect, 'proto', _('Protocol')); + o.modalonly = true; + o.default = 'tcp udp'; + + o = s.taboption('general', widgets.ZoneSelect, 'src', _('Source zone')); + o.modalonly = true; + o.rmempty = false; + o.nocreate = true; + o.default = 'wan'; + + o = s.taboption('advanced', form.Value, 'ipset', _('Use ipset')); + uci.sections('firewall', 'ipset', function(s) { + if (typeof(s.name) == 'string') + o.value(s.name, s.comment ? '%s (%s)'.format(s.name, s.comment) : s.name); + }); + o.modalonly = true; + o.rmempty = true; + + o = fwtool.addMACOption(s, 'advanced', 'src_mac', _('Source MAC address'), + _('Only match incoming traffic from these MACs.'), hosts); + o.rmempty = true; + o.datatype = 'list(neg(macaddr))'; + + o = fwtool.addIPOption(s, 'advanced', 'src_ip', _('Source IP address'), + _('Only match incoming traffic from this IP or range.'), !fw4?'ipv4':'', hosts); + o.rmempty = true; + o.datatype = !fw4?'neg(ipmask4("true"))':'neg(ipmask("true"))'; + + o = s.taboption('advanced', form.Value, 'src_port', _('Source port'), + _('Only match incoming traffic originating from the given source port or port range on the client host')); + o.modalonly = true; + o.rmempty = true; + o.datatype = 'neg(portrange)'; + o.placeholder = _('any'); + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = fwtool.addLocalIPOption(s, 'advanced', 'src_dip', _('External IP address'), + _('Only match incoming traffic directed at the given IP address.'), devs); + o.datatype = !fw4?'neg(ipmask4("true"))':'neg(ipmask("true"))'; + o.rmempty = true; + + o = s.taboption('general', form.Value, 'src_dport', _('External port'), + _('Match incoming traffic directed at the given destination port or port range on this host')); + o.modalonly = true; + o.rmempty = false; + o.datatype = 'neg(portrange)'; + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('general', widgets.ZoneSelect, 'dest', _('Internal zone')); + o.modalonly = true; + o.rmempty = true; + o.nocreate = true; + + o = fwtool.addIPOption(s, 'general', 'dest_ip', _('Internal IP address'), + _('Redirect matched incoming traffic to the specified internal host'), !fw4?'ipv4':'', hosts); + o.rmempty = true; + o.datatype = !fw4?'ipmask4':'ipmask'; + + o = s.taboption('general', form.Value, 'dest_port', _('Internal port'), + _('Redirect matched incoming traffic to the given port on the internal host')); + o.modalonly = true; + o.rmempty = true; + o.placeholder = _('any'); + o.datatype = 'portrange'; + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('advanced', form.Flag, 'reflection', _('Enable NAT Loopback')); + o.modalonly = true; + o.rmempty = true; + o.default = o.enabled; + + o = s.taboption('advanced', form.ListValue, 'reflection_src', _('Loopback source IP'), _('Specifies whether to use the external or the internal IP address for reflected traffic.')); + o.modalonly = true; + o.depends('reflection', '1'); + o.value('internal', _('Use internal IP address')); + o.value('external', _('Use external IP address')); + o.write = function(section_id, value) { + uci.set('firewall', section_id, 'reflection_src', (value != 'internal') ? value : null); + }; + + o = s.taboption('advanced', widgets.ZoneSelect, 'reflection_zone', _('Reflection zones'), _('Zones from which reflection rules shall be created. If unset, only the destination zone is used.')); + o.nocreate = true; + o.multiple = true; + o.modalonly = true; + o.depends('reflection', '1'); + + o = s.taboption('advanced', form.Value, 'helper', _('Match helper'), _('Match traffic using the specified connection tracking helper.')); + o.modalonly = true; + o.placeholder = _('any'); + for (var i = 0; i < ctHelpers.length; i++) + o.value(ctHelpers[i].name, '%s (%s)'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase())); + o.validate = function(section_id, value) { + if (value == '' || value == null) + return true; + + value = value.replace(/^!\s*/, ''); + + for (var i = 0; i < ctHelpers.length; i++) + if (value == ctHelpers[i].name) + return true; + + return _('Unknown or not installed conntrack helper "%s"').format(value); + }; + + fwtool.addMarkOption(s, false); + fwtool.addLimitOption(s); + fwtool.addLimitBurstOption(s); + + o = s.taboption('advanced', form.Flag, 'v2ray', _('Use V2Ray/XRay'), + _('Forward a port (not a range) from server using V2Ray/XRay proxy (if enabled) instead of VPN')); + o.modalonly = true; + + if (!L.hasSystemFeature('firewall4')) { + o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), + _('Passes additional arguments to iptables. Use with care!')); + o.modalonly = true; + o.rmempty = true; + } + + return m.render(); + } +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js new file mode 100644 index 000000000..0b3a0db1f --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js @@ -0,0 +1,222 @@ +'use strict'; +'require view'; +'require uci'; +'require form'; +'require firewall'; +'require tools.firewall as fwtool'; + + +return view.extend({ + + load: function() { + return Promise.all([ + uci.load('firewall') + ]); + }, + + render: function(data) { + let m, s, o; + + m = new form.Map('firewall', _('Firewall - IP sets'), + _('firewall4 supports referencing and creating IP sets to simplify matching of large address lists without the need to create one rule per item to match. Port ranges in ipsets are unsupported by firewall4.
')); + + var have_fw4 = L.hasSystemFeature('firewall4'); + + if (have_fw4) { + s = m.section(form.NamedSection, 'fwver', 'fwver', '', _('Your device runs firewall4.')); + } else { + s = m.section(form.NamedSection, 'fwver', 'fwver', '', _('Your device does not run firewall4.')); + } + + + s = m.section(form.GridSection, 'ipset', _('IP Sets')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + s.cloneable = true; + s.nodescriptions = true; + s.filter = function(section_id) { + return (section_id.startsWith('bypass') == false && section_id.startsWith('omr_dst') == false && section_id.startsWith('omr_dscp') == false); + }; + + + /* refer to: https://ipset.netfilter.org/ipset.man.html */ + if (have_fw4) { + o = s.option(form.Value, 'name', _('Name')); + o.optional = false; + o.rmempty = false; + o.validate = function (section_id, value) { + if (!/^[a-zA-Z_.][a-zA-Z0-9\/_.-]*$/.test(value)) + return _('Invalid set name'); + + return true; + }; + } else { + o = s.option(form.Value, 'name', _('Name')); + o.depends({ external: '' }); + /* Default: (none) if external is unset + value of external if external is set */ + } + o.placeholder = _('Unnamed set'); + + + /* comment requires https://git.openwrt.org/?p=project/firewall4.git;a=commitdiff;h=39e8c70957c795bf0c12f04299170ae86c6efdf8 */ + o = s.option(form.Value, 'comment', _('Comment')); + o.placeholder = _('Comment'); + o.modalonly = true; + o.rmempty = true; + + + o = s.option(form.ListValue, 'family', _('Family')); + o.value('ipv4', _('IPv4')); + o.value('ipv6', _('IPv6')); + o.default = _('ipv4'); + + + /* Direction src, dst; (Data)Types: ip, port, mac, net or set + Tuples: direction_datatype e.g. src_port, dest_net */ + o = s.option(form.DynamicList, 'match', _('Packet Field Match'), + _('Packet fields to match upon.
' + + 'Syntax: direction_datatype. e.g.: src_port, dest_net.
' + + 'Directions: src, dst. Datatypes: ip, port, mac, net, set.
' + + 'Direction prefixes are optional.
' + + '*Note: datatype set is unsupported in fw4.')); + o.value('ip', _('ip: IP addr')); + o.value('port', _('port: Port')); + o.value('mac', _('mac: MAC addr')); + o.value('net', _('net: (sub)net')); + if (!have_fw4) + o.value('set', _('set: ipset*')); + o.value('src_ip', _('src_ip: Source IP')); + o.value('src_port', _('src_port: Source Port')); + o.value('src_mac', _('src_mac: Source MAC addr')); + o.value('src_net', _('src_net: Source (sub)net')); + if (!have_fw4) + o.value('src_set', _('src_Set: Source ipset*')); // fw4 unsupported + o.value('dest_ip', _('dest_ip: Destination IP')); + o.value('dest_port', _('dest_port: Destination Port')); + o.value('dest_mac', _('dest_mac: Destination MAC addr')); + o.value('dest_net', _('dest_net: Destination (sub)net')); + if (!have_fw4) + o.value('dest_set', _('dest_set: Destination ipset*')); // fw4 unsupported + o.optional = false; + o.rmempty = false; + + + // TODO: if/when firewall5 arrives, this 'else' check must change. + if (have_fw4) { + + //we have fw4 + o = s.option(form.DynamicList, 'entry', _('IPs/Networks/MACs'), + _('macaddr|ip[/cidr]
')); + o.datatype = 'or(ipaddr,macaddr)'; + o.rmempty = true; + + + o = s.option(form.Value, 'maxelem', _('Max Entries'), + _('up to 65536 entries.')); + o.datatype = 'port'; //covers 16 bit size + o.modalonly = true; + o.rmempty = true; + + } else { + // this else section is intended to handle firewall3 + + o = s.option(form.Value, 'external', _('Refer To External Set')); + /* Todo: loop to fill o.values with all other ipset names except itself */ + o.rmempty = true; + o.optional = true; + + + /* 'storage' depends on fw3. It must be removed for fw4 */ + //aka 'method' in netfilter terminology. + o = s.option(form.ListValue, 'storage', _('Storage Method')); + o.value('bitmap', _('bitmap')); //ipv4 only + o.value('hash', _('hash')); + o.value('list', _('list')); + o.validate = function(section_id, value) { + var family = this.section.formvalue(section_id, 'family'); + if (value.match(/bitmap/) && !family.match(/ipv4/)) + return _('bitmap is ipv4 only'); + return true; + } + + /* this iprange differs from netfilters range fromip-toip|ip/cidr: + uci enforces a datatype = cidr in order to be able to enter + an IP for all storage/data types. */ + o = s.option(form.Value, 'iprange', _('IP (range)'), + _('ip[/cidr]
'+ + 'For use with Match datatypes: *_ip.')); + o.datatype = 'ipaddr'; + o.depends({family: 'ipv4', storage: 'bitmap', match: /_ip|_mac/ }); + o.depends({storage: 'hash', match: /_ip/ }); + + + o = s.option(form.DynamicList, 'entry', _('IPs/Networks'), + _('ip[/cidr]
')); + o.datatype = 'or(ipaddr,macaddr)'; + o.depends({storage: 'hash', match: /_ip|_net|_mac/ }); + + + o = s.option(form.Value, 'portrange', _('Port range'), + _('fromport-toport')); + o.datatype = 'neg(portrange)'; + o.depends({family: 'ipv4', storage: 'bitmap', match: /_port/ }); + o.depends({family: 'ipv4', storage: 'hash', match: /_port/ }); + o.depends({family: 'ipv6', storage: 'hash', match: /_port/ }); + + + o = s.option(form.Value, 'netmask', _('Netmask')); + o.datatype = 'or(ip4prefix,ip6prefix)'; + o.depends({family: 'ipv4', storage: 'bitmap', match: /_ip/ }); + o.depends({storage: 'hash', match: /_ip/}); + + + o = s.option(form.Value, 'maxelem', _('Max Length'), + _('up to 65536 entries.')); + o.datatype = 'port'; //covers 16 bit size + o.depends('storage', 'hash'); + o.depends('storage', 'list'); + o.modalonly = true; + + + o = s.option(form.Value, 'hashsize', _('Initial Hash Size')); + o.depends('storage', 'hash'); + o.placeholder = _('1024'); + o.modalonly = true; + + } + + o = s.option(form.FileUpload, 'loadfile', _('Include File'), + _('Path to file of CIDRs, subnets, host IPs, etc.
')); + o.root_directory = '/etc/luci-uploads'; + o.enable_delete = true; + o.enable_upload = true; + o.datatype = 'file'; + o.rmempty = true; + + + o = s.option(form.Value, 'timeout', _('Timeout'), + _('Unit: seconds. Default 0 means the entry is added permanently to the set.
' + + 'Max: 2147483 seconds.')); + o.placeholder = _('0'); + o.modalonly = true; + o.rmempty = true; + + + o = s.option(form.Flag, 'counters', _('Counters'), + _('Enables packet and byte count tracking for the set.')); + o.modalonly = true; + o.rmempty = true; + o.default = false; + + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = true; + o.editable = true; + o.modalonly = false; + + + return m.render(); + } +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js new file mode 100644 index 000000000..8103aa66f --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js @@ -0,0 +1,525 @@ +'use strict'; +'require view'; +'require ui'; +'require rpc'; +'require uci'; +'require form'; +'require firewall as fwmodel'; +'require tools.firewall as fwtool'; +'require tools.widgets as widgets'; + +function rule_proto_txt(s, ctHelpers) { + var f = (uci.get('firewall', s, 'family') || '').toLowerCase().replace(/^(?:any|\*)$/, ''); + + var proto = L.toArray(uci.get('firewall', s, 'proto')).filter(function(p) { + return (p != '*' && p != 'any' && p != 'all'); + }).map(function(p) { + var pr = fwtool.lookupProto(p); + return { + num: pr[0], + name: pr[1], + types: (pr[0] == 1 || pr[0] == 58) ? L.toArray(uci.get('firewall', s, 'icmp_type')) : null + }; + }); + + var m = String(uci.get('firewall', s, 'helper') || '').match(/^(!\s*)?(\S+)$/); + var h = m ? { + val: m[0].toUpperCase(), + inv: m[1], + name: (ctHelpers.filter(function(ctH) { return ctH.name.toLowerCase() == m[2].toLowerCase() })[0] || {}).description + } : null; + + m = String(uci.get('firewall', s, 'mark')).match(/^(!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i); + var w = m ? { + val: m[0].toUpperCase().replace(/X/g, 'x'), + inv: m[1], + num: '0x%02X'.format(+m[2]), + mask: m[3] ? '0x%02X'.format(+m[3]) : null + } : null; + + m = String(uci.get('firewall', s, 'dscp')).match(/^(!\s*)?(?:(CS[0-7]|BE|AF[1234][123]|EF)|(0x[0-9a-f]{1,2}|[0-9]{1,2}))$/); + var d = m ? { + val: m[0], + inv: m[1], + name: m[2], + num: m[3] ? '0x%02X'.format(+m[3]) : null + } : null; + + return fwtool.fmt(_('%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}'), { + ipv4: (!f || f == 'ipv4'), + ipv6: (!f || f == 'ipv6'), + src: uci.get('firewall', s, 'src'), + dest: uci.get('firewall', s, 'dest'), + proto: proto, + helper: h, + mark: w, + dscp: d + }); +} + +function rule_src_txt(s, hosts) { + var z = uci.get('firewall', s, 'src'), + d = (uci.get('firewall', s, 'direction') == 'in') ? uci.get('firewall', s, 'device') : null; + + return fwtool.fmt(_('From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}'), { + src: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(z) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]), + src_ip: fwtool.map_invert(uci.get('firewall', s, 'src_ip'), 'toLowerCase'), + src_mac: fwtool.map_invert(uci.get('firewall', s, 'src_mac'), 'toUpperCase').map(function(v) { return Object.assign(v, { hint: hosts[v.val] }) }), + src_port: fwtool.map_invert(uci.get('firewall', s, 'src_port')), + src_device: d + }); +} + +function rule_dest_txt(s) { + var z = uci.get('firewall', s, 'dest'), + d = (uci.get('firewall', s, 'direction') == 'out') ? uci.get('firewall', s, 'device') : null; + + return fwtool.fmt(_('To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}'), { + dest: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(z) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]), + dest_ip: fwtool.map_invert(uci.get('firewall', s, 'dest_ip'), 'toLowerCase'), + dest_port: fwtool.map_invert(uci.get('firewall', s, 'dest_port')), + dest_device: d + }); +} + +function rule_limit_txt(s) { + var m = String(uci.get('firewall', s, 'limit')).match(/^(\d+)\/([smhd])\w*$/i), + l = m ? { + num: +m[1], + unit: ({ s: _('second'), m: _('minute'), h: _('hour'), d: _('day') })[m[2]], + burst: uci.get('firewall', s, 'limit_burst') + } : null; + + if (!l) + return ''; + + return fwtool.fmt(_('Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}'), { limit: l }); +} + +function rule_target_txt(s, ctHelpers) { + var t = uci.get('firewall', s, 'target'), + h = (uci.get('firewall', s, 'set_helper') || '').toUpperCase(), + s = { + target: t, + src: uci.get('firewall', s, 'src'), + dest: uci.get('firewall', s, 'dest'), + set_helper: h, + set_mark: uci.get('firewall', s, 'set_mark'), + set_xmark: uci.get('firewall', s, 'set_xmark'), + set_dscp: uci.get('firewall', s, 'set_dscp'), + helper_name: (ctHelpers.filter(function(ctH) { return ctH.name.toUpperCase() == h })[0] || {}).description + }; + + switch (t) { + case 'DROP': + return fwtool.fmt(_('Drop %{src?%{dest?forward:input}:output}'), s); + + case 'ACCEPT': + return fwtool.fmt(_('Accept %{src?%{dest?forward:input}:output}'), s); + + case 'REJECT': + return fwtool.fmt(_('Reject %{src?%{dest?forward:input}:output}'), s); + + case 'NOTRACK': + return fwtool.fmt(_('Do not track %{src?%{dest?forward:input}:output}'), s); + + case 'HELPER': + return fwtool.fmt(_('Assign conntrack helper %{set_helper}'), s); + + case 'MARK': + return fwtool.fmt(_('%{set_mark?Assign:XOR} firewall mark %{set_mark?:%{set_xmark}}'), s); + + case 'DSCP': + return fwtool.fmt(_('Assign DSCP classification %{set_dscp}'), s); + + default: + return t; + } +} + +return view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + callConntrackHelpers: rpc.declare({ + object: 'luci', + method: 'getConntrackHelpers', + expect: { result: [] } + }), + + load: function() { + return Promise.all([ + this.callHostHints(), + this.callConntrackHelpers(), + uci.load('firewall') + ]); + }, + + render: function(data) { + if (fwtool.checkLegacySNAT()) + return fwtool.renderMigration(); + else + return this.renderRules(data); + }, + + renderRules: function(data) { + var hosts = data[0], + ctHelpers = data[1], + m, s, o; + + m = new form.Map('firewall', _('Firewall - Traffic Rules'), + _('Traffic rules define policies for packets travelling between different zones, for example to reject traffic between certain hosts or to open WAN ports on the router.')); + + s = m.section(form.GridSection, 'rule', _('Traffic Rules')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + s.cloneable = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + s.tab('timed', _('Time Restrictions')); + + s.filter = function(section_id) { + //return (uci.get('firewall', section_id, 'target') != 'SNAT'); + return (uci.get('firewall', section_id, 'target') != 'SNAT' && section_id.startsWith('omr_dst') == false && section_id.startsWith('omr_dscp') == false); + }; + + s.sectiontitle = function(section_id) { + return uci.get('firewall', section_id, 'name') || _('Unnamed rule'); + }; + + s.handleAdd = function(ev) { + var config_name = this.uciconfig || this.map.config, + section_id = uci.add(config_name, this.sectiontype), + opt1 = this.getOption('src'), + opt2 = this.getOption('dest'); + + opt1.default = 'wan'; + opt2.default = 'lan'; + + this.addedSection = section_id; + this.renderMoreOptionsModal(section_id); + + delete opt1.default; + delete opt2.default; + }; + + o = s.taboption('general', form.Value, 'name', _('Name')); + o.placeholder = _('Unnamed rule'); + o.modalonly = true; + + o = s.option(form.DummyValue, '_match', _('Match')); + o.modalonly = false; + o.textvalue = function(s) { + return E('small', [ + rule_proto_txt(s, ctHelpers), E('br'), + rule_src_txt(s, hosts), E('br'), + rule_dest_txt(s), E('br'), + rule_limit_txt(s) + ]); + }; + + o = s.option(form.ListValue, '_target', _('Action')); + o.modalonly = false; + o.textvalue = function(s) { + return rule_target_txt(s, ctHelpers); + }; + + o = s.option(form.Flag, 'enabled', _('Enable')); + o.modalonly = false; + o.default = o.enabled; + o.editable = true; + o.tooltip = function(section_id) { + var weekdays = uci.get('firewall', section_id, 'weekdays'); + var monthdays = uci.get('firewall', section_id, 'monthdays'); + var start_time = uci.get('firewall', section_id, 'start_time'); + var stop_time = uci.get('firewall', section_id, 'stop_time'); + var start_date = uci.get('firewall', section_id, 'start_date'); + var stop_date = uci.get('firewall', section_id, 'stop_date'); + + if (weekdays || monthdays || start_time || stop_time || start_date || stop_date ) + return _('Time restrictions are enabled for this rule'); + + return null; + }; + + o = s.taboption('advanced', form.ListValue, 'direction', _('Match device')); + o.modalonly = true; + o.value('', _('unspecified')); + o.value('in', _('Inbound device')); + o.value('out', _('Outbound device')); + o.cfgvalue = function(section_id) { + var val = uci.get('firewall', section_id, 'direction'); + switch (val) { + case 'in': + case 'ingress': + return 'in'; + + case 'out': + case 'egress': + return 'out'; + } + + return null; + }; + + o = s.taboption('advanced', widgets.DeviceSelect, 'device', _('Device name'), + _('Specifies whether to tie this traffic rule to a specific inbound or outbound network device.')); + o.modalonly = true; + o.noaliases = true; + o.rmempty = false; + o.depends('direction', 'in'); + o.depends('direction', 'out'); + + o = s.taboption('advanced', form.ListValue, 'family', _('Restrict to address family')); + o.modalonly = true; + o.rmempty = true; + o.value('', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.validate = function(section_id, value) { + fwtool.updateHostHints(this.map, section_id, 'src_ip', value, hosts); + fwtool.updateHostHints(this.map, section_id, 'dest_ip', value, hosts); + return true; + }; + + o = s.taboption('general', fwtool.CBIProtocolSelect, 'proto', _('Protocol')); + o.modalonly = true; + o.default = 'tcp udp'; + + o = s.taboption('advanced', form.MultiValue, 'icmp_type', _('Match ICMP type')); + o.modalonly = true; + o.multiple = true; + o.custom = true; + o.cast = 'table'; + o.placeholder = _('any/all'); + o.value('address-mask-reply'); + o.value('address-mask-request'); + o.value('address-unreachable'); /* icmpv6 1:3 */ + o.value('bad-header'); /* icmpv6 4:0 */ + o.value('certification-path-solicitation-message'); /* icmpv6 148 */ + o.value('certification-path-advertisement-message'); /* icmpv6 149 */ + o.value('communication-prohibited'); + o.value('destination-unreachable'); + o.value('duplicate-address-request'); /* icmpv6 157 */ + o.value('duplicate-address-confirmation'); /* icmpv6 158 */ + o.value('echo-reply'); + o.value('echo-request'); + o.value('extended-echo-request'); /* icmpv6 160 */ + o.value('extended-echo-reply'); /* icmpv6 161 */ + o.value('fmipv6-message'); /* icmpv6 154 */ + o.value('fragmentation-needed'); + o.value('home-agent-address-discovery-reply-message'); /* icmpv6 145 */ + o.value('home-agent-address-discovery-request-message'); /* icmpv6 144 */ + o.value('host-precedence-violation'); + o.value('host-prohibited'); + o.value('host-redirect'); + o.value('host-unknown'); + o.value('host-unreachable'); + o.value('ilnpv6-locator-update-message'); /* icmpv6 156 */ + o.value('inverse-neighbour-discovery-advertisement-message'); /* icmpv6 142 */ + o.value('inverse-neighbour-discovery-solicitation-message'); /* icmpv6 141 */ + o.value('ip-header-bad'); + o.value('mobile-prefix-advertisement'); /* icmpv6 147 */ + o.value('mobile-prefix-solicitation'); /* icmpv6 146 */ + o.value('mpl-control-message'); /* icmpv6 159 */ + o.value('multicast-listener-query'); /* icmpv6 130 */ + o.value('multicast-listener-report'); /* icmpv6 131 */ + o.value('multicast-listener-done'); /* icmpv6 132 */ + o.value('multicast-router-advertisement'); /* icmpv6 151 */ + o.value('multicast-router-solicitation'); /* icmpv6 152 */ + o.value('multicast-router-termination'); /* icmpv6 153 */ + o.value('neighbour-advertisement'); + o.value('neighbour-solicitation'); + o.value('network-prohibited'); + o.value('network-redirect'); + o.value('network-unknown'); + o.value('network-unreachable'); + o.value('no-route'); /* icmpv6 1:0 */ + o.value('node-info-query'); /* icmpv6 139 */ + o.value('node-info-response'); /* icmpv6 140 */ + o.value('packet-too-big'); + o.value('parameter-problem'); + o.value('port-unreachable'); + o.value('precedence-cutoff'); + o.value('protocol-unreachable'); + o.value('redirect'); + o.value('required-option-missing'); + o.value('router-advertisement'); + o.value('router-renumbering'); /* icmpv6 138 */ + o.value('router-solicitation'); + o.value('rpl-control-message'); /* icmpv6 155 */ + o.value('source-quench'); + o.value('source-route-failed'); + o.value('time-exceeded'); + o.value('timestamp-reply'); + o.value('timestamp-request'); + o.value('TOS-host-redirect'); + o.value('TOS-host-unreachable'); + o.value('TOS-network-redirect'); + o.value('TOS-network-unreachable'); + o.value('ttl-zero-during-reassembly'); + o.value('ttl-zero-during-transit'); + o.value('v2-multicast-listener-report'); /* icmpv6 143 */ + o.value('unknown-header-type'); /* icmpv6 4:1 */ + o.value('unknown-option'); /* icmpv6 4:2 */ + o.depends({ proto: 'icmp', '!contains': true }); + o.depends({ proto: 'icmpv6', '!contains': true }); + + o = s.taboption('general', widgets.ZoneSelect, 'src', _('Source zone')); + o.modalonly = true; + o.nocreate = true; + o.allowany = true; + o.allowlocal = 'src'; + + o = s.taboption('advanced', form.Value, 'ipset', _('Use ipset')); + uci.sections('firewall', 'ipset', function(s) { + if (typeof(s.name) == 'string') + o.value(s.name, s.comment ? '%s (%s)'.format(s.name, s.comment) : s.name); + }); + o.modalonly = true; + o.rmempty = true; + + fwtool.addMACOption(s, 'advanced', 'src_mac', _('Source MAC address'), null, hosts); + fwtool.addIPOption(s, 'general', 'src_ip', _('Source address'), null, '', hosts, true); + + o = s.taboption('general', form.Value, 'src_port', _('Source port')); + o.modalonly = true; + o.datatype = 'list(neg(portrange))'; + o.placeholder = _('any'); + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('general', widgets.ZoneSelect, 'dest', _('Destination zone')); + o.modalonly = true; + o.nocreate = true; + o.allowany = true; + o.allowlocal = true; + + fwtool.addIPOption(s, 'general', 'dest_ip', _('Destination address'), null, '', hosts, true); + + o = s.taboption('general', form.Value, 'dest_port', _('Destination port')); + o.modalonly = true; + o.datatype = 'list(neg(portrange))'; + o.placeholder = _('any'); + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('general', form.ListValue, 'target', _('Action')); + o.modalonly = true; + o.default = 'ACCEPT'; + o.value('DROP', _('drop')); + o.value('ACCEPT', _('accept')); + o.value('REJECT', _('reject')); + o.value('NOTRACK', _("don't track")); + o.value('HELPER', _('assign conntrack helper')); + o.value('MARK_SET', _('apply firewall mark')); + o.value('MARK_XOR', _('XOR firewall mark')); + o.value('DSCP', _('DSCP classification')); + o.cfgvalue = function(section_id) { + var t = uci.get('firewall', section_id, 'target'), + m = uci.get('firewall', section_id, 'set_mark'); + + if (t == 'MARK') + return m ? 'MARK_SET' : 'MARK_XOR'; + + return t; + }; + o.write = function(section_id, value) { + return this.super('write', [section_id, (value == 'MARK_SET' || value == 'MARK_XOR') ? 'MARK' : value]); + }; + + fwtool.addMarkOption(s, 1); + fwtool.addMarkOption(s, 2); + fwtool.addDSCPOption(s, true); + + o = s.taboption('general', form.ListValue, 'set_helper', _('Tracking helper'), _('Assign the specified connection tracking helper to matched traffic.')); + o.modalonly = true; + o.placeholder = _('any'); + o.depends('target', 'HELPER'); + for (var i = 0; i < ctHelpers.length; i++) + o.value(ctHelpers[i].name, '%s (%s)'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase())); + + o = s.taboption('advanced', form.Value, 'helper', _('Match helper'), _('Match traffic using the specified connection tracking helper.')); + o.modalonly = true; + o.placeholder = _('any'); + for (var i = 0; i < ctHelpers.length; i++) + o.value(ctHelpers[i].name, '%s (%s)'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase())); + o.validate = function(section_id, value) { + if (value == '' || value == null) + return true; + + value = value.replace(/^!\s*/, ''); + + for (var i = 0; i < ctHelpers.length; i++) + if (value == ctHelpers[i].name) + return true; + + return _('Unknown or not installed conntrack helper "%s"').format(value); + }; + + fwtool.addMarkOption(s, false); + fwtool.addDSCPOption(s, false); + fwtool.addLimitOption(s); + fwtool.addLimitBurstOption(s); + + if (!L.hasSystemFeature('firewall4')) { + o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), + _('Passes additional arguments to iptables. Use with care!')); + o.modalonly = true; + } + + o = s.taboption('timed', form.MultiValue, 'weekdays', _('Week Days')); + o.modalonly = true; + o.multiple = true; + o.display = 5; + o.placeholder = _('Any day'); + o.value('Sun', _('Sunday')); + o.value('Mon', _('Monday')); + o.value('Tue', _('Tuesday')); + o.value('Wed', _('Wednesday')); + o.value('Thu', _('Thursday')); + o.value('Fri', _('Friday')); + o.value('Sat', _('Saturday')); + o.write = function(section_id, value) { + return this.super('write', [ section_id, L.toArray(value).join(' ') ]); + }; + + o = s.taboption('timed', form.MultiValue, 'monthdays', _('Month Days')); + o.modalonly = true; + o.multiple = true; + o.display_size = 15; + o.placeholder = _('Any day'); + o.write = function(section_id, value) { + return this.super('write', [ section_id, L.toArray(value).join(' ') ]); + }; + for (var i = 1; i <= 31; i++) + o.value(i); + + o = s.taboption('timed', form.Value, 'start_time', _('Start Time (hh:mm:ss)')); + o.modalonly = true; + o.datatype = 'timehhmmss'; + + o = s.taboption('timed', form.Value, 'stop_time', _('Stop Time (hh:mm:ss)')); + o.modalonly = true; + o.datatype = 'timehhmmss'; + + o = s.taboption('timed', form.Value, 'start_date', _('Start Date (yyyy-mm-dd)')); + o.modalonly = true; + o.datatype = 'dateyyyymmdd'; + + o = s.taboption('timed', form.Value, 'stop_date', _('Stop Date (yyyy-mm-dd)')); + o.modalonly = true; + o.datatype = 'dateyyyymmdd'; + + o = s.taboption('timed', form.Flag, 'utc_time', _('Time in UTC')); + o.modalonly = true; + o.default = o.disabled; + + return m.render(); + } +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js new file mode 100644 index 000000000..a700475e4 --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js @@ -0,0 +1,397 @@ +'use strict'; +'require view'; +'require ui'; +'require rpc'; +'require uci'; +'require form'; +'require firewall as fwmodel'; +'require tools.firewall as fwtool'; +'require tools.widgets as widgets'; + +function rule_proto_txt(s) { + var family = (uci.get('firewall', s, 'family') || '').toLowerCase().replace(/^(?:all|\*)$/, 'any'); + var sip = uci.get('firewall', s, 'src_ip') || ''; + var dip = uci.get('firewall', s, 'dest_ip') || ''; + var rwip = uci.get('firewall', s, 'snat_ip') || ''; + var proto = L.toArray(uci.get('firewall', s, 'proto')).filter(function(p) { + return (p != '*' && p != 'any' && p != 'all'); + }).map(function(p) { + var pr = fwtool.lookupProto(p); + return { + num: pr[0], + name: pr[1] + }; + }); + + var m = String(uci.get('firewall', s, 'mark')).match(/^(!\s*)?(0x[0-9a-f]{1,8}|[0-9]{1,10})(?:\/(0x[0-9a-f]{1,8}|[0-9]{1,10}))?$/i); + var f = m ? { + val: m[0].toUpperCase().replace(/X/g, 'x'), + inv: m[1], + num: '0x%02X'.format(+m[2]), + mask: m[3] ? '0x%02X'.format(+m[3]) : null + } : null; + + return fwtool.fmt(_('Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}'), { + ipv4: (family == 'ipv4' || family == 'any' || (!family && sip.indexOf(':') == -1 && dip.indexOf(':') == -1 && rwip.indexOf(':') == -1)), + ipv6: (family == 'ipv6' || family == 'any' || (!family && (sip.indexOf(':') != -1 || dip.indexOf(':') != -1 || rwip.indexOf(':') != -1))), + proto: proto, + mark: f + }); +} + +function rule_src_txt(s, hosts) { + var z = uci.get('firewall', s, 'src'); + + return fwtool.fmt(_('From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}'), { + src: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(null) }, [E('em', _('any zone'))]), + src_ip: fwtool.map_invert(uci.get('firewall', s, 'src_ip'), 'toLowerCase'), + src_port: fwtool.map_invert(uci.get('firewall', s, 'src_port')) + }); +} + +function rule_dest_txt(s) { + var z = uci.get('firewall', s, 'src'); + + return fwtool.fmt(_('To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}'), { + dest: E('span', { 'class': 'zonebadge', 'style': fwmodel.getZoneColorStyle(z) }, [(z == '*') ? E('em', _('any zone')) : (z ? E('strong', z) : E('em', _('this device')))]), + dest_ip: fwtool.map_invert(uci.get('firewall', s, 'dest_ip'), 'toLowerCase'), + dest_port: fwtool.map_invert(uci.get('firewall', s, 'dest_port')), + dest_device: uci.get('firewall', s, 'device') + }); +} + +function rule_limit_txt(s) { + var m = String(uci.get('firewall', s, 'limit')).match(/^(\d+)\/([smhd])\w*$/i), + l = m ? { + num: +m[1], + unit: ({ s: _('second'), m: _('minute'), h: _('hour'), d: _('day') })[m[2]], + burst: uci.get('firewall', s, 'limit_burst') + } : null; + + if (!l) + return ''; + + return fwtool.fmt(_('Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}'), { limit: l }); +} + +function rule_target_txt(s) { + var t = uci.get('firewall', s, 'target'), + s = { + target: t, + snat_ip: uci.get('firewall', s, 'snat_ip'), + snat_port: uci.get('firewall', s, 'snat_port') + }; + + switch (t) { + case 'SNAT': + return fwtool.fmt(_('Statically rewrite to source %{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}'), s); + + case 'MASQUERADE': + return fwtool.fmt(_('Automatically rewrite source IP')); + + case 'ACCEPT': + return fwtool.fmt(_('Prevent source rewrite')); + + default: + return t; + } +} + +function validate_opt_family(m, section_id, opt) { + var sopt = m.section.getOption('src_ip'), + dopt = m.section.getOption('dest_ip'), + rwopt = m.section.getOption('snat_ip'), + fmopt = m.section.getOption('family'), + tgopt = m.section.getOption('target'); + + if (!sopt.isValid(section_id) && opt != 'src_ip') + return true; + if (!dopt.isValid(section_id) && opt != 'dest_ip') + return true; + if (!rwopt.isValid(section_id) && opt != 'snat_ip') + return true; + if (!fmopt.isValid(section_id) && opt != 'family') + return true; + if (!tgopt.isValid(section_id) && opt != 'target') + return true; + + var sip = sopt.formvalue(section_id) || '', + dip = dopt.formvalue(section_id) || '', + rwip = rwopt.formvalue(section_id) || '', + fm = fmopt.formvalue(section_id) || '', + tg = tgopt.formvalue(section_id); + + if (fm == 'ipv6' && (sip.indexOf(':') != -1 || sip == '') && (dip.indexOf(':') != -1 || dip == '') && ((rwip.indexOf(':') != -1 && tg == 'SNAT') || rwip == '')) + return true; + if (fm == 'ipv4' && (sip.indexOf(':') == -1) && (dip.indexOf(':') == -1) && ((rwip.indexOf(':') == -1 && tg == 'SNAT') || rwip == '')) + return true; + if (fm == '' || fm == 'any') { + if ((sip.indexOf(':') != -1 || sip == '') && (dip.indexOf(':') != -1 || dip == '') && ((rwip.indexOf(':') != -1 && tg == 'SNAT') || rwip == '')) + return true; + if ((sip.indexOf(':') == -1) && (dip.indexOf(':') == -1) && ((rwip.indexOf(':') == -1 && tg == 'SNAT') || rwip == '')) + return true; + } + + return _('Address family, source address, destination address, rewrite IP address must match'); +} + +return view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + callNetworkDevices: rpc.declare({ + object: 'luci-rpc', + method: 'getNetworkDevices', + expect: { '': {} } + }), + + load: function() { + return Promise.all([ + this.callHostHints(), + this.callNetworkDevices(), + uci.load('firewall') + ]); + }, + + render: function(data) { + if (fwtool.checkLegacySNAT()) + return fwtool.renderMigration(); + else + return this.renderNats(data); + }, + + renderNats: function(data) { + var hosts = data[0], + devs = data[1], + m, s, o; + var fw4 = L.hasSystemFeature('firewall4'); + + m = new form.Map('firewall', _('Firewall - NAT Rules'), + _('NAT rules allow fine grained control over the source IP to use for outbound or forwarded traffic.')); + + s = m.section(form.GridSection, 'nat', _('NAT Rules')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + s.cloneable = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + s.tab('timed', _('Time Restrictions')); + + s.sectiontitle = function(section_id) { + return uci.get('firewall', section_id, 'name') || _('Unnamed NAT'); + }; + + o = s.taboption('general', form.Value, 'name', _('Name')); + o.placeholder = _('Unnamed NAT'); + o.modalonly = true; + + o = s.option(form.DummyValue, '_match', _('Match')); + o.modalonly = false; + o.textvalue = function(s) { + return E('small', [ + rule_proto_txt(s), E('br'), + rule_src_txt(s, hosts), E('br'), + rule_dest_txt(s), E('br'), + rule_limit_txt(s) + ]); + }; + + o = s.option(form.ListValue, '_target', _('Action')); + o.modalonly = false; + o.textvalue = function(s) { + return rule_target_txt(s); + }; + + o = s.option(form.Flag, 'enabled', _('Enable')); + o.modalonly = false; + o.default = o.enabled; + o.editable = true; + + if (fw4) { + o = s.taboption('general', form.ListValue, 'family', _('Restrict to address family')); + o.modalonly = true; + o.rmempty = true; + o.value('any', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.value('', _('automatic')); // infer from zone or used IP addresses + o.cfgvalue = function(section_id) { + var val = this.map.data.get(this.map.config, section_id, 'family'); + + if (!val) + return ''; + else if (val == 'any' || val == 'all' || val == '*') + return 'any'; + else if (val == 'inet' || String(val).indexOf('4') != -1) + return 'ipv4'; + else if (String(val).indexOf('6') != -1) + return 'ipv6'; + }; + o.validate = function(section_id, value) { + fwtool.updateHostHints(this.map, section_id, 'src_ip', value, hosts); + fwtool.updateHostHints(this.map, section_id, 'dest_ip', value, hosts); + return !fw4?true:validate_opt_family(this, section_id, 'family'); + }; + } + + o = s.taboption('general', fwtool.CBIProtocolSelect, 'proto', _('Protocol')); + o.modalonly = true; + o.default = 'all'; + + o = s.taboption('general', widgets.ZoneSelect, 'src', _('Outbound zone')); + o.modalonly = true; + o.rmempty = false; + o.nocreate = true; + o.allowany = true; + o.default = 'lan'; + + o = fwtool.addIPOption(s, 'general', 'src_ip', _('Source address'), + _('Match forwarded traffic from this IP or range.'), !fw4?'ipv4':'', hosts); + o.rmempty = true; + o.datatype = !fw4?'neg(ipmask4("true"))':'neg(ipmask("true"))'; + o.validate = function(section_id, value) { + return !fw4?true:validate_opt_family(this, section_id, 'src_ip'); + }; + + o = s.taboption('general', form.Value, 'src_port', _('Source port'), + _('Match forwarded traffic originating from the given source port or port range.')); + o.modalonly = true; + o.rmempty = true; + o.datatype = 'neg(portrange)'; + o.placeholder = _('any'); + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = fwtool.addIPOption(s, 'general', 'dest_ip', _('Destination address'), + _('Match forwarded traffic directed at the given IP address.'), !fw4?'ipv4':'', hosts); + o.rmempty = true; + o.datatype = !fw4?'neg(ipmask4("true"))':'neg(ipmask("true"))'; + o.validate = function(section_id, value) { + return !fw4?true:validate_opt_family(this, section_id, 'dest_ip'); + }; + + o = s.taboption('general', form.Value, 'dest_port', _('Destination port'), + _('Match forwarded traffic directed at the given destination port or port range.')); + o.modalonly = true; + o.rmempty = true; + o.placeholder = _('any'); + o.datatype = 'neg(portrange)'; + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + o = s.taboption('general', form.ListValue, 'target', _('Action')); + o.modalonly = true; + o.default = 'SNAT'; + o.value('SNAT', _('SNAT - Rewrite to specific source IP or port')); + o.value('MASQUERADE', _('MASQUERADE - Automatically rewrite to outbound interface IP')); + o.value('ACCEPT', _('ACCEPT - Disable address rewriting')); + o.validate = function(section_id, value) { + return !fw4?true:validate_opt_family(this, section_id, 'target'); + }; + + o = fwtool.addLocalIPOption(s, 'general', 'snat_ip', _('Rewrite IP address'), + _('Rewrite matched traffic to the specified source IP address.'), devs); + o.placeholder = null; + o.depends('target', 'SNAT'); + o.validate = function(section_id, value) { + var a = this.formvalue(section_id), + p = this.section.formvalue(section_id, 'snat_port'); + + if ((a == null || a == '') && (p == null || p == '') && value == '') + return _('A rewrite IP must be specified!'); + + return !fw4?true:validate_opt_family(this, section_id, 'snat_ip'); + }; + + o = s.taboption('general', form.Value, 'snat_port', _('Rewrite port'), + _('Rewrite matched traffic to the specified source port or port range.')); + o.modalonly = true; + o.rmempty = true; + o.placeholder = _('do not rewrite'); + o.datatype = 'portrange'; + o.depends({ proto: 'tcp', '!contains': true }); + o.depends({ proto: 'udp', '!contains': true }); + + var have_fw4 = L.hasSystemFeature('firewall4') + if (!have_fw4) { + o = s.taboption('advanced', form.Value, 'ipset', _('Use ipset')); + uci.sections('firewall', 'ipset', function(s) { + if (typeof(s.name) == 'string') + o.value(s.name, s.comment ? '%s (%s)'.format(s.name, s.comment) : s.name); + }); + o.modalonly = true; + o.rmempty = true; + } + + o = s.taboption('advanced', widgets.DeviceSelect, 'device', _('Outbound device'), + _('Matches forwarded traffic using the specified outbound network device.')); + o.noaliases = true; + o.modalonly = true; + o.rmempty = true; + + fwtool.addMarkOption(s, false); + fwtool.addLimitOption(s); + fwtool.addLimitBurstOption(s); + + if (!have_fw4) { + o = s.taboption('advanced', form.Value, 'extra', _('Extra arguments'), + _('Passes additional arguments to iptables. Use with care!')); + o.modalonly = true; + o.rmempty = true; + } + + o = s.taboption('timed', form.MultiValue, 'weekdays', _('Week Days')); + o.modalonly = true; + o.multiple = true; + o.display = 5; + o.placeholder = _('Any day'); + o.value('Sun', _('Sunday')); + o.value('Mon', _('Monday')); + o.value('Tue', _('Tuesday')); + o.value('Wed', _('Wednesday')); + o.value('Thu', _('Thursday')); + o.value('Fri', _('Friday')); + o.value('Sat', _('Saturday')); + o.write = function(section_id, value) { + return this.super('write', [ section_id, L.toArray(value).join(' ') ]); + }; + + o = s.taboption('timed', form.MultiValue, 'monthdays', _('Month Days')); + o.modalonly = true; + o.multiple = true; + o.display_size = 15; + o.placeholder = _('Any day'); + o.write = function(section_id, value) { + return this.super('write', [ section_id, L.toArray(value).join(' ') ]); + }; + for (var i = 1; i <= 31; i++) + o.value(i); + + o = s.taboption('timed', form.Value, 'start_time', _('Start Time (hh:mm:ss)')); + o.modalonly = true; + o.datatype = 'timehhmmss'; + + o = s.taboption('timed', form.Value, 'stop_time', _('Stop Time (hh:mm:ss)')); + o.modalonly = true; + o.datatype = 'timehhmmss'; + + o = s.taboption('timed', form.Value, 'start_date', _('Start Date (yyyy-mm-dd)')); + o.modalonly = true; + o.datatype = 'dateyyyymmdd'; + + o = s.taboption('timed', form.Value, 'stop_date', _('Stop Date (yyyy-mm-dd)')); + o.modalonly = true; + o.datatype = 'dateyyyymmdd'; + + o = s.taboption('timed', form.Flag, 'utc_time', _('Time in UTC')); + o.modalonly = true; + o.default = o.disabled; + + return m.render(); + } +}); diff --git a/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js new file mode 100644 index 000000000..80df278f3 --- /dev/null +++ b/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js @@ -0,0 +1,405 @@ +'use strict'; +'require view'; +'require rpc'; +'require uci'; +'require form'; +'require network'; +'require firewall'; +'require tools.firewall as fwtool'; +'require tools.widgets as widgets'; + +return view.extend({ + callConntrackHelpers: rpc.declare({ + object: 'luci', + method: 'getConntrackHelpers', + expect: { result: [] } + }), + + load: function() { + return Promise.all([ + this.callConntrackHelpers(), + firewall.getDefaults() + ]); + }, + + render: function(data) { + if (fwtool.checkLegacySNAT()) + return fwtool.renderMigration(); + else + return this.renderZones(data); + }, + + renderZones: function(data) { + var ctHelpers = data[0], + fwDefaults = data[1], + m, s, o, inp, out; + var fw4 = L.hasSystemFeature('firewall4'); + + m = new form.Map('firewall', _('Firewall - Zone Settings'), + _('The firewall creates zones over your network interfaces to control network traffic flow.')); + + s = m.section(form.TypedSection, 'defaults', _('General Settings')); + s.anonymous = true; + s.addremove = false; + + o = s.option(form.Flag, 'synflood_protect', _('Enable SYN-flood protection')); + o.cfgvalue = function(section_id) { + var val = uci.get('firewall', section_id, 'synflood_protect'); + return (val != null) ? val : uci.get('firewall', section_id, 'syn_flood'); + }; + o.write = function(section_id, value) { + uci.unset('firewall', section_id, 'syn_flood'); + uci.set('firewall', section_id, 'synflood_protect', value); + }; + o.remove = function(section_id) { + uci.unset('firewall', section_id, 'syn_flood'); + uci.unset('firewall', section_id, 'synflood_protect'); + }; + + o = s.option(form.Flag, 'drop_invalid', _('Drop invalid packets')); + + var p = [ + s.option(form.ListValue, 'input', _('Input')), + s.option(form.ListValue, 'output', _('Output')), + s.option(form.ListValue, 'forward', _('Forward')) + ]; + + for (var i = 0; i < p.length; i++) { + p[i].value('REJECT', _('reject')); + p[i].value('DROP', _('drop')); + p[i].value('ACCEPT', _('accept')); + } + + /* Netfilter flow offload support */ + + if (L.hasSystemFeature('offloading')) { + s = m.section(form.TypedSection, 'defaults', _('Routing/NAT Offloading'), + _('Not fully compatible with QoS/SQM.')); + + s.anonymous = true; + s.addremove = false; + + o = s.option(form.RichListValue, "offloading_type", _("Flow offloading type")); + o.value('0', _("None")); + o.value('1', _("Software flow offloading"), _('Software based offloading for routing/NAT.')); + o.value('2', _("Hardware flow offloading"), _('Hardware based offloading for routing with/without NAT.') + ' ' + _(' Requires hardware NAT support.')); + o.optional = false; + o.load = function (section_id) { + var flow_offloading = uci.get('firewall', section_id, 'flow_offloading'); + var flow_offloading_hw = uci.get('firewall', section_id, 'flow_offloading_hw'); + return (flow_offloading === '1') + ? (flow_offloading_hw === '1' ? '2' : '1') + : '0'; + }; + o.write = function(section_id, value) { + uci.set('firewall', section_id, 'flow_offloading', value === '0' ? null : '1'); + uci.set('firewall', section_id, 'flow_offloading_hw', value === '2' ? '1' : null); + }; + } + + + s = m.section(form.GridSection, 'zone', _('Zones')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + s.nodescriptions = true; + + s.handleRemove = function(section_id, ev) { + return firewall.deleteZone(section_id).then(L.bind(function() { + return this.super('handleRemove', [section_id, ev]); + }, this)); + }; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + s.tab('conntrack', _('Conntrack Settings')); + s.tab('extra', _('Extra iptables arguments')); + + o = s.taboption('general', form.DummyValue, '_generalinfo'); + o.rawhtml = true; + o.modalonly = true; + o.cfgvalue = function(section_id) { + var name = uci.get('firewall', section_id, 'name'); + if (name == null) + name = _("this new zone"); + return _('This section defines common properties of %q. The input and output options set the default policies for traffic entering and leaving this zone while the forward option describes the policy for forwarded traffic between different networks within the zone. Covered networks specifies which available networks are members of this zone.') + .replace(/%s/g, name).replace(/%q/g, '"' + name + '"'); + }; + + o = s.taboption('general', form.Value, 'name', _('Name')); + o.placeholder = _('Unnamed zone'); + o.modalonly = true; + o.rmempty = false; + o.datatype = 'and(uciname,maxlength(11))'; + o.write = function(section_id, formvalue) { + var cfgvalue = this.cfgvalue(section_id); + + if (cfgvalue == null || cfgvalue == '') + return uci.set('firewall', section_id, 'name', formvalue); + else if (cfgvalue != formvalue) + return firewall.renameZone(cfgvalue, formvalue); + }; + + o = s.option(widgets.ZoneForwards, '_info', _('Zone ⇒ Forwardings')); + o.editable = true; + o.modalonly = false; + o.cfgvalue = function(section_id) { + return uci.get('firewall', section_id, 'name'); + }; + + var p = [ + s.taboption('general', form.ListValue, 'input', _('Input')), + s.taboption('general', form.ListValue, 'output', _('Output')), + s.taboption('general', form.ListValue, 'forward', _('Intra zone forward')) + ]; + + for (var i = 0; i < p.length; i++) { + p[i].value('REJECT', _('reject')); + p[i].value('DROP', _('drop')); + p[i].value('ACCEPT', _('accept')); + p[i].editable = true; + } + + p[0].default = fwDefaults.getInput(); + p[1].default = fwDefaults.getOutput(); + p[2].default = fwDefaults.getForward(); + + o = s.taboption('general', form.Flag, 'masq', _('Masquerading'), + _('Enable network address and port translation IPv4 (NAT4 or NAPT4) for outbound traffic on this zone. This is typically enabled on the wan zone.')); + o.editable = true; + o.tooltip = function(section_id) { + var family = uci.get('firewall', section_id, 'family') + var masq_src = uci.get('firewall', section_id, 'masq_src') + var masq_dest = uci.get('firewall', section_id, 'masq_dest') + if ((!family || family.indexOf('6') == -1) && (masq_src || masq_dest)) + return _('Limited masquerading enabled'); + + return null; + }; + + /* + o = s.taboption('general', form.Flag, 'fullcone', _('Full Cone')); + o.editable = true; + o.depends('masq', '1'); + + o = s.taboption('general', form.Flag, 'fullcone6', _('Full Cone IPv6')); + o.editable = true; + o.depends('masq', '1'); + */ + + o = s.taboption('general', form.Flag, 'mtu_fix', _('MSS clamping')); + o.modalonly = true; + + o = s.taboption('general', widgets.NetworkSelect, 'network', _('Covered networks')); + o.modalonly = true; + o.multiple = true; + o.cfgvalue = function(section_id) { + return uci.get('firewall', section_id, 'network'); + }; + o.write = function(section_id, formvalue) { + var name = uci.get('firewall', section_id, 'name'), + cfgvalue = this.cfgvalue(section_id), + oldNetworks = L.toArray(cfgvalue), + newNetworks = L.toArray(formvalue); + + oldNetworks.sort(); + newNetworks.sort(); + + if (oldNetworks.join(' ') == newNetworks.join(' ')) + return; + + var tasks = [ firewall.getZone(name) ]; + + if (Array.isArray(formvalue)) + for (var i = 0; i < newNetworks.length; i++) { + var netname = newNetworks[i]; + tasks.push(network.getNetwork(netname).then(L.bind(function(netname, net) { + return net || network.addNetwork(netname, { 'proto': 'none' }); + }, this, netname))); + } + + return Promise.all(tasks).then(function(zone_networks) { + if (zone_networks[0]) { + zone_networks[0].clearNetworks(); + for (var i = 1; i < zone_networks.length; i++) + zone_networks[0].addNetwork(zone_networks[i].getName()); + } + }); + }; + + o = s.taboption('advanced', form.DummyValue, '_advancedinfo'); + o.rawhtml = true; + o.modalonly = true; + o.cfgvalue = function(section_id) { + var name = uci.get('firewall', section_id, 'name'); + if (name == null) + name = _("this new zone"); + return _('The options below control the forwarding policies between this zone (%s) and other zones. Destination zones cover forwarded traffic originating from %q. Source zones match forwarded traffic from other zones targeted at %q. The forwarding rule is unidirectional, e.g. a forward from lan to wan does not imply a permission to forward from wan to lan as well.') + .format(name); + }; + + o = s.taboption('advanced', widgets.DeviceSelect, 'device', _('Covered devices'), _('Use this option to classify zone traffic by raw, non-uci managed network devices.')); + o.modalonly = true; + o.noaliases = true; + o.multiple = true; + + o = s.taboption('advanced', form.DynamicList, 'subnet', _('Covered subnets'), _('Use this option to classify zone traffic by source or destination subnet instead of networks or devices.')); + o.datatype = 'neg(cidr("true"))'; + o.modalonly = true; + o.multiple = true; + + if (fw4) { + o = s.taboption('advanced', form.Flag, 'masq6', _('IPv6 Masquerading'), + _('Enable network address and port translation IPv6 (NAT6 or NAPT6) for outbound traffic on this zone.')); + o.modalonly = true; + o.tooltip = function(section_id) { + var family = uci.get('firewall', section_id, 'family') + var masq_src = uci.get('firewall', section_id, 'masq_src') + var masq_dest = uci.get('firewall', section_id, 'masq_dest') + if ((!family || family.indexOf('6') >= 0) && (masq_src || masq_dest)) + return _('Limited masquerading enabled'); + return null; + }; + } + + o = s.taboption('advanced', form.ListValue, 'family', _('Restrict to address family')); + o.value('', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.modalonly = true; + + o = s.taboption('advanced', form.DynamicList, 'masq_src', _('Restrict Masquerading to given source subnets')); + if (fw4) { + o.datatype = 'list(neg(or(uciname,hostname,ipmask)))'; + } else { + o.depends('family', ''); + o.depends('family', 'ipv4'); + o.datatype = 'list(neg(or(uciname,hostname,ipmask4)))'; + } + o.placeholder = '0.0.0.0/0'; + o.modalonly = true; + + o = s.taboption('advanced', form.DynamicList, 'masq_dest', _('Restrict Masquerading to given destination subnets')); + if (fw4) { + o.datatype = 'list(neg(or(uciname,hostname,ipmask)))'; + } else { + o.depends('family', ''); + o.depends('family', 'ipv4'); + o.datatype = 'list(neg(or(uciname,hostname,ipmask4)))'; + } + o.placeholder = '0.0.0.0/0'; + o.modalonly = true; + + o = s.taboption('conntrack', form.Flag, 'masq_allow_invalid', _('Allow "invalid" traffic'), _('Do not install extra rules to reject forwarded traffic with conntrack state invalid. This may be required for complex asymmetric route setups.')); + o.modalonly = true; + + o = s.taboption('conntrack', form.Flag, 'auto_helper', _('Automatic helper assignment'), _('Automatically assign conntrack helpers based on traffic protocol and port')); + o.default = o.enabled; + o.modalonly = true; + + o = s.taboption('conntrack', form.MultiValue, 'helper', _('Conntrack helpers'), _('Explicitly choses allowed connection tracking helpers for zone traffic')); + o.depends('auto_helper', '0'); + o.modalonly = true; + for (var i = 0; i < ctHelpers.length; i++) + o.value(ctHelpers[i].name, E('%s (%s)%s'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase(), ctHelpers[i].name.toUpperCase()))); + + o = s.taboption('advanced', form.Flag, 'log', _('Enable logging on this zone')); + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'log_limit', _('Limit log messages')); + o.depends('log', '1'); + o.placeholder = '10/minute'; + o.modalonly = true; + + if (!L.hasSystemFeature('firewall4')) { + o = s.taboption('extra', form.DummyValue, '_extrainfo'); + o.rawhtml = true; + o.modalonly = true; + o.cfgvalue = function(section_id) { + return _('Passing raw iptables arguments to source and destination traffic classification rules allows to match packets based on other criteria than interfaces or subnets. These options should be used with extreme care as invalid values could render the firewall ruleset broken, completely exposing all services.'); + }; + + o = s.taboption('extra', form.Value, 'extra_src', _('Extra source arguments'), _('Additional raw iptables arguments to classify zone source traffic, e.g. -p tcp --sport 443 to only match inbound HTTPS traffic.')); + o.modalonly = true; + o.cfgvalue = function(section_id) { + return uci.get('firewall', section_id, 'extra_src') || uci.get('firewall', section_id, 'extra'); + }; + o.write = function(section_id, value) { + uci.unset('firewall', section_id, 'extra'); + uci.set('firewall', section_id, 'extra_src', value); + }; + + o = s.taboption('extra', form.Value, 'extra_dest', _('Extra destination arguments'), _('Additional raw iptables arguments to classify zone destination traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS traffic.')); + o.modalonly = true; + o.cfgvalue = function(section_id) { + return uci.get('firewall', section_id, 'extra_dest') || uci.get('firewall', section_id, 'extra_src') || uci.get('firewall', section_id, 'extra'); + }; + o.write = function(section_id, value) { + uci.unset('firewall', section_id, 'extra'); + uci.set('firewall', section_id, 'extra_dest', value); + }; + } + + o = s.taboption('general', form.DummyValue, '_forwardinfo'); + o.rawhtml = true; + o.modalonly = true; + o.cfgvalue = function(section_id) { + var name = uci.get('firewall', section_id, 'name'); + if (name == null) + name = _("this new zone"); + return _('The options below control the forwarding policies between this zone (%s) and other zones. Destination zones cover forwarded traffic originating from %q. Source zones match forwarded traffic from other zones targeted at %q. The forwarding rule is unidirectional, e.g. a forward from lan to wan does not imply a permission to forward from wan to lan as well.') + .format(name); + }; + + out = o = s.taboption('general', widgets.ZoneSelect, 'out', _('Allow forward to destination zones:')); + o.nocreate = true; + o.multiple = true; + o.modalonly = true; + o.filter = function(section_id, value) { + return (uci.get('firewall', section_id, 'name') != value); + }; + o.cfgvalue = function(section_id) { + var out = (this.option == 'out'), + zone = this.lookupZone(uci.get('firewall', section_id, 'name')), + fwds = zone ? zone.getForwardingsBy(out ? 'src' : 'dest') : [], + value = []; + + for (var i = 0; i < fwds.length; i++) + value.push(out ? fwds[i].getDestination() : fwds[i].getSource()); + + return value; + }; + o.write = o.remove = function(section_id, formvalue) { + var out = (this.option == 'out'), + zone = this.lookupZone(uci.get('firewall', section_id, 'name')), + fwds = zone ? zone.getForwardingsBy(out ? 'src' : 'dest') : []; + + if (formvalue == null) + formvalue = []; + + if (Array.isArray(formvalue)) { + for (var i = 0; i < fwds.length; i++) { + var cmp = out ? fwds[i].getDestination() : fwds[i].getSource(); + if (!formvalue.filter(function(d) { return d == cmp }).length) + zone.deleteForwarding(fwds[i]); + } + + for (var i = 0; i < formvalue.length; i++) + if (out) + zone.addForwardingTo(formvalue[i]); + else + zone.addForwardingFrom(formvalue[i]); + } + }; + + inp = o = s.taboption('general', widgets.ZoneSelect, 'in', _('Allow forward from source zones:')); + o.nocreate = true; + o.multiple = true; + o.modalonly = true; + o.write = o.remove = out.write; + o.filter = out.filter; + o.cfgvalue = out.cfgvalue; + + return m.render(); + } +}); diff --git a/luci-app-firewall/po/ar/firewall.po b/luci-app-firewall/po/ar/firewall.po new file mode 100644 index 000000000..89ce2dbce --- /dev/null +++ b/luci-app-firewall/po/ar/firewall.po @@ -0,0 +1,1589 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-07-16 16:41+0000\n" +"Last-Translator: Rex_sa \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "- إضافة IP -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "- اضافة MAC -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"‍‎Accept %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "منع إعادة كتابة المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"‎Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"‎Drop %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"تعيين تصنيف DSCP %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"تعيين مساعد التعقب %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"علامة جدار الحماية %{set_mark?Assign:XOR} " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "‎Automatically rewrite source IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"‎Do not track %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"‎Reject %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"‎Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "يجب تحديد إعادة كتابة IP!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "قبول - تعطيل إعادة كتابة العنوان" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "إجراء" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"وسيطات iptables خام إضافية لتصنيف حركة مرور وجهة المنطقة ، على " +"سبيل المثال -p tcp --dport 443 لمطابقة حركة مرور HTTPS " +"الصادرة فقط." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"وسيطات iptables خام إضافية لتصنيف حركة مرور مصدر المنطقة ، على " +"سبيل المثال -p tcp --sport 443 لمطابقة حركة مرور HTTPS " +"الواردة فقط." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "عائلة العنوان، يجب أن تتطابق عنوان IP الداخلي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"يجب أن تتطابق عائلة العنوان وعنوان المصدر وعنوان الوجهة وإعادة كتابة عنوان IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "إعدادات متقدمة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "السماح بحركة المرور \"الغير الصالحة\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "السماح بإعادة التوجيه من مناطق المصدر :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "السماح بإعادة التوجيه إلى مناطق الوجهة :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "أي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "اي يوم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"قم بتطبيق XOR على مستوى بت للقيمة المحددة وقيمة العلامة الحالية على " +"الاتصالات القائمة. التنسيق هو القيمة [/ القناع]. إذا تم تحديد قناع ، فسيتم " +"التخلص من البتات المحددة في القناع." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "قم بتطبيق فئة أو قيمة DSCP المحددة على الاتصالات القائمة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "قم بتعيين مساعد تتبع الاتصال المحدد لحركة المرور المتطابقة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "تعيين المساعد التلقائي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "قم بتعيين مساعدي conntrack تلقائيًا بناءً على بروتوكول المرور والبوابة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "تعليق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "إعدادات Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "مساعدين كونتراك" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "تم حفظ المحتويات." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "يكمل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "الأجهزة المغطاة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "الشبكات المغطاة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "الشبكات الفرعية المغطاة" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "القواعد المخصصة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"تسمح لك القواعد المخصصة بتنفيذ أوامر iptables التعسفية التي لا يغطيها إطار " +"عمل جدار الحماية. يتم تنفيذ الأوامر بعد كل إعادة تشغيل لجدار الحماية ، " +"مباشرة بعد تحميل مجموعة القواعد الافتراضية." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "تصنيف DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "علامة DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "علامة DSCP مطلوبة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "عنوان الوجهة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "بوابة الوجهة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "منطقة الوجهة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "اسم الجهاز" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"لا تقم بتثبيت قواعد إضافية لرفض حركة المرور المعاد توجيهها مع حالة conntrack " +" غير صالحة . قد يكون هذا مطلوبًا لإعدادات المسار غير المتماثلة " +"المعقدة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "قم بإسقاط الحزم غير الصالحة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "شغل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "تفعيل NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "تفعيل الحماية من الفيضانات SYN" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "قم بتمكين تسجيل الدخول إلى هذه المنطقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "مفعَّل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "توقع: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "يختار صراحة مساعدي تتبع الاتصال المسموح به لحركة مرور المنطقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "عنوان IP خارجي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "منفذ خارجي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "حجج اضافية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "وسيطات الوجهة الإضافية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "حجج iptables الإضافية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "حجج مصدر إضافي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "جدار الحماية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "جدار الحماية - القواعد المخصصة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "جدار الحماية - قواعد NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "جدار الحماية - منفذ إلى الأمام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "جدار الحماية - قواعد المرور" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "جدار الحماية - إعدادات المنطقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "ترحيل تكوين جدار الحماية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "إلى الأمام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "الجمعة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"ابتداءً من %{src}%{ src_device?, interface %{src_device}%{src_ip?، " +"IP %{ src_ip#%{ next?, }%{ item.ival}}} %{ src_port?, port " +"%{ src_port#%{ next?, }%{ item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"من %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"من %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "الاعدادات العامة" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "منح الوصول إلى تكوين جدار الحماية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "تفريغ تدفق الأجهزة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "مجموعات IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 و IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "IPv4 فقط" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "IPv6 فقط" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "جهاز وارد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "إدخال" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "عنوان IP الداخلي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "منفذ داخلي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "المنطقة الداخلية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "علامة DSCP غير صالحة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "قيمة حد غير صالحة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "حد الطلقات" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "تقييد رسائل السجل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "حد المطابقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"مطابقة محدودة ل ٪ {limit.num} حزم لكل ٪ {limit.unit} ٪ {limit.burst؟ انفجار ٪ {limit.burst} }" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "تمكين التنكر المحدود" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "يحد من مطابقة حركة المرور إلى المعدل المحدد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP مصدر الاسترجاع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - إعادة الكتابة تلقائيًا إلى عنوان IP للواجهة الصادرة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "لقط MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "تنكر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "تطابق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "تطابق DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "تطابق نوع ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "تطابق الأجهزة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "تطابق حركة المرور المعاد توجيهها إلى عنوان IP المحدد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"تطابق حركة المرور المعاد توجيهها إلى منفذ الوجهة المحدد أو نطاق المنفذ." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "تطابق حركة المرور المعاد توجيهها من هذا IP أو النطاق." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"تطابق حركة المرور المعاد توجيهها الناشئة من منفذ المصدر المحدد أو نطاق " +"المنفذ." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "مساعد المطابقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"تطابق حركة المرور الواردة الموجهة إلى منفذ الوجهة المحدد أو نطاق المنفذ على " +"هذا المضيف" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "علامة المطابقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "تطابق حركة المرور باستخدام مساعد تتبع الاتصال المحدد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "يتطابق مع علامة جدار حماية معينة أو نطاق من العلامات المختلفة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "يطابق حركة المرور المعاد توجيهها باستخدام جهاز الشبكة الصادرة المحدد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "يطابق حركة المرور التي تحمل علامة DSCP المحددة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"الحد الأقصى لعدد الحزم التي يجب مطابقتها: يتم إعادة شحن هذا الرقم بواحدة في " +"كل مرة لا يتم فيها الوصول إلى الحد المحدد أعلاه ، حتى هذا الرقم." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "الإثنين" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "أيام الشهر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "قواعد NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"تسمح قواعد NAT بالتحكم الدقيق في عنوان IP المصدر لاستخدامه في حركة المرور " +"الصادرة أو المُعاد توجيهها." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "اسم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "غير متوافق تمامًا مع QoS / SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "تطابق حركة المرور الواردة الموجهة إلى عنوان IP المحدد فقط." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "تطابق فقط حركة المرور الواردة من أجهزة MAC هذه." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "تطابق فقط حركة المرور الواردة من هذا IP أو النطاق." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"تطابق فقط حركة المرور الواردة الصادرة من منفذ المصدر المحدد أو نطاق المنفذ " +"على مضيف العميل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "جهاز الصادر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "المنطقة الصادرة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "انتاج" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "يمرر الحجج الإضافية إلى iptables. استخدم بعناية!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"يسمح تمرير وسيطات iptables الأولية إلى قواعد تصنيف حركة المرور إلى المصدر " +"والوجهة بمطابقة الحزم بناءً على معايير أخرى غير الواجهات أو الشبكات الفرعية. " +"يجب استخدام هذه الخيارات بحذر شديد نظرًا لأن القيم غير الصالحة قد تؤدي إلى " +"كسر مجموعة قواعد جدار الحماية ، مما يؤدي إلى تعريض جميع الخدمات تمامًا." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "بوابة التوجيه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"يسمح إعادة توجيه المنفذ لأجهزة الكمبيوتر البعيدة على الإنترنت بالاتصال " +"بكمبيوتر أو خدمة معينة داخل شبكة LAN الخاصة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "البروتوكول" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"إعادة توجيه حركة المرور الواردة المتطابقة إلى المنفذ المحدد على المضيف " +"الداخلي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "إعادة توجيه حركة المرور الواردة المتطابقة إلى المضيف الداخلي المحدد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "يتطلب دعم NAT للأجهزة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "قصر التنكر على الشبكات الفرعية للوجهة المحددة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "قصر التنكر على الشبكات الفرعية للمصدر المحدد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "تقييد لمعالجة الأسرة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "أعد كتابة عنوان IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "أعد كتابة حركة المرور المتطابقة إلى عنوان IP المصدر المحدد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "أعد كتابة حركة المرور المتطابقة إلى منفذ المصدر المحدد أو نطاق المنفذ." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "أعد كتابة المنفذ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "التوجيه / تفريغ NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - إعادة الكتابة إلى عنوان IP أو منفذ معين" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "السبت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "وضع علامة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"قم بتعيين قيمة العلامة المحددة على الاتصالات القائمة. التنسيق هو القيمة [/ " +"القناع]. إذا تم تحديد قناع ، فسيتم تعديل وحدات البت المحددة في القناع فقط." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "تفريغ تدفق البرنامج" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "عنوان IP المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "عنوان MAC المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "عنوان المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "منفذ المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "منطقة المصدر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"يحدد ما إذا كان سيتم ربط قاعدة حركة المرور هذه بجهاز شبكة محدد وارد أو صادر." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"يحدد ما إذا كان سيتم استخدام عنوان IP الخارجي أو الداخلي لحركة المرور " +"المنعكسة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "تاريخ البدء (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "وقت البدء (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "تاريخ التوقف (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "وقت التوقف (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "الأحد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "يجب تغيير تكوين جدار الحماية الحالي لكي يعمل LuCI بشكل صحيح." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"يقوم جدار الحماية بإنشاء مناطق عبر واجهات الشبكة للتحكم في تدفق حركة مرور " +"الشبكة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"تتحكم الخيارات أدناه في سياسات إعادة التوجيه بين هذه المنطقة (%s) والمناطق " +"الأخرى. تغطي مناطق الوجهة حركة المرور المعاد توجيهها " +"الناشئة عن %q. تتطابق مناطق المصدر مع حركة المرور " +"المعاد توجيهها من المناطق الأخرى المستهدفة بنسبة %q. قاعدة " +"إعادة التوجيه أحادية الاتجاه، على سبيل المثال، لا يعني " +"التقدم من الشبكة المحلية إلى الشبكة المحلية إذنًا بإعادة التوجيه من الشبكة " +"المحلية إلى الشبكة المحلية أيضًا." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"يحدد هذا القسم الخصائص العامة ل q%. يعين خياري الإدخال و " +"الإخراج السياسات الافتراضية لحركة المرور التي تدخل وتغادر هذه المنطقة " +"بينما يصف خيار إعادة التوجيه سياسة حركة المرور المعاد توجيهها بين " +"الشبكات المختلفة داخل المنطقة. تحدد الشبكات المغطاة الشبكات " +"المتاحة الأعضاء في هذه المنطقة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "الخميس" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "قيود الوقت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "الوقت بالتوقيت العالمي المنسق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "تم تمكين قيود الوقت لهذه القاعدة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "نفذ الوقت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"إلى%{dest}%{ dest_device?, interface %{dest_device}}%{ dest_ip?، " +"IP %{ dest_ip#%{ next?, }%{ item.ival}}} %{ dest_port?, port " +"%{ dest_port#%{ next?, }%{ item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "مساعد التتبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "قواعد المرور" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"تحدد قواعد المرور سياسات الحزم التي تنتقل بين مناطق مختلفة ، على سبيل المثال " +"لرفض حركة المرور بين مضيفين معينين أو لفتح منافذ WAN على جهاز التوجيه." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "الثلاثاء" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "تعذر حفظ المحتويات: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "مساعد conntrack غير معروف أو غير مثبت \" %s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT بدون اسم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "تقدم بدون إسم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "قاعدة بدون اسم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "منطقة بدون اسم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "بروتوكول غير معروف" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"عند الضغط على \"متابعة\" ، سيتم تحويل أقسام \"إعادة التوجيه\" ذات الهدف " +"\"SNAT\" إلى أقسام \"nat\" وسيتم إعادة تشغيل جدار الحماية لتطبيق التكوين " +"المحدث." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "استخدم عنوان IP خارجي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "استخدم عنوان IP الداخلي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"استخدم هذا الخيار لتصنيف حركة مرور المنطقة عن طريق أجهزة الشبكة الأولية غير " +" uci ." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"استخدم هذا الخيار لتصنيف حركة مرور المنطقة حسب المصدر أو الشبكة الفرعية " +"الوجهة بدلاً من الشبكات أو الأجهزة." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "مطلوب علامة صالحة لجدار الحماية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "الأربعاء" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "أيام الأسبوع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "علامة جدار الحماية XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "علامة XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "المنطقة=> تَوجِيه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "المناطق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "قبول" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "أي" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "أي منطقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "تطبيق علامة جدار الحماية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "تعيين مساعد conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "يوم" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "لا تعيد الكتابة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "لا تتبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "إبعاد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "ساعة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "دقيقة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "رفض" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "ثانية" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "هذا الجهاز" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "هذه المنطقة الجديدة" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "غير محدود" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "غير محدد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "علامة جدار حماية صالحة" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "برنامج التفريغ القائم على التوجيه / NAT" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" + +#, fuzzy +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" diff --git a/luci-app-firewall/po/bg/firewall.po b/luci-app-firewall/po/bg/firewall.po new file mode 100644 index 000000000..cf10f4dfd --- /dev/null +++ b/luci-app-firewall/po/bg/firewall.po @@ -0,0 +1,1445 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-10-17 17:10+0000\n" +"Last-Translator: Boyan Alexiev \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.8-rc\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +#, fuzzy +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Изходящ} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP с типове %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- добави IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- добави MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Действие" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Разширени настройки" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Разрешаване на \"невалиден\" трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Разрешаване на препращане от изходящи зони :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Разрешаване на препращане към дестинационни зони :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Всички" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Всеки ден" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Настройки на Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Помощници на Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Съдържанието е записано." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Продължи" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Обхванати устройства" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Обхванати мрежи" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Обхванати подмрежи" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Потребителски правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Адрес на дестинацията" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Дестинейшън Порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Дестинейшън зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Име на устройството" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Изпускане на невалидни пакети" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Включване" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Разрешаване на NAT loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Активиране на SYN-flood защита" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Разрешаване на журнал в тази зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Позволен" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Очакване: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Външен IP адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Външен порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Допълнителни аргументи" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Допълнителни аргументи за дестинацията" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Допълнителни аргументи на iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Допълнителни аргументи за източника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Защитна стена" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Защитна стена - Потребителски правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Защитна стена - NAT правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Защитна стена - препращане на портове" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Защитна стена - Трафик правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Защитна стена - Настройки на зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Миграция на конфигурацията на защитната стена" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Напред" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Петък" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Общи настройки" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Предоставяне на достъп до конфигурацията на защитната стена" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Хардуерно разтоварване на потока" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 и IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Само IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Само IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Входящо устройство" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Вход" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Вътрешен IP адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Вътрешен порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Вътрешна зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Бърст лимит" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Ограничаване на съобщенията в журнала" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Ограничи съвпадащаите" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Ограничава съвпадащия трафик до определената скорост." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Понеделник" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Име" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Не е напълно съвместима с QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Събота" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Неделя" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Четвъртък" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Таймаут" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Вторник" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Сряда" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/bn_BD/firewall.po b/luci-app-firewall/po/bn_BD/firewall.po new file mode 100644 index 000000000..62d8e12bc --- /dev/null +++ b/luci-app-firewall/po/bn_BD/firewall.po @@ -0,0 +1,1431 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2021-10-08 18:54+0000\n" +"Last-Translator: Rayhan Nabi \n" +"Language-Team: Bengali (Bangladesh) \n" +"Language: bn_BD\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.9-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "উন্নত সেটিংস" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "সক্রিয় করুন" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "সাধারণ সেটিংস" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "প্রোটোকল" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/ca/firewall.po b/luci-app-firewall/po/ca/firewall.po new file mode 100644 index 000000000..2aaab8960 --- /dev/null +++ b/luci-app-firewall/po/ca/firewall.po @@ -0,0 +1,1461 @@ +# luci-fw.pot +# generated from ./applications/luci-fw/luasrc/i18n/luci-fw.en.lua +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-03-18 11:11+0000\n" +"Last-Translator: \"S. Barj.\" \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Acció" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Configuració avançada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Permet el reenviament des dels zones d'origen:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Permet el reenviament als zones de destí:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Qualsevol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "S'han desat els continguts." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Continua" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Xarxes cobertes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Regles personalitzades" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Les regles personalitzades us permet executar ordres del iptables arbitraris " +"que la infraestructura de tallafocs no cobreix d'altra manera. Aquests " +"ordres s'executen després de cada reinici de tallafocs, just després el " +"conjunt de regles per defecte s'ha carregat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Adreça de destí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Port de destí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Zona de destí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Descarta els paquets invàlids" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Activa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Habilita protecció contra la inundació SYN" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Habilita el registre d'aquesta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Adreça IP extern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Port extern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Paràmetres extres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Tallafocs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Tallafocs - Regles personalitzades" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Tallafocs - Reenviaments de port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Tallafocs - Regles de tràfic" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Tallafocs - Ajusts de zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Reenvia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Divendres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Paràmetres generals" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 i IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Només IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Només IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Adreça IP interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Port intern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Zona interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Limita els missatges de registre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Fixació MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Mascarada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Coincideix" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Coincideix amb el tipus ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Coincideix amb trànsit entrant dirigit al port o rang de ports de destí en " +"aquest host donat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Dilluns" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Només coincideix amb trànsit entrant dirigit a la adreça IP donada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Només coincideix amb trànsit entrant des d'aquests MAC." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Només coincideix amb trànsit entrant des d'aquest IP o rang." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Només coincideix amb trànsit originant en el host client des del port o del " +"rang de ports d'origen donat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Sortida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Passa paràmetres addicionals al iptables. Utilitzeu-ho amb cura!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Reenviaments de port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"El reenviament de ports permet que els ordinadors remots en el Internet " +"connectin a un ordinador o servei específic dins del LAN privat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protocol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "Redirigeix trànsit entrant coincidit al port donat en el host intern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Redirigeix trànsit entrant coincidit al host intern especificat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Restringeix la mascarada a les subxarxes de destí donades" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Restringeix la mascarada a les subxarxes d'origen donades" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Restringeix a la família d'adreces" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Dissabte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Adreça IP d'origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Adreça MAC d'origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Adreça d'origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Port d'origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Zona d'origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Diumenge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"El tallafocs crea zones a les teves interfícies de xarxa per controlar el " +"flux de tràfic de xarxa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Les opcions a sota controlen les polítiques de reenviament entre aquesta " +"zona (%s) i altres zones. Zones de destí cobreixen trànsit reenviat " +"originant des de %q. Zones d'origen coincideixen " +"amb trànsit reenviat des de altres zones apuntat a %q. La " +"regla de reenviament es unidirectional, per exemple un reenviament " +"de lan a wan no implica permís per reenviar de wan a lan també." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +#, fuzzy +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Aquesta secció defineix propietats comuns de %q. Les opcions entrada i sortida estableixen les polítiques per defecte per a trànsit " +"entrant i sortint aquesta zona mentre l'opció reenvia descriu la " +"política de trànsit reenviat entre xarxes distintes dins de la zona. " +"Xarxes cobertes especifica quines xarxes disponibles són membres " +"d'aquesta zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Dijous" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Regles de trànsit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Les regles de trànsit defineixen polítiques per als paquets viatjant entre " +"zones distintes, per exemple per a rebutjar trànsit entre certs hosts o " +"obrir ports WAN en el encaminador." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Dimarts" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Dimecres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Reenviaments" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "accepta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "qualsevol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "qualsevol zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "no rastregis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "descarta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "rebutja" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/cs/firewall.po b/luci-app-firewall/po/cs/firewall.po new file mode 100644 index 000000000..995bf5614 --- /dev/null +++ b/luci-app-firewall/po/cs/firewall.po @@ -0,0 +1,1488 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2024-10-22 12:00+0000\n" +"Last-Translator: Ondřej Vajda \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" +"X-Generator: Weblate 5.8.2-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP s typy %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP " +"%{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- přidat IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- přidat MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr " Zabránit přepsání zdroje" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Zahodit %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Přiřadit DSCP klasifikaci %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Přiřadit conntrack helper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Automaticky přepsat zdrojovou IP " +"adresu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Nesledovat %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Odmítnout %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Staticky přepsat na zdroj %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Musí být zadána IP adresa pro přepsání!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Zakázat přepis adresy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Akce" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Další surové argumenty iptables ke klasifikaci provozu do cílové " +"zóny, např. -p tcp --dport 443 pro pouze odchozí provoz HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Další surové argumenty iptables ke klasifikaci provozu ze zdrojové " +"zóny, např. -p tcp --sport 443 pro pouze příchozí provoz HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Pokročilá nastavení" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Povolit \"neplatný\" provoz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Povolit přesměrování ze zdrojových oblastí:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Povolit přesměrování do zdrojových oblastí:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Libovolné" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Kterýkoli den" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Nastavení pro Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Obsah byl uložen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Pokračovat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Pokrytá zařízení" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Pokryté sítě" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Pokryté podsítě" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Vlastní pravidla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Vlastní pravidla vám umožňují spustit libovolné iptables příkazy, které " +"nejsou jinak pokryté frameworkem firewallu. Příkazy jsou spuštěny po každém " +"restartu firewallu, právě po načtení výchozí sady pravidel." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Klasifikace DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Značka DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Cílová adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Cílový port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Cílová zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Název zařízení" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Zahazovat neplatné pakety" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Povolit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Povolit NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Povolit ochranu proti SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Povolit logování v této oblasti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Očekáváno: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Vnější IP adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Vnější port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Další argumenty volání" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Další argumenty pro cíl" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Další argumenty pro iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Další argumenty pro zdroj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Brána firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Vlastní pravidla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - pravidla NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Přesměrování portů" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Pravidla síťového provozu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Nastavení zón" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migrace konfigurace brány firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Přesměrování" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "pátek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Obecná nastavení" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Udělit přístup ke konfiguraci brány firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 a IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Pouze IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Pouze IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Příchozí zařízení" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Vstup" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Vnitřní IP adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Vnitřní port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Vnitřní zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Neplatná značka DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Neplatná hodnota limitu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Omezit logovací zprávy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Automaticky přepsat na IP adresu odchozího rozhraní" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS clamping" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Maškárádování" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Shoda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Odpovídá ICMP typu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Vybrat příchozí provoz, směrovaný na zadaný cílový port nebo rozsah portů " +"tohoto hostitele" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "pondělí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Dny v měsíci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Pravidla NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Pravidla NAT umožňují jemně odstupňovanou kontrolu nad zdrojovou IP adresou " +"pro odchozí nebo předávaný provoz." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Jméno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Není plně kompatibilní s QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Vybrat pouze příchozí provoz, směrovaný na danou IP adresu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Vybrat pouze příchozí provoz z těchto MAC adres." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Vybrat pouze příchozí provoz z této IP nebo rozsahu IP adres." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Vybrat pouze příchozí provoz, pocházející ze zadaného portu nebo rozsahu " +"portů klienta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Odchozí zařízení" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Odchozí zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Výstup" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Předává další argumenty iptables. Používat opatrně!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Přesměrování portů" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Přesměrování portů (port forwarding) umožňuje vzdáleným počítačům z " +"Internetu připojení k vybraným počítačům nebo službám uvnitř privátní sítě " +"LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Přesměrovat vybraný příchozí provoz na uvedený port vnitřního hostitele" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Přesměrovat vybraný příchozí provoz na uvedeného vnitřního hostitele" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Vyžaduje hardwarovou podporu NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Omezit maškarádování na uvedené cílové podsítě" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Omezit maškarádování na uvedené zdrojové podsítě" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Omezit na rodinu adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Přepsat IP adresu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Přepsat port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Přepsat na konkrétní zdrojovou IP adresu nebo port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "sobota" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Nastavit značku" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Zdrojová IP adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Zdrojová MAC adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Zdrojová adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Zdrojový port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Zdrojová zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Datum zahájení (rrrr-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Čas zahájení (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Datum ukončení (rrrr-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Čas ukončení (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "neděle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Firewall vytváří zóny přes vaše síťová rozhraní za účelem řízení síťového " +"provozu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Níže uvedené možnosti řídí přesměrovací politiky mezi touto zónou (%s) a " +"ostatními zónami. Cílové zóny pokrývají přesměrovávaný provoz, " +"pocházející z %q. Zdrojové zóny porovnávají " +"přesměrovávaný provoz z ostatních zón, zaměřený na %q. " +"Přesměrovávací pravidlo je jednosměrné, například přesměrování z " +"lan do wan nepovoluje přesměrování z wan do lan (a naopak)." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Tato sekce definuje běžné možnosti %q. Vstupní a výstupní " +"možnosti nastavují výchozí politiky pro provoz, vstupující do této zóny a " +"vystupující z ní, zatímco přesměrovací možnosti popisují politiku " +"pro přesměrování provozu mezi rozdílnými sítěmi uvnitř jedné zóny. " +"Pokryté sítě určuje, které z dostupných sítí jsou členy této zóny." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "čtvrtek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Časová omezení" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Čas v UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Časový limit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Pravidla síťového provozu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Pravidla síťového provozu definují politiky pro cestování paketů mezi " +"různými zónami, například pro odmítnutí provozu mezi jistými hostiteli nebo " +"pro otevření WAN portů na routeru." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "úterý" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Nelze uložit obsah: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Nejmenovaný NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Nepojmenované pravidlo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Nepojmenovaná zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Nerozpoznaný protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Použít vnější IP adresu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Použít vnitřní IP adresu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "středa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Dny v týdnu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zóna ⇒ Přesměrování" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zóny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "přijmout" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "libovolný" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "libovolná zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "nesledovat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "zahodit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "odmítnout" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/da/firewall.po b/luci-app-firewall/po/da/firewall.po new file mode 100644 index 000000000..933c035fa --- /dev/null +++ b/luci-app-firewall/po/da/firewall.po @@ -0,0 +1,1651 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-01-25 02:53+0000\n" +"Last-Translator: drax red \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.4-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Videresend:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 og " +"IPv6:IPv6}:IPv4}%{proto?, protokol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP med typer %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP " +"%{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, " +"helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- tilføj IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- tilføj MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Accept %{src?%{dest?videresend:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Forhindrer kildeomskrivning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Videresend til%{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Drop %{src?%{dest?videresend:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Tildel DSCP klassifikation %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Tildel forbindelse hjælper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} firewall mærke " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "Omskriv automatisk kilde IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Spor ikke %{src?%{dest?videresend:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Afvis %{src?%{dest?videresend:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statisk omskriv til kilde %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "En omskrivnings-IP skal angives!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Deaktiver adresseomskrivning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Handling" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Yderligere rå iptables argumenter til at klassificere " +"zonedestinationstrafik, f.eks. -p tcp --dport 443 for kun at " +"matche udgående HTTPS-trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Yderligere rå iptables argumenter til at klassificere " +"zonekildetrafik, f.eks. -p tcp --sport 443 for kun at matche " +"indgående HTTPS-trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adressefamilie, intern IP-adresse skal stemme overens" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adressefamilie, kildeadresse, destinationsadresse, rewrite IP-adresse skal " +"stemme overens" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Avancerede indstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Tillad \"ugyldig\" trafik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Tillad videresendelse fra kildezoner:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Tillad videresendelse til destinationszoner:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Enhver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Enhver dag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Anvend en bitvis XOR af den givne værdi og den eksisterende markeringsværdi " +"på etablerede forbindelser. Formatet er værdi[/mask]. Hvis en maske er " +"angivet, nulstilles de bits, der er sat i masken." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Anvend den givne DSCP-klasse eller værdi på etablerede forbindelser." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "Tildel den angivne forbindelsessporingshjælper til matchet trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automatisk hjælpertildeling" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "Tildel automatisk conntrack-hjælpere baseret på trafikprotokol og port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Kommentar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Forbindelsesindstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Forbindelseshjælpere" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Indholdet er blevet gemt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Fortsæt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Tællere" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Dækkede enheder" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Dækkede netværk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Dækkede subnets" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Brugerdefinerede regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Brugerdefinerede regler giver dig mulighed for at udføre vilkårlige iptables-" +"kommandoer, som ellers ikke er dækket af firewall-rammen. Kommandoerne " +"udføres efter hver genstart af firewall, lige efter standardregelsættet er " +"blevet indlæst." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP klassifikation" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP-mærke påkrævet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Destinationsadresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Destinationsport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Destination zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Enhedens navn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Installer ikke ekstra regler for at afvise videresendt trafik med conntrack-" +"tilstand ugyldig. Dette kan være nødvendigt for komplekse " +"asymmetriske ruteopsætninger." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Drop ugyldige pakker" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Aktiver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Aktiver NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Aktiver SYN-flood beskyttelse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Aktiver logning på denne zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Aktiver netværksadresse og portoversættelse IPv4 (NAT4 eller NAPT4) for " +"udgående trafik på denne zone. Dette er typisk aktiveret på zonen wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Aktiver netværksadresse og portoversættelse IPv6 (NAT6 eller NAPT6) for " +"udgående trafik på denne zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Aktiveret" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Aktiverer sporing af pakke og byttetælling for sættet." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Forventer: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "Vælger eksplicit tilladte forbindelsessporingshjælpere til zonetrafik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Ekstern IP-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Ekstern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Ekstra argumenter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Ekstra destinationsargumenter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Ekstra iptables-argumenter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Ekstra kildeargumenter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Familie" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Firewall - brugerdefinerede regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - IP-sæt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - NAT-regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Port Forwards" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Trafikregler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Zoneindstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Firewall-konfigurationsmigrering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Videresend" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Videresendt %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}" +"}}%{mark?, mark %{mark." +"val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Fredag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Fra %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Fra %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Fra %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Generelle indstillinger" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Giv adgang til firewall-konfiguration" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Aflæsning af hardwareflow" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (rækkevidde)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP-sæt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP'er/netværk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP'er/netværk/MAC'er" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 og IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Kun IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6-maskering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Kun IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Indgående enhed" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Medtag fil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Indgående %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protokol %{proto#%{næste?, }%{item.types?%{item.name}ICMP " +"med typer %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}" +":%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Oprindelig hash-størrelse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Input" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Intern IP-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Intern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Intern zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Intra zone fremad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Ugyldigt DSCP-mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Ugyldig grænseværdi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Ugyldigt navn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Grænse brist" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Begræns logmeddelelser" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Begræns matchning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Begræns matchning til %{limit.num} pakker pr. %{limit.unit}%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Begrænset maskering aktiveret" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Begrænser trafikmatchning til den specificeret sats." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Loopback-kilde-IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASKERING - Omskriv automatisk til udgående grænseflade IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS fastspænding" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Maskering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Match" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Match DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Match ICMP-type" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Match enhed" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Match videresendt trafik rettet mod den angivne IP-adresse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Match videresendt trafik rettet mod den givne destinationsport eller " +"portområde." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Match videresendt trafik fra denne IP eller dette område." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Match videresendt trafik, der stammer fra den givne kildeport eller " +"portinterval." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Match hjælper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Match indgående trafik rettet mod den givne destinationsport eller " +"portinterval på denne vært" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Match mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Match trafik ved hjælp af den angivne forbindelsessporingshjælper." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "Matcher et specifikt firewallmærke eller en række forskellige mærker." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Matcher videresendt trafik ved hjælp af den angivne udgående netværksenhed." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Matcher trafik, der bærer den specificerede DSCP-mærkning." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Maks indlæg" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Maks. længde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Maksimalt indledende antal pakker, der skal matches: Dette antal genoplades " +"med én, hver gang grænsen angivet ovenfor ikke nås, op til dette antal." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Mandag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Måned Dage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT-regler tillader finkornet kontrol over kilde-IP'en til brug for udgående " +"eller videresendt trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Navn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmaske" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Ikke fuldt kompatibel med QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Match kun indgående trafik rettet mod den angivne IP-adresse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Match kun indgående trafik fra disse MAC'er." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Match kun indgående trafik fra denne IP eller dette område." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Match kun indgående trafik, der stammer fra den givne kildeport eller " +"portinterval på klientværten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Udgående enhed" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Udgående zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Output" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Pakkefelt match" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Pakkefelter, der skal matches på.
Syntax: direction_datatype. " +"e.g.: src_port, dest_net.
Retninger: src, dst. Datatyper: ip, port, mac, net, set.
Retningspræfikser er valgfrie.
*Note: datatype set " +"understøttes ikke i fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Sender yderligere argumenter til iptables. Brug med omhu!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Ved at videregive rå iptables-argumenter til kilde- og " +"destinationstrafikklassificeringsreglerne gør det muligt at matche pakker " +"baseret på andre kriterier end grænseflader eller undernet. Disse muligheder " +"bør bruges med ekstrem forsigtighed, da ugyldige værdier kan gøre firewall-" +"regelsættet brudt, hvilket fuldstændig afslører alle tjenester." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Stien til filen med CIDR'er, undernet, værts-IP'er osv.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Port Forwards" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Portvideresendelse gør det muligt for fjerncomputere på internettet at " +"oprette forbindelse til en bestemt computer eller tjeneste inden for det " +"private LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Port rækkevidde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Omdiriger matchet indgående trafik til den givne port på den interne vært" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Omdiriger matchet indgående trafik til den angivne interne vært" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Henvis til eksternt sæt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Reflekszoner" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Kræver hardware NAT-understøttelse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Begræns Maskering til givne destination subnets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Begræns Maskering til givne kilde subnets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Begræns til adresse familie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Omskriv IP-adressen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Omskriv matchet trafik til den angivne kilde-IP-adresse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "Omskriv matchet trafik til den angivne kildeport eller portinterval." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Omskriv port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Routing/NAT Offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Omskriv til specifik kilde-IP eller port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Lørdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Sæt mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Indstil den givne mærkeværdi på etablerede forbindelser. Formatet er værdi[/" +"mask]. Hvis der er angivet en maske, ændres kun de bits, der er sat i masken." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Software flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Kilde IP-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Kilde MAC-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Kildeadresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Kildeport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Kilde zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Angiver, om denne trafikregel skal knyttes til en bestemt indgående eller " +"udgående netværksenhed." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Angiver, om den eksterne eller den interne IP-adresse skal bruges til " +"reflekteret trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Startdato (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Starttid (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Stopdato (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Stoptid (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Opbevaringsmetode" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Søndag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Den eksisterende firewall-konfiguration skal ændres for at LuCI kan fungere " +"korrekt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Firewallen opretter zoner over dine netværksgrænseflader for at kontrollere " +"netværkstrafikstrømmen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Indstillingerne nedenfor styrer videresendelsespolitikkerne mellem denne " +"zone (%s) og andre zoner. Destinationszoner dækker videresendt " +"trafik der stammer fra %q. Kildezoner matcher " +"videresendt trafik fra andre zoner målrettet mod %q. " +"Videresendelsesreglen er envejs, f.eks. en videresendelse fra lan " +"til wan betyder ikke en tilladelse til også at videresende fra wan " +"til lan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Dette afsnit definerer almindelige egenskaber for %q. Indstillingerne " +"input og output angiver standardpolitikkerne for trafik, " +"der kommer ind og forlader denne zone, mens indstillingen videresend beskriver politikken for videresendt trafik mellem forskellige netværk " +"inden for zonen. Dækkede netværk angiver, hvilke tilgængelige " +"netværk der er medlemmer af denne zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Torsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Tidsbegrænsninger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Tid i UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Tidsbegrænsninger er aktiveret for denne regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Timeout" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"Til %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Til %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Til %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Sporingshjælper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Trafikregler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Trafikregler definerer politikker for pakker, der rejser mellem forskellige " +"zoner, for eksempel for at afvise trafik mellem bestemte værter eller for at " +"åbne WAN-porte på routeren." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Tirsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Kan ikke gemme indholdet: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Enhed: sekunder. Standard 0 betyder, at posten tilføjes " +"permanent til sættet.
Max: 2147483 sekunder." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Ukendt eller ikke installeret conntrack-hjælper \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Unavngivet NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Unavngivne forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Unavngiven regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Unavngivet sæt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Unavngiven zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Ukendt protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Når du trykker på \"Fortsæt\", vil \"omdirigere\" sektioner med målet " +"\"SNAT\" blive konverteret til \"nat\" sektioner, og firewallen vil blive " +"genstartet for at anvende den opdaterede konfiguration." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Brug ekstern IP-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Brug intern IP-adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Brug ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Brug denne mulighed til at klassificere zonetrafik efter rå, ikke-uci-administrerede netværksenheder." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Brug denne indstilling til at klassificere zonetrafik efter kilde eller " +"destination subnet i stedet for netværk eller enheder." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Gyldigt firewallmærke påkrævet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Onsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Ugedage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR firewall-mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Din enhed kører ikke firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Din enhed kører firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zone ⇒ Videresendelser" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zoner" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zoner, hvor refleksionsregler skal skabes. Hvis det ikke er indstillet, " +"bruges kun destinationszonen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "accept" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "enhver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "enhver zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "enhver/alle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "anvend firewall-mærke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "tildel forbindelse-hjælper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatisk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap er kun ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "dag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Destination IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Destination MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Destinations(under)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Destinationsport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Destination ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "omskriv ikke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "spor ikke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "drop" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 understøtter henvisning og oprettelse af IP-sæt for at forenkle " +"matchning af store adresselister uden at skulle oprette en regel for hvert " +"element, der skal matches. Portintervaller i ips-sæt understøttes ikke af " +"firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fraport-tilport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "time" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
Til brug med Match-datatyper: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "liste" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minut" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (under)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "afvis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "sekund" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "sæt: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Kilde ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Kilde-IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Source MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Kilde(under)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Kildeport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "denne enhed" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "denne nye zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "ubegrænset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "uspecificeret" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "op til 65536 poster." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "gyldigt firewallmærke" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Softwarebaseret offloading til routing/NAT" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Aktiver netværksadresse og portoversættelse (NAT eller NAPT) for udgående " +#~ "trafik på denne zone. Dette er typisk aktiveret på wan zone." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Videresend IPv4%{proto?, protokol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Indkommende IPv4%{proto?, protokol %{proto#%{next?, }%{item.types?%{item.name}ICMP med typer %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +#~ "%{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/de/firewall.po b/luci-app-firewall/po/de/firewall.po new file mode 100644 index 000000000..b55bd9bdd --- /dev/null +++ b/luci-app-firewall/po/de/firewall.po @@ -0,0 +1,1679 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-10-28 20:23+0000\n" +"Last-Translator: ssantos \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.8.2-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Weitergeleiteter:Eingehender}:Ausgehender} %{ipv6?%{ipv4?" +"IPv4- und IPv6:IPv6}:IPv4}-" +"Verkehr%{proto?, Protokoll %{proto#%{next?, }%{item.types?%{item.name}ICMP mit Typen " +"%{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, Tracking-" +"Helfer %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- IP hinzufügen --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- MAC hinzufügen --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} erlauben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Quellmaskierung unterbinden" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Weiterleiten zu %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? Port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} verwerfen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Setze DSCP-Klassifizierung auf " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Assoziiere Tracking-Helfer " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Setze:XOR} Firewall-Markierung " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "Quell-IP automatisch maskieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"%{src?%{dest?Weiterleitungs:Eingangs}:Ausgangs}-Tracking verhindern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?Weiterleitung:Eingang}:Ausgang} ablehnen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Quell%{snat_ip?-IP %{snat_ip}} %{snat_port?Port %{snat_port}" +"} statisch umschreiben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Es muss eine IP-Adresse zum Umschreiben angegeben werden!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Umschreiben von IP-Adressen deaktivieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Aktion" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Zusätzliche rohe iptables-Argumente zur Klassifizierung des " +"Zonenzielverkehrs, z.B. -p tcp --dport 443, um nur ausgehenden " +"HTTPS-Verkehr übereinstimmen zu lassen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Zusätzliche rohe iptables-Argumente zur Klassifizierung von " +"Zonenquellenverkehr, z.B. -p tcp --sport 443, um nur " +"eingehenden HTTPS-Verkehr übereinstimmen zu lassen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adressfamilie, interne IP-Adresse muss übereinstimmen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adressfamilie, Quelladresse, Zieladresse, IP-Adressenumschreibung muss " +"übereinstimmen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Erweiterte Einstellungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Erlaube \"ungültigen\" Verkehr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Erlaube Weiterleitung von Quellzone:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Erlaube Weiterleitung zu Zielzone:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Beliebig" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Beliebig" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Bitweises XOR von angegebenem Wert und Maske auf etablierte Verbindungen " +"anwenden. Format ist Wert[/Maske]. Wenn eine Maske angegeben ist, werden die " +"korrespondierenden Bits des Wertes genullt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" +"Wende die angegebene DSCP-Klasse oder den angegebenen DSCP-Wert auf " +"etablierte Verbindungen an." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Weise den angegebenen Verbindungs-Tracking-Helfer selektiertem Verkehr zu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automatische Helferzuordnung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Automatische Zuweisung von Conntrack-Helfern basierend auf Traffic-Protokoll " +"und Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Kommentar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Conntrack-Einstellungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack-Helfer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Inhalte wurden gespeichert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Fortfahren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Zähler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Abgedeckte Geräte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Abgedeckte Netzwerke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Abgedeckte Subnetze" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Benutzerdefinierte Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Benutzerdefinierte Regeln ermöglichen das Ausführen belieber iptables-" +"Befehle welche durch das Firewall-Framework nicht unterstützt werden. Die " +"Befehle werden mit jedem Firewall-Neustart abgearbeitet, direkt nach dem " +"Laden der Basisregeln." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP-Klassifizierung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP-Markierung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP-Markierung benötigt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Zieladresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Zielport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Ziel-Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Gerätename" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Installiere keine zusätzlichen Regeln, um weitergeleiteten Traffic mit " +"Conntrack-Status invalid abzulehnen. Dies kann bei komplexen " +"asymmetrischen Routen erforderlich sein." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Ungültige Pakete verwerfen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Aktivieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "NAT-Loopback aktivieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Schutz vor SYN-flood-Attacken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Protokollierung innerhalb der Zone aktivieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Aktivieren der Netzwerkadressen- und Portübersetzung IPv4 (NAT4 oder NAPT4) " +"für den ausgehenden Verkehr in dieser Zone. Dies wird normalerweise für die " +"Zone wan aktiviert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Aktivieren der Netzwerkadressen- und Portübersetzung IPv6 (NAT6 oder NAPT6) " +"für den ausgehenden Verkehr in dieser Zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Aktiviert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Aktiviert die Paket- und Byte-Zählungsverfolgung für das Set." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Erwarte: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Wählt explizit zulässige Verbindungs-Tracking-Helfer für den Zonenverkehr aus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Externe IP-Adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Externer Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Zusätzliche Argumente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Zusätzliche Ziel-Argumente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Zusätzliche iptables-Argumente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Zusätzliche Quell-Argumente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Familie" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Benutzerdefinierte Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - IP-Sets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - NAT Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Portweiterleitungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Traffic-Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Zoneneinstellungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migration der Firewall-Konfiguration" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Weiterleitung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +#, fuzzy +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Weitergeleiteter %{ipv6?%{ipv4?IPv4- und IPv6:" +"IPv6-}:IPv4}-Verkehr%{proto?, Protokoll " +"%{proto#%{next?, }%{item.name}}}%{mark?, Markierung %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Freitag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Von %{src}%{src_device?, Schnittstelle %{src_device}}%{src_ip?, " +"IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, Port " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Von %{src}%{src_device?, Schnittstelle %{src_device}}%{src_ip?, " +"IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }" +"%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Von %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Allgemeine Einstellungen" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Zugriff auf die Firewall-Konfiguration gewähren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "Hardwarebasiertes Offloading zum Routing mit/ohne NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Hardwarebeschleunigte Flusskontrolle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (Bereich)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP-Sets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPs/Netzwerke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPs/Netzwerke/MACs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 und IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "nur IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6-Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "nur IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Eingehendes Gerät" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Datei einschließen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Eingehende %{ipv6?%{ipv4?IPv4 und IPv6:IPv6}:IPv4}%{proto?, Protokoll %{proto#%{next?, }%{item.types?" +"%{item.name}ICMP mit Typen %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark? mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Initiale Hash Größe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Eingehend" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Interne IP-Adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Interner Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Interne Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Intra-Zonen-Forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Ungültige DSCP-Markierung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Ungültiger Limit-Wert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Falscher Setname" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Limit-Häufung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Protokollnachrichten limitieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Limitiere Vergleiche" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limitiere Vergleiche auf %{limit.num} Pakete pro %{limit." +"unit}%{limit.burst? Häufung %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Eingeschränktes Masquerading aktiviert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Limitiere Verkehrsvergleiche auf die angegebene Rate." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Loopback Quell-IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"MASQUERADE - Automatisch auf IP-Adresse der ausgehenden Schnittstelle " +"umschreiben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS Korrektur" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "NAT aktivieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Filter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "DSCP selektieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Nach ICMP-Typ filtern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Gerät selektieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Selektiert an die angegebene IP-Adresse gerichteten Verkehr." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Selektiert an den angegeben Port oder Port-Bereich gerichteten Verkehr." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" +"Selektiert weitergeleiteten Verkehr von dieser IP oder diesem IP-Bereich." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Selektiert weitergeleiteten Verkehr vom angegebenem Quellport oder " +"Portbereich." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Helfer selektieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Eingehende Verbindungen filtern welche an den angegebenen Port oder " +"Portbereich auf dem lokalen Gerät gerichtet sind" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Erfasse Markierung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Selektiere Verkehr welcher den angegebenen Tracking-Helfer benutzt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Selektiert Verkehr mit einer spezifischen Firewall-Markierung oder einem " +"Bereich von Markierungen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Selektiert weitergeleiteten Verkehr welcher die angegebene " +"Netzwerkschnittstelle benutzt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Selektiere Verkehr welcher die angegebene DSCP-Markierung trägt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Maximale Einträge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Maximale Länge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Maximale initiale Menge von Paketen die selektiert werden. Die Nummer wird " +"jedes Mal erhöht, wenn das oben genannte Limit nicht erreicht wird, bis zur " +"hier angegeben Anzahl." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Montag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Monatstage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT-Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT-Regeln erlauben eine detaillierte Kontrolle über die verwendete Quell-IP-" +"Adresse für ausgehenden oder weitergeleiteten Verkehr." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netzmaske" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "Keine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Nicht vollständig kompatibel mit QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Selektiert nur Traffic der an die angegebene IP-Adresse gerichtet ist." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Selektiert nur Traffic von den angegebenen MAC-Adressen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Selektiert nur Traffic vom angebenem Quell-IP-Adressbereich." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Nur eingehenden Datenverkehr, der vom angegebenen Quellport oder Portbereich " +"des Client-Host stammt, selektieren" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Ausgehende Schnittstelle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Ausgehende Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Ausgehend" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Paket-Feld Übereinstimmung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Übereinstimmende Paketfelder.
Syntax: direction_datatype. e." +"g.: src_port, dest_net.
Richtung: src, dst. " +"Datentypen: ip, port, mac, net, set.
Richtungspräfix ist " +"optional.
*Hinweis: Datentyp set wird von fw4 nicht " +"unterstützt." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Gibt zusätzliche Kommandozeilenargumente an iptables weiter. Mit Vorsicht " +"benutzen!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Die Übergabe von rohen iptables-Argumenten an die Klassifizierungsregeln für " +"den Quell- und Zielverkehr ermöglicht es, Pakete abzugleichen, die auf " +"anderen Kriterien als Schnittstellen oder Subnetzen basieren. Diese Optionen " +"sollten mit äußerster Vorsicht verwendet werden, da ungültige Werte dazu " +"führen können, dass der Firewall-Regelsatz außer Funktion gesetzt wird und " +"alle Dienste vollständig offengelegt werden." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Pfad zu Datei mit CIDRs, Subnetzen, Host IPs, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Portweiterleitungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Portweiterleitungen ermöglichen es entfernten Rechnern im Internet auf " +"bestimmte Computer oder Dienste im lokalen LAN zuzugreifen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Port-Bereich" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Gefilterte Verbindungen an den angegeben Port auf dem internen Host " +"weiterleiten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Gefilterte Verbindungen an den angegeben internen Host weiterleiten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Verweis auf externes Set" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Reflection-Zonen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Erfordert Hardware-NAT-Unterstützung." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "NAT auf die angegebenen Ziel-Subnetze beschränken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "NAT auf die angegebenen Quell-Subnetze beschränken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Auf Adressfamilie beschränken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "IP-Adresse umschreiben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Selektierten Verkehr auf die angegebene Quell-IP-Adresse umschreiben." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Selektierten Verkehr auf den angegebenen Quell-Port bzw. Port-Bereich " +"umschreiben." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Port umschreiben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Routing/NAT-Beschleunigung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Umschreiben auf spezifische Quell-IP oder Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Samstag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Markierung setzen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Setzt die angegebenen Markierung auf etablierten Verbindungen. Das Format " +"ist Wert[/Maske]. Wenn eine Maske spezifiziert ist, werden nur die " +"korrespondierenden Bits des Markierungswertes verändert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "Softwarebasiertes Offloading von Routing/NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Beschleunigte Flusskontrolle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Quell-IP-Adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Quell-MAC-Adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Quelladresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Quellport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Quell-Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Gibt an, ob diese Verkehrsregel an eine spezifische Eingangs- oder " +"Ausgangsschnittstelle gebunden wird." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Gibt an, ob die externe oder die interne IP-Adresse für reflektierten " +"Verkehr genutzt wird." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Startdatum (JJJJ-MM-TT)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Startzeit (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Enddatum (JJJJ-MM-TT)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Stoppzeit (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Speichermethode" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Sonntag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Die existierende Firewall-Konfiguration muss geändert werden damit LuCI " +"richtig funktioniert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Die Firewall erstellt Netzwerkzonen über bestimmte Netzwerkschnittstellen um " +"den Netzwerk-Traffic zu trennen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Die untenstehenden Optionen regeln die Verfahrensweisen für Traffic zwischen " +"dieser Zone (%s) und anderen Zonen. Ziel-Zonen decken " +"weitergeleiteten Traffic von %q ab. Quell-Zonen " +"treffen auf weitergeleiteten Traffic aus anderen Zonen zu, welcher " +"an %q gerichtet ist. Die Weiterleitung gilt nur in eine " +"Richtung, d. h. eine erlaubte Weiterleitung von LAN nach WAN bedeutet " +"nicht zusätzlich die Erlaubnis, auch von WAN nach LAN " +"weiterzuleiten." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Dieser Abschnitt definiert allgemeine Eigenschaften der %q-Zone. Die " +"input- und output-Optionen definieren die Regeln für " +"Datenverkehr, der in diese Zone eintritt oder diese verlässt. forward trifft auf Datenverkehr zwischen verschiedenen Schnittstellen innerhalb " +"dieser Zone zu. Covered networks definiert welche der verfügbaren " +"Netzwerke zu dieser Zone gehören." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Donnerstag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Zeitbeschränkungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Zeit ist UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Zeitbeschränkungen sind aktiviert für diese Regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Zeitüberschreitung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"Nach %{dest}%{dest_device?, Schnittstelle %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}
}}" +msgstr "" +"Nach %{dest}%{dest_device?, über Schnittstelle %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Nach %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, Port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Tracking-Helfer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Traffic-Regeln" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Traffic-Regeln bestimmen den Fluss der Pakete zwischen verschiedenen Zonen, " +"zum Beispiel um Traffic zwischen bestimmten Rechnern zu unterbinden oder um " +"WAN-Ports auf dem Router zu öffnen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Dienstag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Inhalt kann nicht gespeichert werden: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Einheit: Sekunden. Voreinstellung 0 bedeutet der Eintrag wird " +"dauerhaft hinzugefügt.
Maximaler Wert: 2147483 Sekunden." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Unbekannter oder nicht installierter Tracking-Helfer \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Unbenannte NAT-Regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Unbenannte Portweiterleitung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Unbennante Regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Unbenanntes Set" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Unbenannte Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Unbekanntes Protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Beim Fortfahren werden \"redirect\" Sektionen mit \"SNAT\" Aktion in \"nat\" " +"Sektionen konvertiert und die Firewall wird neu gestartet um die geänderte " +"Konfiguration anzuwenden." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Externe IP-Adresse nutzen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Interne IP-Adresse nutzen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Benutze ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Diese Option verwenden, um den Zonenverkehr nach rohen, nicht uci-" +"verwalteten Netzwerkgeräten zu klassifizieren." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Diese Option verwenden, um den Zonenverkehr nach Quell- oder Zielsubnetz " +"anstelle von Netzwerken oder Geräten zu klassifizieren." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Gültige Firewall-Markierung benötigt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Mittwoch" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Wochentage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "Firewallmarkierung XOR-en" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Markierungen XOR-en" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Firewall4 ist auf Ihrem Gerät nicht aktiviert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Firewall4 ist auf Ihrem Gerät aktiviert." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zone ⇒ Weiterleitungen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zonen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonen, aus denen Reflection-Regeln erstellt werden sollen. Wenn nicht " +"festgelegt, wird nur die Zielzone verwendet." + +# Die richtige Übersetzung von ACCEPT im Firewallkontext ist nicht "Annehmen" sondern "Zulassen". Man kann ja keinen +# ausgehenden Traffic annehmen. +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "zulassen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "alle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "beliebige Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "beliebig/alle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "Firewallmarkierung anwenden" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "Tracking-Helfer zuordnen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "Automatisch" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "Bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "Bitmap ist nur IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "Tag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Ziel IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Ziel MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Ziel (Sub)netz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Ziel Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Ziel ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "nicht umschreiben" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "nicht verfolgen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "verwerfen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"Firewall4 unterstützt die Referenzierung und Erzeugung von IP sets, um die " +"Übereinstimmung mit großen Adresslisten zu vereinfachen, ohne dass für jede " +"Adresse eine eigene Regel erzeugt werden muss. Portbereiche in ipsets werden " +"von Firewall4 nicht unterstützt.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "vonPort-bisPort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "Hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "Stunde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP-Adr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Zur Verwendung mit Übereinstimmungs-Datentypen: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "Liste" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC-Addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macAdr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "Minute" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (Sub-)Netz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "zurückweisen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "Sekunde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Quell-ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Quell-IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Quell-MAC-Adr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Quell-(sub)netz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Quell-Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "dieses Gerät" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "diese neue Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "unlimitiert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "unspezifiziert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "bis zu 65536 Einträgen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "gültige Firewall-Markierung" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Softwarebasierte Auslagerung von Routing/NAT" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Ativar a conversão de endereços e portas de rede (NAT ou NAPT) para o " +#~ "tráfego de saída nessa zona. Isto é normalmente ativado na zona wan." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Weitergeleiteter IPv4-Verkehr%{proto?, Protokoll %{proto#%{next?, }" +#~ "%{item.name}}}%{mark?, Markierung %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Eingehender IPv4-Verkehr%{proto?, Protokoll %{proto#%{next?, }%{item." +#~ "types?%{item.name}ICMP mit Typen %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, Helfer %{helper.inv?%{helper.val}:" +#~ "%{helper.val}}}" diff --git a/luci-app-firewall/po/el/firewall.po b/luci-app-firewall/po/el/firewall.po new file mode 100644 index 000000000..e01595bd0 --- /dev/null +++ b/luci-app-firewall/po/el/firewall.po @@ -0,0 +1,1444 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-11-09 08:59+0000\n" +"Last-Translator: Mac Mac \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.8.2\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- προσθήκη IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- προσθήκη MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Accept %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Prevent source rewrite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Δράση" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Ρυθμίσεις για προχωρημένους" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Οποιοδήποτε" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Προσαρμοσμένοι Κανόνες" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Διεύθυνση προορισμού" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Θύρα προορισμού" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Ζώνη προορισμού" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Όνομα συσκευής" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Αγνόηση μη-έγκυρων πακετών" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Ενεργοποίηση" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +#, fuzzy +msgid "Enable NAT Loopback" +msgstr "Ενεργοποιήστε το NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Ενεργοποιήστε την προστασία SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Ενεργοποιήστε τη σύνδεση σε αυτήν τη ζώνη" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Εξωτερική διεύθυνση IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Εξωτερική θύρα" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Επιπλέον παράμετροι" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Τείχος προστασίας" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Τείχος προστασίας - Προσαρμοσμένοι Κανόνες" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Τείχος προστασίας - Προώθηση Θυρών" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Τείχος προστασίας - Κανόνες Κίνησεις" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Τείχος προστασίας - Ρυθμίσεις Ζώνης" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Προώθηση" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Γενικές ρυθμίσεις" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 και IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Μόνο IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Μόνο IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Είσοδος" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Εσωτερική διεύθυνση IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +#, fuzzy +msgid "Internal port" +msgstr "Εξωτερική θύρα" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Εσωτερική ζώνη" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Περιορισμός καταγραφών συστήματος" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +#, fuzzy +msgid "MSS clamping" +msgstr "Περιορισμός MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Ονομα" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Έξοδος" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Προώθηση Θυρών" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Πρωτόκολλο" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +#, fuzzy +msgid "Source IP address" +msgstr "Διεύθυνση MAC πηγής" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#, fuzzy +msgid "Source address" +msgstr "Διεύθυνση MAC πηγής" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Θύρα πηγής" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#, fuzzy +msgid "Source zone" +msgstr "Θύρα πηγής" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Κυριακή" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Το τείχος προστασίας δημιουργεί ζώνες πάνω στις διεπαφές δικτύου για να " +"ελέγχει την δικτυακή κίνηση." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Πέμπτη" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Χρονικοί Περιορισμοί" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Ώρα σε UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Οι χρονικοί περιορισμοί είναι ενεργοποιημένοι για αυτόν τον κανόνα" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Τέλος χρόνου" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Βοηθός παρακολούθησης" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Κανόνες κυκλοφορίας" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Οι κανόνες κυκλοφορίας ορίζουν πολιτικές για πακέτα που ταξιδεύουν μεταξύ " +"διαφορετικών ζωνών, για παράδειγμα μια απόρριψη κίνησης μεταξύ ορισμένων " +"κεντρικών υπολογιστών ή για άνοιγμα θυρών WAN στο δρομολογητή." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Τρίτη" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Ανώνυμο NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Κανόνας χωρίς όνομα" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Ζώνη ⇒ Διαβιβάσεις" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Ζώνες" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "αποδοχή" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "οποιαδήποτε" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "αγνόηση" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "απόρριψη" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/es/firewall.po b/luci-app-firewall/po/es/firewall.po new file mode 100644 index 000000000..f0b3feb96 --- /dev/null +++ b/luci-app-firewall/po/es/firewall.po @@ -0,0 +1,1677 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-10-25 20:19+0000\n" +"Last-Translator: Franco Castillo \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.8.2-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Reenvío:Entrada}:Salida} %{ipv6?%{ipv4?IPv4 y " +"IPv6:IPv6}:IPv4}%{proto?, protocolo " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP con tipos %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, marca " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, ayudante %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- añadir IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- añadir MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Aceptar %{src?%{dest?reenvío:entrada}:" +"salida}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" +"Prevenir la reescritura de la fuente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Reenviar a %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? puerto %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Descartar %{src?%{dest?reenvío:entrada}:" +"salida}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Asignar DSCP clasificación %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Asignar conntrack ayudante " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Asignar:XOR} marca de " +"cortafuegos%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Reescribir automáticamente la IP de " +"origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"No seguir %{src?%{dest?reenvío:entrada}:" +"salida}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Rechazar %{src?%{dest?reenvío:entrada}:" +"salida}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Reescribir estáticamente a origen %{snat_ip?" +"IP %{snat_ip}} %{snat_port?puerto %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "¡Se debe especificar una IP de reescritura!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACEPTAR - Desactivar reescritura de direcciones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Acción" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Argumentos sin procesar adicionales de iptables para clasificar el " +"tráfico de destino de la zona, p.e. -p tcp --dport 443 para que " +"solo coincida con el tráfico HTTPS saliente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Argumentos sin procesar adicionales de iptables para clasificar el " +"tráfico de origen de zona, p.e. -p tcp --sport 443 para que " +"solo coincida con el tráfico HTTPS entrante." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Familia de direcciones, la dirección IP interna debe coincidir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"La familia de direcciones, la dirección de origen, la dirección de destino, " +"la dirección IP de reescritura debe coincidir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Ajustes avanzados" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Permitir tráfico \"inválido\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Permitir reenvío desde zonas de origen:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Permitir reenvío a zonas de destino:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Cualquiera" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Cualquier día" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Aplique un XOR bit a bit del valor dado y el valor de marca existente en las " +"conexiones establecidas. El formato es el valor [/ máscara]. Si se " +"especifica una máscara, esos bits establecidos en la máscara se ponen a cero." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Aplique la clase o valor DSCP dado a las conexiones establecidas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Asigne el asistente de seguimiento de conexión especificado al tráfico " +"coincidente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Asignación automática de ayuda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Asigna automáticamente ayudantes de conntrack según el protocolo de tráfico " +"y el puerto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Comentario" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Configuraciones de Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Ayudantes de Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Se han guardado los contenidos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Continuar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Contadores" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Interfaces cubiertas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Redes cubiertas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Subredes cubiertas" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Reglas personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Las reglas personalizadas le permiten ejecutar comandos de iptables que no " +"están disponibles en el marco del Cortafuegos. Los comandos se ejecutarán " +"tras cualquier reinicio del Cortafuegos, justo tras haber cargado el " +"conjunto de reglas predeterminadas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Clasificación DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Marca DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Marca DSCP requerida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Dirección de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Puerto de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Zona de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Nombre del dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"No instale reglas adicionales para rechazar el tráfico reenviado con el " +"estado conntrack inválido. Esto puede ser necesario para " +"configuraciones complejas de rutas asimétricas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Descartar paquetes inválidos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Activar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Activar bucle de retorno de NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Activar protección contra inundaciones SYN" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Activar registro en esta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Activa la dirección de red y la traducción de puertos IPv4 (NAT4 o NAPT4) " +"para el tráfico saliente en esta zona. Esto normalmente está activo en la " +"zona wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Activa la dirección de red y la traducción de puertos IPv6 (NAT6 o NAPT6) " +"para el tráfico saliente en esta zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Activado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Activa el seguimiento del conteo de paquetes y bytes para el conjunto." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Esperando: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Elige explícitamente los ayudantes de seguimiento de conexión permitidos " +"para el tráfico de zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Dirección IP externa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Puerto externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Argumentos extra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Argumentos de destino adicionales" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Argumentos adicionales de iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Argumentos fuente adicionales" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Familia" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Cortafuegos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Cortafuegos - Reglas personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Cortafuegos: Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Cortafuegos - Reglas de NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Cortafuegos - Reenvío de puertos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Cortafuegos - Reglas de tráfico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Cortafuegos - Ajustes de Zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migración de configuración del Cortafuegos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "Tipo de descarga de flujo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Reenviar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Reenviado %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocolo %{proto#%{next?, }%{item.name}}}%{mark?, marca %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Viernes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Desde %{src}%{src_device?, interfaz %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"puerto %{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Desde %{src}%{src_device?, interfaz %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, " +"puerto %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Desde %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item." +"ival}}}%{src_port?, puerto %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Ajustes generales" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Conceder acceso a la configuración del Cortafuegos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "Descarga basada en hardware para el enrutamiento con/sin NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Descarga de flujo por hardware" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (rango)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPs/Redes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPs/Redes/MACs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 e IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Solo IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Enmascarar la IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Solo IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Dispositivo de entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Incluir archivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Entrada %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Tamaño de hash inicial" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Dirección IP interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Puerto interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Zona interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Reenvío dentro de la zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Marca DSCP inválida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Valor límite no válido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Nombre del conjunto no válido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Límite de ráfaga" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Limitar registro de mensajes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Limitar coincidencia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limitar coincidencia a %{limit.num} paquetes por %{limit." +"unit}%{limit.burst? interrumpir %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Enmascaramiento limitado activado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Limita el tráfico que coincide con la velocidad especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP de origen de bucle de retorno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"MASQUERADE - Reescribir automáticamente a la IP de la interfaz de salida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Sujeción MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Enmascaramiento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Coincidir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Coincidir DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Coincidir con tipo ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Dispositivo de coincidencia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Haga coincidir el tráfico reenviado dirigido a la dirección IP dada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Haga coincidir el tráfico reenviado dirigido al puerto de destino o rango de " +"puertos dados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Haga coincidir el tráfico reenviado desde esta IP o rango." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Haga coincidir el tráfico reenviado que se origina en el puerto fuente o " +"rango de puertos dados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Ayudante de partido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Coincidir con tráfico de entrada dirigido al puerto o rango de puertos " +"destino en este host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Marca de partido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Haga coincidir el tráfico con el ayudante de seguimiento de conexión " +"especificado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Coincide con una marca de Cortafuegos específica o un rango de marcas " +"diferentes." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Coincide con el tráfico reenviado utilizando el dispositivo de red saliente " +"especificado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Coincide con el tráfico que lleva la marca DSCP especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Máximo de entradas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Longitud máxima" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Número inicial máximo de paquetes que deben coincidir: este número se " +"recarga en uno cada vez que no se alcanza el límite especificado " +"anteriormente, hasta este número." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Lunes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Días del mes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Reglas de NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Las reglas NAT permiten un control detallado sobre la IP de origen que se " +"utilizará para el tráfico saliente o reenviado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Máscara de red" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "Ninguno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "No es totalmente compatible con QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Coincidir sólo con tráfico de entrada a esta dirección IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Coincidir sólo con tráfico de entrada desde estas MACs." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Coincidir sólo con tráfico de entrada desde esta IP o rango." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Solo coincida con el tráfico entrante que se origina desde el puerto de " +"origen o el rango de puertos en el host del cliente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Dispositivo de salida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Zona de salida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Salida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Emparejar los paquetes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Campos de paquetes para hacer coincidir.
Sintaxis: " +"direction_datatype. p.e.: src_port, dest_net.
Direcciones: src, dst. Tipos de datos: ip, port, mac, " +"net, set.
Los prefijos de dirección son opcionales.
*Nota: " +"el tipo de dato set no es compatible con fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Ingrese argumentos adicionales a iptables. ¡Utilícelo con cuidado!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Pasar argumentos de iptables sin procesar a las reglas de clasificación de " +"tráfico de origen y destino permite hacer coincidir paquetes basados en " +"otros criterios que no sean interfaces o subredes. Estas opciones se deben " +"usar con extremo cuidado, ya que los valores inválidos pueden hacer que el " +"conjunto de reglas del cortafuegos se rompa, exponiendo completamente todos " +"los servicios." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Ruta al archivo de CIDR, subredes, IP de host, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Reenvío de puertos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"El reenvío de puertos permite que los computadores remotos en Internet se " +"conecten a un computador o servicio específico dentro de la LAN privada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Rango de puertos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protocolo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Redirigir el tráfico de entrada que coincida al puerto dado en el host " +"interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" +"Redirigir el tráfico de entrada que coincida al host interno especificado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Consulta el Conjunto externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zonas de reflexión" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Requiere soporte de NAT por hardware." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Restringir enmascaramiento a las subredes destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Restringir enmascaramiento a las subredes origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Restringir para dirigirse a la familia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Reescribir dirección IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" +"Reescribe el tráfico coincidente a la dirección IP de origen especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Reescribe el tráfico coincidente al puerto de origen o rango de puertos " +"especificados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Reescribir puerto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Enrutamiento/Descarga NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Reescribe a una fuente específica IP o puerto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Sábado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Establecer marca" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Establezca el valor de marca dado en las conexiones establecidas. El formato " +"es el valor [/máscara]. Si se especifica una máscara, sólo se modifican los " +"bits establecidos en la máscara." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "Descarga basada en software para el enrutamiento/NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Descarga de flujo por software" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Dirección IP de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Dirección MAC de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Dirección de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Puerto de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Zona de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Especifica si se debe vincular esta regla de tráfico a un dispositivo de red " +"entrante o saliente específico." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Especifica si se debe usar la dirección IP externa o interna para el tráfico " +"reflejado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Fecha de inicio (aaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Hora de inicio (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Fecha de finalización (aaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Hora de finalización (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Método de almacenamiento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Domingo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"La configuración del cortafuegos existente debe cambiarse para que LuCI " +"funcione correctamente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"El cortafuegos crea zonas sobre tus interfaces de red para controlar el " +"flujo de tráfico de la red." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Estas opciones controlan las políticas de reenvío entre esta zona (%s) y " +"otras. Las zonas de origen cubren el tráfico reenviado desde " +"%q. Las zonas de origen coinciden con el tráfico " +"reenviado desde otras zonas dirigido a %q. La regla de " +"reenvío es unidireccional, por ejemplo una regla de reenvío desde " +"la LAN a la WAN no implica permiso para reenviar desde la WAN a la " +"LAN también." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Esta sección define propiedades comunes de %q. Las opciones de entrada y salida marcan las políticas por defecto para el tráfico que " +"entra y sale de esta zona mientras que la opción reenviar describe " +"la política para tráfico reenviado entre diferentes redes dentro de la zona. " +"Redes cubiertas especifica qué redes disponibles son miembros de " +"esta zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Jueves" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Restricciones de tiempo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Tiempo en UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Las restricciones de tiempo están activadas para esta regla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Tiempo de espera" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"A %{dest}%{dest_device?, interfaz %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, " +"puerto %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"A %{dest}%{dest_device?, via interfaz %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, " +"puerto %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"A %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item." +"ival}}}%{dest_port?, puerto %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Ayudante de seguimiento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Reglas de tráfico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Las reglas de tráfico definen políticas para paquetes que viajan entre " +"diferentes zonas, por ejemplo, para rechazar el tráfico entre ciertos hosts " +"o para abrir puertos WAN en el enrutador." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Martes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "No se puede guardar el contenido: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unidad: segundos. El 0 predeterminado significa que la entrada " +"se agrega permanentemente al conjunto.
Máx.: 2147483 segundos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Ayudante de Conntrack desconocido o no instalado \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT sin nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Reenvío sin nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Regla sin nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Conjunto sin nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Zona sin nombre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Protocolo no reconocido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Al presionar \"Continuar\", las secciones de \"redireccionamiento\" con " +"\"SNAT\" de destino se convertirán en secciones \"nat\" y el cortafuegos se " +"reiniciará para aplicar la configuración actualizada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Usar dirección IP externa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Usar dirección IP interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Usar ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Use esta opción para clasificar el tráfico de zona por raw, dispositivos de " +"red no administrados uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Use esta opción para clasificar el tráfico de zona por subred de origen o " +"destino en lugar de redes o dispositivos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Se requiere una marca de cortafuegos válida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Miércoles" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Días de la semana" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "Marca de cortafuegos XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Marca XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Su dispositivo no ejecuta firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Tu dispositivo ejecuta firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Reenvíos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zonas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonas a partir de las cuales se crearán las reglas de reflexión. Si no está " +"configurado, solo se utiliza la zona de destino." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "aceptar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "cualquiera" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "cualquier zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "cualquiera/todos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "aplicar marca de cortafuegos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "asignar ayudante de Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automático" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap es solo ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "día" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Dirección MAC de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: (Sub)red de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Puerto de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: conjunto de ips de destino*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "no reescribir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "no seguir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "descartar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 admite la referencia y la creación de conjuntos de IP para " +"simplificar la coincidencia de listas de direcciones grandes sin la " +"necesidad de crear una regla por elemento a coincidir. Los rangos de puertos " +"en ipsets no son compatibles con firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "de puerto-a puerto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "hora" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Dirección IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Para usar con los tipos de datos de iguales:*_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lista" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: Dirección MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minuto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (Sub)red" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Puerto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "rechazar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "segundo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: IPset de origen*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Dirección MAC de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: (Sub)red de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Puerto de origen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "este dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "esta nueva zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "ilimitado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "sin especificar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "hasta 65536 entradas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "marca de cortafuegos válida" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Descarga basada en software para enrutamiento/NAT" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Habilite la dirección de red y la traducción de puertos (NAT o NAPT) para " +#~ "el tráfico saliente en esta zona. Esto normalmente está habilitado en la " +#~ "zona wan." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Reenviar IPv4%{proto?, protocolo %{proto#%{next?, }%{item.name}}}%{mark?, marca %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "IPv4 entrante%{proto?, protocolo %{proto#%{next?, }%{item.types?%{item.name}ICMP con tipos %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, ayudante %{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/fa/firewall.po b/luci-app-firewall/po/fa/firewall.po new file mode 100644 index 000000000..cea87c6f6 --- /dev/null +++ b/luci-app-firewall/po/fa/firewall.po @@ -0,0 +1,1633 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-07-05 08:09+0000\n" +"Last-Translator: Danial Behzadi \n" +"Language-Team: Persian \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP با انواع ICMP %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- افزودن IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- افزودن مک آدرس --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"تایید %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "جلوگیری از منبع بازنویسی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"ارسال to %{dest}%{dest_ip?آی پی " +"%{dest_ip}}%{dest_port? پورت %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"دراپ %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"اختصاص DSCP DSCP classification " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"اختصاص conntrack helper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} علامت فایروال " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "باز نویسی خودکار منبع ایپی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"{src?%{dest?forward:input}:output}% رديابي نکن " + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"لغو %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"بازنویسی ایستا به منبع %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "یک IP بازنویسی شده باید مشخص شود!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "تایید - بازنویسی آدرس غیر فعال شد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "اجرا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"استدلال های خام اضافی iptables برای طبقه بندی ترافیک مقصد منطقه، به " +"عنوان مثال. -p tcp --dport 443 فقط برای مطابقت با ترافیک خروجی " +"HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"استدلال های خام اضافی iptables برای طبقه بندی ترافیک مقصد منطقه، به " +"عنوان مثال. -p tcp --dport 443 فقط برای مطابقت با ترافیک ورودی " +"HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "خانواده آدرس، آدرس IP داخلی باید مطابقت داشته باشد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"خانواده آدرس، آدرس مبدا، آدرس مقصد، آدرس IP بازنویسی باید مطابقت داشته باشند" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "تنظیمات پیشرفته" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "پذیرش ترافیک \"نامعتبر\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "اجازه به جلو از مناطق منبع:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "اجازه به جلو بهمناطق مقصد:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "هر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "هر روز" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"یک XOR بیتی از مقدار داده شده و مقدار علامت موجود روی اتصالات ایجاد شده " +"اعمال کنید. قالب مقدار[ / mask] است. اگر یک ماسک مشخص شده باشد، آن بیت های " +"تنظیم شده در ماسک صفر می شوند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "کلاس یا مقدار DSCP داده شده را برای اتصالات ایجاد شده اعمال کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "کمک ردیابی اتصال مشخص شده را به ترافیک همسان اختصاص دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "واگذاری کمک کننده خودکار" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"به طور خودکار کمک های conntrack را بر اساس پروتکل ترافیک و پورت اختصاص دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "نظر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "تنظیمات Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "کمک کنندگان Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "محتویات ذخیره شده اند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "ادامه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "شمارنده ها" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "دستگاه های تحت پوشش" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "شبکه های تحت پوشش" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "زیرشبکه های تحت پوشش" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "قوانین سفارشی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"قوانین سفارشی به شما این امکان را می دهد که دستورات iptables دلخواه را اجرا " +"کنید که در غیر این صورت تحت پوشش چارچوب فایروال قرار نمی گیرند. دستورات پس " +"از راه اندازی مجدد هر فایروال، درست پس از بارگذاری قوانین پیش فرض اجرا می " +"شوند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "طبقه بندی DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "علامت DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "علامت مورد نیاز DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "آدرس مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "پورت مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "منطقه مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "نام دستگاه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"قوانین اضافی برای رد ترافیک ارسال شده با حالت conntrack نصب " +"نکنیدنامعتبر. این ممکن است برای راه اندازی مسیر نامتقارن پیچیده " +"مورد نیاز باشد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "رها کردن بسته های نامعتبر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "به کار انداختن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "فعال کردن NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "محافظت SYN-flood را فعال کردن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "فعال کردن ورود به سیستم در این منطقه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"آدرس شبکه و ترجمه پورت IPv4 (NAT4 یا NAPT4) را برای ترافیک خروجی در این " +"منطقه فعال کنید. این معمولاً در منطقه wan فعال است." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"آدرس شبکه و ترجمه پورت IPv6 (NAT6 یا NAPT6) را برای ترافیک خروجی در این " +"منطقه فعال کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "به کار افتاده" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "ردیابی تعداد بسته ها و بایت ها را برای مجموعه فعال می کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "انتظار: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"به صراحت راهنماهای ردیابی اتصال مجاز را برای ترافیک منطقه انتخاب می کند" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "آدرس IP خارجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "پورت خارجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "استدلال های اضافی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "استدلال های اضافی مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "استدلال های اضافی iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "استدلال های اضافی منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "خانواده" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "دیوار آتش" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "فایروال - قوانین سفارشی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "فایروال - مجموعه های IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "فایروال - قوانین NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "فایروال-پورت رو به جلو" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "فایروال - قوانین ترافیک" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "فایروال - تنظیمات منطقه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "انتقال پیکربندی فایروال" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "پیشروی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"%{ipv6?%{ipv4?IPv4 و IPv6:IPv6}:IPv4}%{proto? , پروتکل %{proto#%{next?, }%{item.name}}}%{mark?, " +"علامت %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "جمعه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "پیکربندی عمومی" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "اجازه دسترسی به پیکربندی فایروال" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "تخلیه جریان سخت افزار" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (محدوده)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "مجموعه های IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "آی پی ها/شبکه ها" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "آی پی ها/شبکه ها/مک ها" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "آی پی نسخه ۴" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 و IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "فقط IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "آی پی نسخه ۶" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "فقط IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "دستگاه ورودی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "شامل فایل" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"ورودی %{ipv6?%{ipv4?IPv4 و IPv6:IPv6}:" +"IPv4}%{proto? , پروتکل %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"با انواع % {item.types#%{next?, %{item}}:%{item." +"name}}}}%{ mark?، علامت %{mark." +"val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val} مطابقت دهید }}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "اندازه هش اولیه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "ورودی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "آدرس IP داخلی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "پورت داخلی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "منطقه داخلی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "هدایت بین ناحیه‌ای" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "علامت DSCP نامعتبر است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "مقدار حد نامعتبر است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "نام مجموعه نامعتبر است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "ترکیدگی را محدود کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "محدود کردن پیام های گزارش" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "محدود کردن تطابق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"محدود کردن تطابق به %{limit.num} بسته ها در هر %{limit.unit}" +"%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "مخفی کاری محدود فعال شد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "تطابق ترافیک را با نرخ مشخص شده محدود می کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP منبع Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "بالماسکه - به طور خودکار در IP رابط خروجی بازنویسی شود" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "بستن MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "ماسکه کردن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "همخوانی داشتن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "DSCP را مطابقت دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "با نوع ICMP مطابقت دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "دستگاه مطابق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "با ترافیک ارسال شده به آدرس IP داده شده مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"با ترافیک ارسالی هدایت شده در پورت مقصد یا محدوده پورت مشخص مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "با ترافیک ارسال شده از این IP یا محدوده مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"با ترافیک ارسال شده منشأ گرفته از درگاه منبع پورت یا محدوده پورت داده شده " +"مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "کمک کننده به همخوانی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"با ترافیک ورودی هدایت شده به درگاه مقصد پورت یا محدوده پورت داده شده در این " +"میزبان مطابقت دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "علامت مطابقت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "با استفاده از راهنمای ردیابی اتصال مشخص شده، ترافیک را مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "با یک علامت فایروال خاص یا طیف وسیعی از علامت های مختلف مطابقت دارد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"با استفاده از دستگاه شبکه خروجی مشخص شده با ترافیک ارسال شده مطابقت دارد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "با ترافیک حامل علامت DSCP مشخص شده مطابقت دارد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "حداکثر ورودی ها" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "بیشترین طول" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"حداکثر تعداد بسته های اولیه برای مطابقت: این تعداد هر بار که به حد تعیین شده " +"در بالا نرسیده باشد، تا این تعداد , یک بار شارژ می شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "دوشنبه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "روزهای ماه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "قوانین NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"قوانین NAT اجازه می دهد تا کنترل دقیق روی IP منبع برای ترافیک خروجی یا ارسال " +"شده استفاده شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmask" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "کامل با QoS / SQM سازگار نیست." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "فقط با ترافیک ورودی هدایت شده در آدرس IP داده شده مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "فقط ترافیک ورودی از این MACها را مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "فقط ترافیک ورودی از این IP یا محدوده را مطابقت دهید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"فقط با ترافیک ورودی که از پورت منبع یا محدوده پورت داده شده در میزبان مشتری " +"منشا می‌گیرد، مطابقت دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "دستگاه خروجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "منطقه خروجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "خروجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "تطابق فیلد بسته" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"فیلدهای بسته برای مطابقت با آنها.
نحو: direction_datatype. به " +"عنوان مثال: src_port، dest_net.
مسیرها: src، dst. انواع داده: ip, port, mac, net, set.
پیوندهای جهت " +"اختیاری هستند.
*توجه: نوع داده set در fw4 پشتیبانی نمی‌شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "آرگومان های اضافی را به iptables ارسال می کند. با احتیاط استفاده کنید!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"ارسال آرگومان‌های خام iptables به قوانین طبقه‌بندی ترافیک مبدأ و مقصد، امکان " +"تطبیق بسته‌ها را بر اساس معیارهای دیگری غیر از رابط‌ها یا زیرشبکه‌ها فراهم " +"می‌کند. این گزینه‌ها باید با دقت زیاد مورد استفاده قرار گیرند، زیرا مقادیر " +"نامعتبر می‌توانند مجموعه قوانین فایروال را شکسته و به طور کامل همه سرویس‌ها را " +"در معرض دید قرار دهند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "مسیر فایل CIDR ها، زیرشبکه ها، IP های میزبان و غیره.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "هدایت پورت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"ارسال پورت به رایانه های راه دور در اینترنت اجازه می دهد تا به رایانه یا " +"سرویس خاصی در شبکه LAN خصوصی متصل شوند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "محدوده پورت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "شیوه‌نامه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "ترافیک ورودی منطبق را به پورت داده شده در میزبان داخلی تغییر مسیر دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "ترافیک ورودی منطبق را به میزبان داخلی مشخص شده تغییر مسیر دهید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "مراجعه به مجموعه خارجی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "مناطق بازتابی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "نیاز به پشتیبانی سخت افزاری NAT دارد." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Masquerading را به زیرشبکه‌های مقصد مشخص محدود کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Masquerading را به زیرشبکه های منبع داده شده محدود کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "محدود کردن به آدرس خانواده" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "آدرس IP را بازنویسی کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "ترافیک منطبق را به آدرس IP منبع مشخص شده بازنویسی کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"ترافیک منطبق را در درگاه منبع پورت یا محدوده پورت مشخص شده بازنویسی کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "بازنویسی پورت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "بارگذاری مسیریابی/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - در IP یا پورت منبع خاصی بازنویسی کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "شنبه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "علامت گذاری" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"مقدار علامت داده شده را روی اتصالات ایجاد شده تنظیم کنید. قالب مقدار[/mask] " +"است. اگر یک ماسک مشخص شده باشد، فقط آن بیت هایی که در ماسک تنظیم شده اند، " +"اصلاح می شوند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "تخلیه جریان نرم افزار" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "آدرس IP منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "آدرس MAC منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "آدرس منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "پورت منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "منطقه منبع" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"مشخص می کند که آیا این قانون ترافیک به یک دستگاه شبکه ورودی یا خروجی خاص " +"مرتبط شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"مشخص می کند که آیا از آدرس IP خارجی یا داخلی برای ترافیک منعکس شده استفاده " +"شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "تاریخ شروع (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "زمان شروع (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "تاریخ توقف (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "زمان توقف (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "روش ذخیره سازی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "یکشنبه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "پیکربندی فایروال موجود باید تغییر کند تا LuCI به درستی کار کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"فایروال مناطقی را روی رابط های شبکه شما ایجاد می کند تا جریان ترافیک شبکه را " +"کنترل کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"گزینه های زیر خط مشی های حمل و نقل بین این منطقه (%s) و مناطق دیگر را کنترل " +"می کنند. مناطق مقصد ترافیک ارسال‌شده منشاء %q را " +"پوشش می‌دهند. مناطق منبع با ترافیک بازارسال شده از مناطق دیگر مطابقت " +"دارد با هدف %q. قانون ارسال یک جهته است، به عنوان " +"مثال. فوروارد از lan به wan نیست مستلزم اجازه فوروارد از wan به lan " +"نیز نیست." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"این بخش ویژگی های رایج %q را تعریف می کند. گزینه‌های input و " +"output خط‌مشی‌های پیش‌فرض را برای ترافیک ورودی و خروجی از این منطقه " +"تنظیم می‌کنند در حالی که گزینه forward خط‌مشی برای ترافیک ارسال‌شده " +"بین شبکه‌های مختلف را شرح می‌دهد. در داخل منطقه شبکه های تحت پوشش " +"مشخص می کند که کدام شبکه های موجود عضو این منطقه هستند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "پنجشبنه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "محدودیت های زمانی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "زمان در UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "محدودیت زمانی برای این قانون فعال شده است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "تایم اوت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "کمک کننده ردیابی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "قوانین ترافیک" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"قوانین ترافیک سیاست هایی را برای بسته هایی که بین مناطق مختلف حرکت می کنند، " +"تعریف می کنند، به عنوان مثال برای رد ترافیک بین میزبان های خاص یا باز کردن " +"پورت های WAN روی روتر." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "سه شنبه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "امکان ذخیره محتوا وجود ندارد: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"واحد: ثانیه پیش‌فرض 0 به این معنی است که ورودی برای همیشه به " +"مجموعه اضافه می‌شود.
حداکثر: 2147483 ثانیه." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "راهنمای کنتراک ناشناخته یا نصب نشده\"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT بدون نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "فوروارد بدون نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "قانون بدون نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "مجموعه بی نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "منطقه بدون نام" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "پروتکل ناشناخته" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"با فشار دادن \"Continue\"، بخش‌های \"redirect\" با هدف \"SNAT\" به بخش‌های " +"\"nat\" تبدیل می‌شوند و فایروال برای اعمال پیکربندی به‌روز شده مجددا راه‌اندازی " +"می‌شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "از آدرس IP خارجی استفاده کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "از آدرس IP داخلی استفاده کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "استفاده از ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"از این گزینه برای طبقه بندی ترافیک منطقه بر اساس دستگاه های شبکه مدیریت شده " +"خام و غیرuci استفاده کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"از این گزینه برای طبقه بندی ترافیک منطقه بر اساس زیرشبکه مبدا یا مقصد به جای " +"شبکه ها یا دستگاه ها استفاده کنید." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "علامت فایروال معتبر لازم است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "چهارشنبه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "روزهای هفته" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "علامت فایروال XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "علامت XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "دستگاه شما از فایروال 4 استفاده نمی کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "دستگاه شما از فایروال 4 استفاده می کند." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "فوروارد ⇒منطقه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "مناطق" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"مناطقی که قوانین بازتاب از آنها ایجاد می شود. اگر تنظیم نشود، فقط منطقه مقصد " +"استفاده می شود." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "تایید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "هر" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "هر منطقه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "هر/همه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "علامت فایروال را اعمال کنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "اختصاص کمک کننده conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "خودکار" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "بیت مپ فقط ipv4 است" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "روز" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: آی پی مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: آدرس مک مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: (زیر)شبکه مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: پورت مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: مجموعه آی پی(ipset) مقصد" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "بازنویسی نکنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "پیگیری نکنید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "رها کردن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 از ارجاع دادن و ایجاد مجموعه‌های IP برای ساده‌سازی تطبیق فهرست‌های " +"آدرس بزرگ بدون نیاز به ایجاد یک قانون برای هر آیتم برای تطبیق پشتیبانی " +"می‌کند. محدوده پورت در ipset توسط فایروال 4 پشتیبانی نمی شود.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "هش" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "ساعت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: آدرس آی پی" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
برای استفاده با انواع داده Match: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "آی پی نسخه ۴" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "لیست" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: آدرس مک" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "دقیقه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (زیر)شبکه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: پورت" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "رد کردن" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "ثانیه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: مجموعه آی پی(ipset)*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: مجموعه آی پی مبدا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: آی پی مبدا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: آدرس مک مبدا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: (زیر)شبکه مبدا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: پورت مبدا" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "این دستگاه" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "این منطقه جدید" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "نامحدود" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "نامشخص" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "تا ۶۵۵۳۶ ورودی." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "علامت فایروال معتبر" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "تخیله کردن مبتنی بر نرم افزار برای مسیریابی/NAT" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" diff --git a/luci-app-firewall/po/fi/firewall.po b/luci-app-firewall/po/fi/firewall.po new file mode 100644 index 000000000..f7efb5ba1 --- /dev/null +++ b/luci-app-firewall/po/fi/firewall.po @@ -0,0 +1,1610 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-08-31 15:13+0000\n" +"Last-Translator: Kieli Puoli \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.8-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Välitetty:Tuleva}:Lähtevä} %{ipv6?%{ipv4?IPv4 ja " +"IPv6:IPv6}:IPv4}%{proto?, protokolla " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP tyypit %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP " +"%{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, " +"helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "- lisää IP -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "- lisää MAC -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +" Hyväksy %{src?%{dest?välitä:tuleva}:" +"lähtevä}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Estä lähteen uudelleenkirjoitus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Välitä kohteeseen %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? porttiin %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Pudota %{src?%{dest?välitä:tuleva}:lähtevä}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +" Määritä DSCP luokittelu " +"%{set_dscp} " + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Määritä yhteydenseuranta avustaja " +"{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} palomuurimerkintä " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +" Uudelleenkirjoita automaattisesti " +"lähteen IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Älä seuraa %{src?%{dest?välitä:tuleva}:" +"lähtevä}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Hylkää %{src?%{dest?välitä:tuleva}:" +"lähtevä}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Uudelleenkirjoita lähde staattisesti " +"%{snat_ip? IP-%{snat_ip}} %{snat_port?portti {snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Uudelleenkirjoitus IP on määritettävä!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "HYVÄKSY - Uudelleenkirjoittamatta osoitetta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Toiminta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Muutiptables argumentit vyöhykkeen kohdeliikenteen " +"luokittelemiseksi, esimerkiksi -p tcp --dport 443 vastaa vain " +"lähtevää HTTPS-liikennettä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Muutiptables argumentit vyöhykkeen lähdeliikenteen " +"luokittelemiseksi, esimerkiksi -p tcp --dport 443 vastaa vain " +"lähtevää HTTPS-liikennettä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Lisäasetukset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Salli \"virheellinen\" liikenne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Salli välitys lähdevyöhykkeeltä:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Salli välitys kohdevyöhykkeelle:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Mikä tahansa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Minä päivänä tahansa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Käytä bitwise XOR-sääntöä muodostetuissa yhteyksissä. Muoto on arvo[/maski]. " +"Jos maski on määritetty, maskissa määritetyt bitit nollataan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Käytä annettua DSCP-luokkaa tai arvoa muodostetuille yhteyksille." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "Määritä yhteysseurantaapuri vastaavalle liikenteelle." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automaattinen avustajan määritys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Määritä yhteysseurantaapuri automaattisesti protokollan ja portin perusteella" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Kommentti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Conntrack-asetukset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack-auttajat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Sisältö on tallennettu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Jatka" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Katetut laitteet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Katetut verkot" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Katetut aliverkot" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Mukautetut säännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Mukautetut säännöt antavat sinun suorittaa mielivaltaisia iptable-komentoja, " +"joita palomuurin toiminnot eivät muuten kata. Komennot suoritetaan jokaisen " +"palomuurin uudelleenkäynnistyksen jälkeen heti oletussääntöjoukon lataamisen " +"jälkeen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP-luokitus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP-merkki" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP-merkki vaaditaan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Kohdeosoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Kohdeportti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Kohdevyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Laitenimi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Älä asenna ylimääräisiä sääntöjä välitetyn liikenteen hylkäämiseksi, jos " +"conntrack-tila on virheellinen . Tätä voidaan tarvita " +"monimutkaisissa epäsymmetrisissä reittiasetuksissa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Pudota virheelliset paketit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Ota käyttöön" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Ota käyttöön NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Käytä SYN-flood-suojausta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Ota kirjaaminen käyttöön tällä vyöhykkeellä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Käytössä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Odotettu: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "Valitse käsin sallivat yhteydenseuranta-apurit vyöhykeliikenteelle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Ulkoinen IP-osoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Ulkoinen portti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Ylimääräiset argumentit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Lisäkohdeargumentit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Iptablesin lisäargumentit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Lisälähdeargumentit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Palomuuri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Palomuuri - Mukautetut säännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Palomuuri - NAT-säännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Palomuuri - Portin välitys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Palomuuri - Liikennesäännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Palomuuri - vyöhykeasetukset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Palomuurin määritysten siirto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Välitä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Perjantai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Lähde %{src}%{src_device?, sovitin %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Lähde %{src}%{src_device?, sovitin %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Lähde %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Yleiset asetukset" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Anna pääsy palomuurin määrityksiin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Laitteistovirran purku" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP:t/verkot" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP:t/verkot/MAC:it" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 ja IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Vain IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Vain IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Saapuva laite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Tuleva" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Sisäinen IP-osoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Sisäinen portti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Sisäinen vyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Virheellinen DSCP-merkki" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Virheellinen raja-arvo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Rajoita purskeet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Rajoita lokisanomia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Rajoita vastaavat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Rajoita vastaavuus %{limit.num} pakettia per %{limit.unit}%{limit.burst? purske %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Rajoitettu naamiointi käytössä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Rajoittaa liikenteen määritettyyn nopeuteen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Loopback-lähteen IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"MASQUERADE - Uudelleenkirjoitus automaattisesti lähtevän rajapinnan IP: lle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS-kiinnitys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Naamiointi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Vastaa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Vastaa DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Vastaa ICMP-tyyppiä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Vastaa laitetta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Vastaa annettuun IP-osoitteeseen välitettyä liikennettä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Vastaa välitettyä liikennettä, joka on suunnattu määrättyyn porttiin tai " +"portti-alueeseen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Vastaa välitettyä liikennettä tästä IP-osoitteesta tai alueelta." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Vastaa välitettyä liikennettä, joka on peräisin annetusta portista tai " +"portti-alueesta." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Vastaa auttajaa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Vastaa saapuvaa liikennettä, joka on suunnattu annetulle kohdeportille tai " +"portti-alueelle tällä laitteella" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Vastaa merkkiä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Vastaa liikennettä määritetyllä yhteydenseuranta-apurilla." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "Vastaa tiettyä palomuurimerkkintää tai joukkoa erilaisia merkkintöjä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "Vastaa välitettyä liikennettä tietyn lähtevän sovittimen perusteella." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Vastaa liikennettä, jolla on määritetty DSCP-merkintä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Alkuperäinen enimmäismäärä vastaamaan: tämä määrä kasvatetaan yhdellä aina, " +"määritettyyn numeroon saakka, kunnes annettu määrä saavutetaan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Maanantai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Kuukauden päivät" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT-säännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT-säännöt sallivat lähde-IP:n hienostuneen hallinnan käytettäväksi " +"lähtevässä tai välitetyssä liikenteessä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nimi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Ei täysin yhteensopiva QoS/SQM:n kanssa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Vastaa vain annettuun IP-osoitteeseen suuntautuvaa liikennettä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Vastaa vain näistä MAC-osoitteista tulevaa liikennettä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Vastaa vain saapuvaa liikennettä tästä IP-osoitteesta tai alueelta." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Vastaa vain saapuvaa liikennettä, joka on lähtöisin annetusta lähdeportista " +"tai porttialueesta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Lähtevälaite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Lähtevä vyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Lähtevä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Välittää lisäargumentteja iptablesille. Käytä varoen!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Iptable-argumentien käyttäminen lähde- ja kohdeliikenteen luokitussääntöihin " +"sallii pakettien valitsemisen muilla kriteereillä kuin sovittimin tai " +"aliverkkoin. Näitä vaihtoehtoja tulee käyttää erittäin varovaisesti, koska " +"virheelliset arvot voivat rikkoa palomuurisäännöt paljastaen kaikki palvelut." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Portin välitys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Portinvälityksen avulla Internetin etätietokoneet voivat muodostaa yhteyden " +"tiettyyn tietokoneeseen tai palveluun yksityisessä lähiverkossa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Porttialue" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokolla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Uudelleenohjaa saapuva liikenne sisäisen palvelimelle annettuun porttiin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Uudelleenohjaa saapuva liikenne määritettyyn sisäiseen palvelimeen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Edellyttää laitteiston NAT-tukea." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Rajoita naamiointi tiettyihin kohdeverkkoihin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Rajoita naamiointi tiettyihin kohdeverkkoihin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Rajoita tietyille osoitteille" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Kirjoita IP-osoite uudelleen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" +"Kirjoita vastaava tietoliikenne uudelleen määritettyyn lähde-IP-osoitteeseen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Kirjoita vastaava tietoliikenne uudelleen määritettyyn lähdeporttiin tai " +"porttialueeseen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Uudelleenkirjoita portti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Reititys/NAT-purku" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Kirjoita tiettyyn lähde IP:hen tai porttiin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Lauantai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Merkitse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Määritä määritetty merkkiarvo muodostetuille yhteyksille. Muoto on arvo[/" +"mask]. Jos maski on määritetty, vain maskiin määritettyjä bittiä muokataan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Ohjelmistopohjainen tietovirran nopeutus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Lähde-IP-osoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Lähde MAC-osoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Lähdeosoite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Lähdeportti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Lähdevyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Määrittää, sidotaanko tämä liikennesääntö tiettyyn saapuvaan vai lähtevään " +"verkkolaitteeseen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Määrittää, käytetäänkö ulkoista vai sisäistä IP-osoitetta heijastuneeseen " +"liikenteeseen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Aloituspäivä (vvvv-kk-pp)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Aloitusaika (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Lopetuspäivä (vvv-kk-pp)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Lopetusaika (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Sunnuntai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "Nykyistä palomuurimääritystä on muutettava, jotta LuCI toimisi oikein." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Palomuuri luo vyöhykkeitä verkkosovittimista verkkoliikenteen kulun " +"hallitsemiseksi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Alla olevat asetukset ohjaavat tämän vyöhykkeen (%s) ja muiden vyöhykkeiden " +"välisiä välityskäytäntöjä. Kohdevyöhyke kattavat välitettävän " +"liikenteen , joka on peräisin kohteesta %q. " +"Lähdevyöhykkeet vastaavat välitettyä liikennettä muilta vyöhykkeiltä " +", jotka on kohdistettu kohteeseen %q. Välityssääntö on " +"yksisuuntainen, esimerkiksi eteenpäin lanista waniin ei " +"merkitse lupaa myös päästä eteenpäin wanista laniin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Tässä osassa määritetään kohteen %q yleiset ominaisuudet. tuleva ja " +" lä'htevä -asetukset asettavat oletuskäytännöt tälle alueelle " +"saapuville ja sieltä poistuneille liikenteelle, kun taas välitä -" +"vaihtoehdossa kuvataan alueen eri verkkojen välisen välitettyä liikennettä " +"koskeva käytäntö. Katetut verkot määrittävät, mitkä käytettävissä " +"olevat verkot ovat tämän vyöhykkeen jäseniä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Torstai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Aikarajoitukset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "UTC-aika" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Aikarajoitukset ovat käytössä tälle säännölle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Maksimiaika" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"Kohde %{dest}%{dest_device?, sovitin %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Kohde %{dest}%{dest_device?, via sovitin %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Kohde %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Seurantaapuri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Liikennesäännöt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Liikennesäännöt määrittävät käytännöt eri vyöhykkeiden välillä kulkeville " +"paketeille, esimerkiksi tiettyjen isäntien välisen liikenteen hylkäämiseksi " +"tai WAN-porttien avaamiseksi reitittimessä." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Tiistai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Sisältöä ei voi tallentaa: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Tuntematon tai asentamaton conntrack-auttaja \"% s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Nimeämätön NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Nimeämätön välitys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Nimetön sääntö" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Nimeämätön vyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Tunnistamaton protokolla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Kun painat \"Jatka\", \"uudelleenohjaus\" -kohdat, joilla on tavoite " +"\"SNAT\", muunnetaan \"nat\" -osioiksi ja palomuuri käynnistetään uudelleen " +"päivitetyn määrityksen aktivoimiseksi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Käytä ulkoista IP-osoitetta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Käytä sisäistä IP-osoitetta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Tämän vaihtoehdon avulla voit luokitella vyöhykeliikennettä raakana, ei-" +"uci -hallittujen sovittimien avulla." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Tämän asetuksen avulla voit luokitella vyöhykeliikenteen lähde- tai kohde " +"aliverkon mukaan verkkojen tai laitteiden sijaan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Kelvollinen palomuurimerkintä vaaditaan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Keskiviikko" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Viikon päivät" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR-palomuurimerintä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR-merkki" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Vyöhyke ⇒ Välitys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Vyöhykkeet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "hyväksy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "mikä tahansa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "mikä tahansa vyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "aseta palomuurimerkintä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "määritä conntrack-helper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automaattinen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "päivä" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "älä kirjoita uudelleen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "älä seuraa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "pudota" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "tunti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minuutti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "hylkää" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "sekunti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "tämä laite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "tämä uusi vyöhyke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "rajoittamaton" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "määrittelemätön" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "kelvollinen palomuurimerkintä" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Ohjelmistopohjainen reititys/NAT" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Välitetty IPv4%{proto?, protokolla %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Saapuva IPv4%{proto?, protokolla %{proto#%{next?, }%{item.types?%{item.name}ICMP tyypit %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +#~ "%{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/fr/firewall.po b/luci-app-firewall/po/fr/firewall.po new file mode 100644 index 000000000..d142a9523 --- /dev/null +++ b/luci-app-firewall/po/fr/firewall.po @@ -0,0 +1,1676 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-02-01 22:49+0000\n" +"Last-Translator: ButterflyOfFire \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.4-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- ajouter IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- ajouter MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Accepter %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Empêcher la réécriture de la source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Transférer vers %{dest}%{dest_ip ? IP " +"%{dest_ip}}%{dest_port ? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Ignorer %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Assigner DSCP classification " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Attribuer conntrack assistant " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Réécrire automatiquement l'IP source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Ne pas pister %{src?%{dest?forward:" +"input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Rejeter %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Réécrire statiquement vers la source " +"%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Une IP de réécriture doit être spécifiée !" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPTER - Désactiver la réécriture d'adresses" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Action" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Arguments iptables bruts supplémentaires pour classer le trafic de " +"destination de la zone, par exemple -p tcp --dport 443 pour " +"correspondre uniquement au trafic HTTPS sortant." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Arguments iptables bruts supplémentaires pour classer le trafic " +"source de la zone, par exemple -p tcp --sport 443 pour " +"correspondre uniquement au trafic HTTPS entrant." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Famille d’adresses, l’adresse IP interne doit correspondre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"La famille d'adresses, l'adresse source, l'adresse de destination et " +"l'adresse IP de réécriture doivent correspondre" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Paramètres avancés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Autoriser le trafic \"invalide\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Permettre la transmission des zones source :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Permettre la transmission vers les zones destination :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "N'importe lequel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "N'importe quel jour" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Appliquer un XOR au niveau du bit de la valeur donnée et de la valeur de " +"repère existante sur les connexions établies. Le format est la valeur[/" +"mask]. Si un masque est spécifié, les bits définis dans le masque sont mis à " +"zéro." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Applique la classe ou la valeur DSCP donnée aux connexions établies." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Attribue l'assistant de suivi des connexions spécifié au trafic " +"correspondant." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Affectation automatique des assistants" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Attribuer automatiquement des assistants conntrack en fonction du protocole " +"de trafic et du port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Commentaire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Paramètres Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Assistants Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Les contenus ont été enregistrés." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Continuer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Compteurs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Appareils couverts" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Réseaux couverts" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Sous-réseaux couverts" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Règles spécifiques" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Les règles personnalisées vous permettent d'exécuter des commandes iptables " +"arbitraires qui ne sont pas autrement couvertes par le framework de pare-" +"feu. Les commandes sont exécutées après chaque redémarrage du pare-feu, " +"juste après le chargement de l'ensemble de règles par défaut." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Classification DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Marque DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Marque DSCP requise" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Adresse de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Port de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Zone de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Nom de l'appareil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"N'installez pas de règles supplémentaires pour rejeter le trafic transféré " +"avec l'état conntrack invalide. Cela peut être nécessaire pour les " +"configurations de route asymétriques complexes." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Ignorer les paquets invalides" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Activer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Activer le NAT sur la boucle-locale" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Activer la protection contre le SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Activer les traces (logs) sur cette zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Activer la traduction d'adresse réseau et de port IPv4 (NAT4 ou NAPT4) pour " +"le trafic sortant de cette zone. Cette option est généralement activée dans " +"la zone wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Activer la traduction d'adresse réseau et de port IPv6 (NAT6 ou NAPT6) pour " +"le trafic sortant sur cette zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Activé" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Active le suivi du nombre de paquets et d'octets pour l'ensemble." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Attendu : %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Choisit explicitement les assistants de suivi de connexion autorisés pour le " +"trafic de zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Adresse IP externe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Port externe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Arguments supplémentaires" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Arguments de destination supplémentaires" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Arguments supplémentaires iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Arguments sources supplémentaires" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Famille" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Pare-feu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Pare-feu - Règles personnalisées" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Pare-feu - IPset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Pare-feu - Règles NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Pare-feu - Redirections de ports" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Pare-feu - Règles de trafic" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Pare-feu - Configuration des zones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migration de la configuration du pare-feu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Avant" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Transféré %{ipv6?%{ipv4?IPv4 et IPv6:IPv6}:" +"IPv4}%{proto? protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Vendredi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Réglages généraux" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Octroi l'accès à la configuration du pare-feu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Déchargement de flux matériel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "Plage d'IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP Sets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPs/Réseaux" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPs/Réseaux/MACs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 et IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "IPv4 uniquement" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Masquage IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "IPv6 uniquement" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Appareil entrant" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Inclure le fichier" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Entrant %{ipv6?%{ipv4?IPv4 et IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}" +":%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Taille initiale du hachage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Entrée" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Adresse IP interne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Port interne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Zone interne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Marque DSCP non valide" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Valeur limite non valide" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Rafale limite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Limiter les messages de journalisation" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Limiter la correspondance" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limiter la correspondance à %{limit.num} paquets par %{limit." +"unit}%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Autorise un masquage limité" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Limite le trafic correspondant au débit spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP source de bouclage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Réécriture automatique sur l'IP de l'interface sortante" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Contrainte du MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Masquage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Correspond" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Faire correspondre DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Type ICMP correspondant" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Match appareil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" +"Faites correspondre le trafic transféré dirigé vers l'adresse IP donnée." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Faites correspondre le trafic transféré dirigé vers le port de destination " +"ou de ports donné." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" +"Fait correspondre le trafic transféré depuis cette adresse IP ou cette plage." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Fait correspondre le trafic transféré provenant du port source ou de la " +"plage de ports donné." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Assistant à la correspondance" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Prendre en compte le trafic dirigé vers le port de destination donné (ou la " +"gamme de ports) sur cet hôte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Correspondance mark" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Fait correspondre le trafic à l'aide de l'assistant de suivi des connexions " +"spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Fait correspondre à un marquage de pare-feu spécifique ou à un intervalle de " +"marquages différents." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Fait correspondre le trafic transféré en fonction du périphérique réseau " +"sortant spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Correspond au trafic portant le marquage DSCP spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Entrées max" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Longueur Max" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Nombre initial maximal de paquets à faire correspondre: ce nombre est " +"rechargé d'un à chaque fois que la limite spécifiée ci-dessus n'est pas " +"atteinte, jusqu'à ce nombre." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Lundi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Mois jours" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Règles NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Les règles NAT permettent un contrôle fin sur l'IP source à utiliser pour le " +"trafic sortant ou transféré." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Masque réseau" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Pas entièrement compatible avec QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Correspondre uniquement au trafic entrant dirigé vers l'adresse IP donnée." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Montrer seulement le trafic entrant provenant de ces adresses MAC." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"Correspondre uniquement au trafic entrant provenant de cette adresse IP ou " +"de cette plage." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Faire correspondre uniquement le trafic entrant provenant du port source ou " +"de la plage de ports donné sur l'hôte client" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Périphérique sortant" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Zone sortante" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Sortie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Packet Field Match" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Les champs de paquets correspondant à.
Syntax : direction_datatype. e.g. : src_port, dest_net.
Directions : src, " +"dst. Types de données : ip, port, mac, net, set.
Les préfixes de direction sont optionnels.
*Note : datatype " +"set n'est pas supporté dans fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Passe des arguments supplémentaires aux tables d'adresses IP. A utiliser " +"avec précaution !" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Le passage d'arguments iptables bruts aux règles de classification du trafic " +"source et de destination permet de faire correspondre les paquets en " +"fonction d'autres critères que les interfaces ou les sous-réseaux. Ces " +"options doivent être utilisées avec une extrême prudence, car des valeurs " +"non valides peuvent endommager le jeu de règles du pare-feu, exposant " +"complètement tous les services." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" +"Chemin d'accès au fichier des CIDR, des sous-réseaux, des IP hôtes, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Redirections de port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"La redirection de port permet aux ordinateurs distants sur Internet, de se " +"connecter à un ordinateur ou service spécifié dans le réseau local privé." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Plage de ports" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protocole" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Rediriger le trafic entrant correspondant vers le port donné sur l'hôte " +"interne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Rediriger le trafic entrant correspondant vers l'hôte interne spécifié" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Reportez-vous à l'ensemble externe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zones de réflection" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Nécessite un support NAT matériel." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" +"Restreindre la substitution d'adresses (Masquerade) à ces sous-réseaux " +"destinataires" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" +"Restreindre la substitution d'adresses (Masquerade) à ces sous-réseaux " +"sources" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Restreindre à la famille d’adresses" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Réécrire l'adresse IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Réécrit le trafic correspondant à l'adresse IP source spécifiée." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Réécrit le trafic correspondant sur le port source ou la plage de ports " +"spécifié." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Port de réécriture" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Routage/déchargement NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Réécriture sur IP ou port source spécifique" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Samedi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Définir la marque" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Définissez la valeur de repère donnée sur les connexions établies. Le format " +"est la valeur[/mask]. Si un masque est spécifié, seuls les bits définis dans " +"le masque sont modifiés." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Déchargement de flux logiciel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Adresse IP source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Adresse MAC source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Adresse source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Port source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Zone source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Spécifie s'il faut lier cette règle de trafic à un périphérique réseau " +"entrant ou sortant spécifique." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Spécifie s'il faut utiliser l'adresse IP externe ou interne pour le trafic " +"réfléchi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Date de début (aaaa-mm-jj)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Heure de début (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Date d'arrêt (aaaa-mm-jj)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Heure d'arrêt (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Méthode de stockage" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Dimanche" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"La configuration de pare-feu existante doit être modifiée pour que LuCI " +"fonctionne correctement." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Le pare-feu crée des zones sur les interfaces réseau pour contrôler le flux " +"du trafic réseau." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Les options ci-dessous contrôlent les politiques de transmission entre cette " +"zone (%s) et les autres zones. Zones de destination couvre le " +"trafic transfmis venant de %q. Zones source " +"correspond au trafic transféré d'autres zones à destination de %q. La règle de transmission est unidirectionnelle, la " +"transmission du LAN au WAN n'implique pas également l'autorisation " +"de transmission du WAN au LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Cette section définit les propriétés communes de %q. Les options entrée et sortie définissent les politiques par défaut pour le trafic " +"entrant et sortant de cette zone tandis que l'option transfert " +"décrit la politique pour le trafic transféré entre différents réseaux dans " +"la zone. Réseaux couverts spécifie quels réseaux disponibles sont " +"membres de cette zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Jeudi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Restrictions de temps" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Heure en UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Des restrictions horaires sont activées pour cette règle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Délai d'attente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Aide au suivi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Règles de trafic" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Les règles de trafic définissent des politiques pour les paquets voyageant " +"entre différentes zones, par exemple pour rejeter le trafic entre certains " +"hôtes ou pour ouvrir des ports WAN sur le routeur." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Mardi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Impossible d'enregistrer le contenu : %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unité : secondes. Défaut 0 signifie que l'entrée est ajoutée de " +"manière permanente à l'ensemble.
Max : 2147483 secondes." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Assistant conntrack inconnu ou non installé \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT sans nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Transfert sans nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Règle sans nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Unnamed set" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Zone sans nom" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Protocole non reconnu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"En appuyant sur \"Continuer\", les sections \"rediriger\" avec la cible " +"\"SNAT\" seront converties en sections \"nat\" et le pare-feu sera redémarré " +"pour appliquer la configuration mise à jour." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Utiliser une adresse IP externe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Utiliser l'adresse IP interne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Utiliser ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Utilisez cette option pour classer le trafic de zone par périphériques " +"réseau bruts non uci gérés." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Utilisez cette option pour classer le trafic de zone par sous-réseau source " +"ou de destination au lieu de réseaux ou de périphériques." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Marque de pare-feu valide requise" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Mercredi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Jours de la semaine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "Marque de pare-feu XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Marque XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Votre appareil n'exécute pas firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Votre appareil fonctionne avec firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zone ⇒ Transferts" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zones depuis lesquelles les règles de réflexion doivent être appelées. Si " +"non défini, seulement la zone de destination est utilisée." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "accepter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "tous" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "n'importe quelle zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "tout/tous" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "appliquer une marque de pare-feu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "affecter l'assistant conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatique" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "Bitmap uniquement pour IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "journée" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip : IP de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac : Adresse MAC de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net : Destination (sous -) Réseau" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port : Port de destination" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set : Destination ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "ne pas réécrire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "ne pas pister" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "ignorer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 prend en charge le référencement et la création d' IPset afin de " +"simplifier la correspondance de gd listes d'adresses sans avoir à créer une " +"règle par élément. Les plages de ports dans les ipsets ne sont pas prises en " +"charge par firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "Du port au port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "heure" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip : addr IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
A utiliser avec les types de données Match : *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "liste" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac : MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minute" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "réseau : (sous-)réseau" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port : Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "rejeter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "seconde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set : ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set : Source ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip : IP source" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac : Source MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net : Source (sous-)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Source Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "cet appareil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "cette nouvelle zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "illimité" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "non précisé" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "jusqu'à 65536 entrées." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "marque de pare-feu valide" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Déchargement basé sur logiciel pour le routage/NAT" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" diff --git a/luci-app-firewall/po/ga/firewall.po b/luci-app-firewall/po/ga/firewall.po new file mode 100644 index 000000000..2c0f9fd16 --- /dev/null +++ b/luci-app-firewall/po/ga/firewall.po @@ -0,0 +1,1623 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-10-25 20:19+0000\n" +"Last-Translator: Aindriú Mac Giolla Eoin \n" +"Language-Team: Irish \n" +"Language: ga\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :(" +"n>6 && n<11) ? 3 : 4;\n" +"X-Generator: Weblate 5.8.2-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Ar Aghaidh:Isteach}:Amach} %{ipv6?%{ipv4?IPv4 agus " +"IPv6:IPv6} :IPv4}%{proto?, prótacal " +"%{proto#%{next?, }%{item.types?%{item." +"name} ICMP le cineálacha %{item.types#%{next?, }" +"%{item}}:% {item.name}}}} %{mark?, marcáil %{mark.val}} " +"%{dscp?, DSCP %{dscp.inv? %{dscp.val}: %{dscp.val} }} %{ cúntóir?, cúntóir %{helper.inv? %{helper.val}:" +" %{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "- Cuir IP leis -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "- cuir MAC leis -" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Glac le %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Cosc ar athscríobh foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Ar aghaidh chuig %{dest}%{dest_ip? IP " +"%{dest_ip}} %{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Buail %{src?%{dest?forward:input}:aschur}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Sann DSCP rangú %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"An bhfuil fonn ort cúntóir a shannadh " +" %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} marc balla dóiteáin " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Athscríobh go huathoibríoch IP foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Ná rianaigh %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Diúltaigh %{src?%{dest?forward:input}:" +"aschur}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Athscríobh go statach chuig foinse " +"%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Ní mór IP athscríobh a shonrú!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "GLACADH - Díchumasaigh athscríobh seoltaí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Gníomhaíocht" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Argóintí breise amh iptables chun trácht ceann scríbe crios a " +"rangú, m.sh. -p tcp --dport 443 chun trácht HTTPS amach a " +"mheaitseáil amháin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Argóintí breise amh iptables chun trácht foinse crios a rangú, m." +"sh. -p tcp --sport 443 chun trácht HTTPS isteach a mheaitseáil " +"amháin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Teaghlach seoladh, Caithfidh seoladh IP inmheánach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Caithfidh seoladh teaghlach, seoladh foinse, seoladh ceann scríbe, " +"athscríobh seoladh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Socruithe chun cinn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Ceadaigh trácht “neamhbhailí”" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Ceadaigh ar aghaidh ó criosanna foinse:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Ceadaigh ar aghaidh chuig criosanna:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Aon" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Lá ar bith" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Cuir XOR giotáin den luach tugtha agus an luach marc atá ann cheana i " +"bhfeidhm ar naisc bhunaithe. Is é an fhormáid luach [/mask]. Má shonraítear " +"masc ansin déantar na giotáin sin a leagtar amach sa masc a nialú." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Cuir an rang nó an luach DSCP a thugtar i bhfeidhm ar naisc bhunaithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "Sann an cúntóir rianaithe nasc sonraithe le trácht comhoiriúnach." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Sannadh cúntóir uathoi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Cúntóirí conntrack a shannadh go huathoibríoch bunaithe ar phrótacal tráchta " +"agus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Trácht" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Socruithe Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Cúntóirí Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Sábháiltear an t-ábhar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Lean ar aghaidh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Áiritheoirí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Feistí clúdaithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Líonraí clúdaithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Fo-líontaí clúdaithe" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Rialacha Saincheaptha" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Ligeann rialacha saincheaptha duit orduithe iptables treallach a " +"fhorghníomhú nach bhfuil clúdaithe ag an gcreat balla dóiteáin ar shlí eile. " +"Déantar na horduithe a fhorghníomhú tar éis gach balla dóiteáin a atosú, " +"díreach tar éis an tacar rialacha réamhshocraithe a luchtú." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Aicmiú DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Marca DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Marca DSCP ag teastáil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Seoladh scríbe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Port ceann scríbe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Crios ceann scríbe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Ainm gléas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Ná suiteáil rialacha breise chun trácht ar aghaidh a dhiúltú le staid " +"conntrack neamhbhailí. D'fhéadfadh sé seo a bheith ag teastáil le " +"haghaidh socruithe casta bealaí neamhshiméadracha." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Scaoil pacáid neamhbhailí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Cumasaigh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Cumasaigh NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Cumasaigh cosaint tuilte Sync" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Cumasaigh logáil ar an gcrios seo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Cumasaigh seoladh líonra agus aistriúchán poirt IPv4 (NAT4 nó NAPT4) le " +"haghaidh tráchta amach sa chrios seo. Is gnách é seo a chumasú sa chrios " +"wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Cumasaigh seoladh líonra agus aistriúchán calafoirt IPv6 (NAT6 nó NAPT6) le " +"haghaidh tráchta amach ar an gcrios seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Cumasaithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Cumasaíonn sé rianú comhaireamh paicéad agus béite don tacar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Ag súil le: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Roghnaíonn sé go sainráite cúntóirí rianaithe nasc ceadaithe do thrácht" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Seoladh IP seachtrach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Calafort seachtrach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Argóintí breise" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Argóintí scríbe breise" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Argóintí breise iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Argóintí foinse breise" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Teaghlach" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Balla dóiteáin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Dóiteáin - Rialacha Saincheaptha" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Balla dóiteáin - tacair IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Balla dóiteáin - Rialacha NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Balla dóiteáin - Port Forwards" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Balla Dóiteáin - Rialacha Tráchta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Balla dóiteáin - Socruithe Crios" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Imirce cumraíochta dóiteáin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "Cineál díluchtaithe sreabhadh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Ar aghaidh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Curtha ar aghaidh %{ipv6?%{ipv4?IPv4 agus IPv6:" +"IPv6}:IPv4}%{ proto? , prótacal %{proto#%{ar " +"aghaidh?, }%{item.name} }} %{mark?, marc %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Dé hAoine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Ó %{src}%{src_device?, comhéadan %{src_device}} %{src_ip?, IP " +"%{src_ip#%{next?, } %{item.ival} }} %{src_port?, port " +"%{src_port#%{ Next?, } %{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Ó %{src}%{src_device?, comhéadan %{src_device}} %{src_ip?, IP " +"%{src_ip#%{next?, } %{item.ival} }} %{src_port?, port " +"%{src_port#%{ Next?, } %{item.ival} }} %{src_mac?, MAC " +"%{src_mac#%{next?, } %{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Ó %{src}%{src_ip?, IP %{src_ip#%{ar aghaidh?, } %{item.ival} }} %{src_port?, port %{src_port#%{ Next?, } %{item.ival} }} " +"%{src_mac?, MAC %{src_mac#%{next?, } " +"%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Socruithe Ginearálta" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Rochtain a dheonú ar chumraíocht dóiteáin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "Díluchtú bunaithe ar chrua-earraí le haghaidh ródú le/gan NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Díluchtú sreafa crua-earraí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (raon)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Tacair IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPS/líonraí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPS/líonraí/Macanna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 agus IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "IPv4 amháin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Mascaradh IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "IPv6 amháin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Gléas isteach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Cuimsigh Comhad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Ag teacht isteach %{ipv6?%{ipv4?IPv4 agus IPv6:" +"IPv6}:IPv4}%{ proto? , prótacal " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP le cineálacha % {item.types#%{next?, }" +"%{item}}: %{item.name} }}} %{ marc?, " +"marcáil %{mark.val}} %{helper?, cúntóir %{helper.inv? %{helper.val}:" +" %{helper.val} }}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Méid Hash Tosaigh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Ionchur" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Seoladh IP inmheánach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Port inmheánach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Crios inmheánach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Intra chrios ar aghaidh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Marca DSCP neamhbhailí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Luach teorann neamhbhailí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Ainm tacar neamhbhailí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Pléascadh teorainn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Teachtaireachtaí logála teorainn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Meaitseáil teorainn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Teorainn a mheaitseáil le %{limit.num} paicéad in aghaidh an " +"%{limit.unit} %{limit.burst? pléasctha %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Cumasaithe masquerading teoranta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Teoraíonn sé meaitseáil tráchta leis an ráta sonraithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Foinse Loopback IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Athscríobh go huathoibríoch chuig IP comhéadan amach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Clampáil MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Masquerating" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Meaitseáil" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Meaitseáil DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Meaitseáil cineál ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Gléas meaitseála" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Meaitseáil trácht ar aghaidh atá dírithe ar an seoladh IP ar leith." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Meaitseáil an trácht ar aghaidh atá dírithe ar an gcalafort ceann scríbe nó " +"ar an raon poirt a thugtar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Meaitseáil trácht ar aghaidh ón IP nó an raon seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Meaitseáil an trácht ar aghaidh a thagann as an gcalafort foinseach nó as an " +"raon poirt a thugtar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Cúntóir meaitseála" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Meaitseáil trácht isteach atá dírithe ar an gcalafort ceann scríbe nó an " +"raon calafoirt ar leith" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Marca meaitseála" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Meaitseáil an trácht ag baint úsáide as an gcúntóir rianaithe nasc sonraithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Meaitseálann sé le marc balla dóiteáin sonrach nó raon marcanna éagsúla." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Meaitseálann sé trácht ar aghaidh ag baint úsáide as an ngléas líonra amach " +"sonraithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Meaitseálann sé trácht a iompraíonn an marcáil sonraithe DSCP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Iontrálacha Uasta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Fad Uasta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Uaslíon tosaigh na bpacáit atá le meaitseáil: athmhuirearaítear an uimhir " +"seo gach uair nach sroichtear an teorainn a shonraítear thuas, suas go dtí " +"an uimhir seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Dé Luain" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Laethanta Míosa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Rialacha NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Ligeann rialacha NAT rialú mín ghráinneach ar an IP foinse a úsáid le " +"haghaidh trácht amach nó ar aghaidh." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Ainm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Líonmasc" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "Dada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Ní hiomlán comhoiriúnach le QOS/méadar cearnach." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Ní mheaitseáil ach trácht isteach atá dírithe ar an seoladh IP ar leith." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Ní mheaitseáil ach trácht atá ag teacht isteach ó na MACanna seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Ní mheaitseáil ach trácht atá ag teacht isteach ón IP nó an raon seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Ní mheaitseáil ach trácht atá ag teacht isteach ón gcalafort foinse nó raon " +"calafoirt ar an óstach cliant" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Gléas amach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Crios amach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Aschur" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Cluiche Réimse Pacáiste" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Réimsí paicéad le meaitseáil leo.
Comhréir: direction_datatype. m.sh.: src_port, dest_net.
Treoracha: src, dst. Cineálacha sonraí: ip, port, mac, glan, tacar.
Tá " +"réimíreanna treorach roghnach.
*Tabhair faoi deara: ní thacaítear le " +"cineál data set i fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Cuireann argóintí breise chuig iptables. Úsáid go cúramach!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Trí argóintí amh iptables a chur ar aghaidh chuig rialacha aicmithe tráchta " +"foinse agus cinn scríbe is féidir paicéid a mheaitseáil bunaithe ar chritéir " +"eile seachas comhéadain nó folíonta. Ba cheart na roghanna seo a úsáid go " +"han-chúramach toisc go bhféadfadh luachanna neamhbhailí an tacar rialacha " +"balla dóiteáin a bhriseadh, rud a nochtfadh na seirbhísí go léir go hiomlán." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Conair chuig comhad CIDRanna, folíonta, IPanna óstaigh, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Port ar aghaidh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Ligeann cur ar aghaidh calafoirt do ríomhairí cianda ar an Idirlíon ceangal " +"le ríomhaire nó seirbhís ar leith laistigh den LAN príobháideach." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Raon calafoirt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Prótacal" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Trácht atá ag teacht isteach a atreorú chuig an gcalafort ar leith ar an " +"óstach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Trácht atá ag teacht isteach a atreorú chuig an óstach inmheán" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Féach do Sraith Seachtrach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Criosanna machnaimh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Teastaíonn tacaíocht NAT crua-earraí." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Masquerading a theorannú go fo-líontaí ceann scríbe ar leith" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Masquerading a theorannú le fo-líontaí foinse ar leith" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Cuir srian le dul i ngleic le" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Seoladh IP a athscríobh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Athscríobh trácht comhoiriúnach chuig an seoladh IP foinse sonraithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Athscríobh trácht comhoiriúnach chuig an gcalafort nó an raon calafort " +"sonraithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Port a athscríobh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Rótar/Díluchtú NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Athscríobh chuig IP nó calafort foinse ar leith" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Dé Sathairn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Socraigh marc" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Socraigh an luach marc a thugtar ar naisc bhunaithe. Is é an fhormáid luach " +"[/mask]. Má shonraítear masc ansin ní dhéantar ach na giotáin sin atá " +"leagtha amach sa masc a mhodhnú." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "Díluchtú bogearraí-bhunaithe le haghaidh ródú/NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Díluchtú sreafa bogearraí" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Seoladh IP foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Seoladh MAC foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Seoladh foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Source port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Crios foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Sonraíonn sé an riail tráchta seo a cheangal le feiste ar leith líonra " +"isteach nó amach." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Sonraíonn sé an seoladh IP seachtrach nó an seoladh IP inmheánach a úsáid le " +"haghaidh tráchta léirithe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Dáta Tosaigh (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Am Tosaigh (hh:mm: ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Dáta Stopa (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Am Stop (hh:mm: ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Modh Stórála" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Domhnach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Ní mór an chumraíocht balla dóiteáin atá ann cheana a athrú chun LuCi a " +"fheidhmiú i gceart." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Cruthaíonn an balla dóiteáin criosanna thar do chomhéadain líonra chun " +"sreabhadh tráchta líonra a rialú." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Rialaíonn na roghanna thíos na polasaithe seolta ar aghaidh idir an crios " +"seo (%s) agus criosanna eile. Clúdaíonn Criosanna Ceann Scríbe " +"trácht ar aghaidh a thagann ó %q. Meaitseálann " +"criosanna foinse trácht ar aghaidh ó chriosanna eile " +"dírithe ar %q. Is é an riail ar aghaidh aontreoch, " +"m.sh. ní déanann ar aghaidh ó lan go wan cead a thabhairt ar " +"aghaidh ó wan go lan freisin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Sainmhíníonn an roinn seo airíonna coitianta % q. Socraíonn na roghanna " +"ionchuir agus aschur na beartais réamhshocraithe don " +"trácht atá ag teacht isteach agus ag imeacht ón gcrios seo agus déanann an " +"rogha ar aghaidh cur síos ar an bpolasaí do thrácht ar aghaidh idir " +"líonraí éagsúla laistigh den chrios. Sonraíonn Líonraí clúdaithe cé " +"na líonraí atá ar fáil atá ina mbaill den chrios seo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Déardaoin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Srianta Ama" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Am i UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Tá srianta ama cumasaithe don riail seo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Teorainn ama" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"Chuig %{dest}%{dest_device?, comhéadan %{dest_device}} " +"%{dest_ip?, IP %{dest_ip#%{next?, } %{item.ival} }} %{dest_port?, port " +"%{dest_port#%{ Next?, } %{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Chuig %{dest}%{dest_device?, trí chomhéadan %{dest_device}} " +"%{dest_ip?, IP %{dest_ip#%{next?, } %{item.ival} }} %{dest_port?, port " +"%{dest_port#%{ Next?, } %{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Chuig %{dest}%{dest_ip?, IP %{dest_ip#%{ar aghaidh?, } %{item.ival} }} %{dest_port?, port %{dest_port#%{ Next?, } %{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Cúntóir rianaithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Rialacha Tráchta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Sainmhíníonn rialacha tráchta beartais maidir le paicéid a thaistealaíonn " +"idir criosanna éagsúla, mar shampla chun trácht a dhiúltú idir óstaigh " +"áirithe nó chun calafoirt WAN a oscailt ar an ródaire." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Dé Máirt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Níorbh fhéidir inneachar a shábháil: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Aonad: soicind. Ciallaíonn réamhshocrú 0 go gcuirtear an " +"iontráil go buan leis an tacar.
Uasmhéid: 2147483 soicind." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Cúntóir conntrack anaithnid nó nach bhfuil suiteáilte “%s”" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT gan ainm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Ar aghaidh gan ainmniú" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Riail gan ainmniú" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Sraith gan ainmniú" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Crios gan ainm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Prótacal neamh-aitheanta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Nuair a bhrú “Lean ar aghaidh”, déanfar rannáin “atreorú” le sprioc “SNAT” a " +"thiontú go rannáin “nat” agus athosófar an balla dóiteáin chun an " +"chumraíocht nuashonraithe a chur i bhfeidhm." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Úsáid seoladh IP seachtrach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Úsáid seoladh IP inmheánach" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Úsáid ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Úsáid an rogha seo chun trácht crios a rangú de réir gairis líonra amha, " +"nach bhfuil á mbainistiú ag uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Úsáid an rogha seo chun trácht crios a rangú de réir foinse nó foghlíon " +"ceann scríbe in ionad líonraí nó feistí." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Teastaíonn marc balla dóiteáin bail" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Dé Céadaoin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Laethanta Seachta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "Marca balla dóiteáin XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Marca XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Ní ritheann do ghléas firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Ritheann do ghléas firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Crios ⇒ Seoladh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Criosanna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Criosanna as a gcruthófar rialacha machnaimh. Mura bhfuil sé socraithe, ní " +"úsáidtear ach an crios ceann scríbe." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "glacadh le" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "aon" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "aon chrios" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "aon éig/go léir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "cuir marc balla dóiteáin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "cúntóir conntrack a shannadh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "uathoibrithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "Níl bitmap ipv4 amháin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "lá" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP ceann scríbe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Ceann scríbe MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Ceann scríbe (fo-) glan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Port Scríbe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Ceann scríbe ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "ná athscríobh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "ná rianú" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "titim" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"tacaíonn firewall4 le tagairt a dhéanamh agus le tacair IP a chruthú chun " +"meaitseáil liostaí seoltaí móra a shimpliú gan aon ghá le riail amháin a " +"chruthú in aghaidh na míre le meaitseáil. Ní thacaíonn balla dóiteáin4 le " +"raonta poirt in ipsets.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "uair an chloig" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP Addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Le húsáid le cineálacha sonraí Match: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "liosta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "Mac: Mac Addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "nóiméad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "glan: (fo-) glan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "calafort: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "diúltú" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "an dara" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "tacar: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "SRC_Set: Foinse ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Foinse IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Foinse MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Foinse (fo-) glan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Port Foinse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "an gléas seo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "an crios nua seo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "neamhtheoranta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "neamhshonraithe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "suas go dtí 65536 iontráil." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "marc balla dóiteáin bailí" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Díluchtú bunaithe ar bhogearraí le haghaidh Routa/NAT" diff --git a/luci-app-firewall/po/he/firewall.po b/luci-app-firewall/po/he/firewall.po new file mode 100644 index 000000000..74e8c16e8 --- /dev/null +++ b/luci-app-firewall/po/he/firewall.po @@ -0,0 +1,1429 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2024-01-10 20:57+0000\n" +"Last-Translator: Yaron Shahrabani \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 5.4-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "יש לציין כתובת IP לשכתוב!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "פעולה" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "אגד הכתובות והכתובת הפנימיות חייבות להתאים" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "הגדרות מתקדמות" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "כל" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "כל יום" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "תגובה" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "המשך" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "כתובת יעד" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "פתחת היעד" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "אזור היעד" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "שם המכשיר" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "הפעלה" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "פעילה" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/hi/firewall.po b/luci-app-firewall/po/hi/firewall.po new file mode 100644 index 000000000..778f57566 --- /dev/null +++ b/luci-app-firewall/po/hi/firewall.po @@ -0,0 +1,1431 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-07-06 11:32+0000\n" +"Last-Translator: Sathvic \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "उन्नत सेटिंग्स" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "अग्रेषित करना" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/hu/firewall.po b/luci-app-firewall/po/hu/firewall.po new file mode 100644 index 000000000..fe0984fdb --- /dev/null +++ b/luci-app-firewall/po/hu/firewall.po @@ -0,0 +1,1642 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2024-08-20 16:40+0000\n" +"Last-Translator: hmzs \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.7\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"\"%{src?%{dest?Továbbított:Bejövő}:Kimenő} %{ipv6?%{ipv4?IPv4 és " +"IPv6:IPv6}:IPv4}%{proto?, protokoll\\: " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP típus\\: %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, " +"Jelölő\\: %{mark.val}}%{dscp?, DSCP\\: %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, Segítő\\: " +"%{helper.inv?%{helper.val}:%{helper.val}}}\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- IP-cím hozzáadása --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- MAC-cím hozzáadása --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?Továbbítás:Bemenet}:Kimenet} Elfogadása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" +"Elfogadja a forráscímet (nincs átírás)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"msgstr \"Továbbítás ⇒%{dest}%{dest_ip?" +"%{dest_ip} IP-re}%{dest_port?%{dest_ip? és }%{dest_port} portra}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"{src?%{dest?Továbbítás:Bemenet}:Kimenet} Eldobása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"DSCP hozzárendelés\\: " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"%{set_helper} Követés-segítő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Hozzárendelt:XOR} tűzfal " +"jelölő\\: %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Automatikusan átírva a forrás IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"%{src?%{dest?Továbbítás:Bemenet}:Kimenet} kapcsolatkövetés nélkül" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?Továbbítás:Bemenet}:Kimenet} Visszautasítása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statikusan átírva, új forrás%{snat_ip? " +"IP\\: %{snat_ip}}%{snat_port?%{snat_ip? és }port\\: " +"%{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Egy átírási IP-t meg kell adni!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ELFOGADÁS – címátírás letiltása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Művelet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"További nyers iptables argumentumok a zóna célforgalmának " +"besorolásához, például -p tcp --dport 443 csak a kimenő HTTPS " +"forgalom illesztéséhez." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"További nyers iptables argumentumok a zóna forrásforgalmának " +"besorolásához, például -p tcp --sport 443 csak a bejövő HTTPS " +"forgalom illesztéséhez." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Címcsalád, belső IP-címnek meg kell egyeznie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"A címcsaládnak, a forráscímnek, a célcímnek, az átírási IP-címnek meg kell " +"egyeznie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Haladó beállítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "„Érvénytelen” forgalom engedélyezése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Továbbítás engedélyezése a forrászónákból:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Továbbítás engedélyezése ezekbe a célzónákba:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Bármelyik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Bármely nap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"A megadott érték és a meglévő jelölőérték bitenkénti XOR (kizáró vagy) műveletének alkalmazása a kiépített kapcsolatokon. A formátum: érték[/" +"maszk]. Ha egy maszk meg van adva, akkor a maszkban beállított bitek ki " +"lesznek nullázva." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" +"A megadott DSCP-osztály vagy érték alkalmazása a kiépített kapcsolatokra." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"A megadott kapcsolatkövetés-segítő hozzárendelése az illesztett forgalomhoz." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automatikus segítő hozzárendelés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Kapcsolatkövetés-segítők automatikus hozzárendelése a forgalom protokollja " +"és portja alapján." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Megjegyzés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Kapcsolatkövető beállítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Kapcsolatkövetés-segítők" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "A tartalom mentésre került." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Folytatás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Számlálók" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Lefedett eszközök" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Lefedett hálózatok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Lefedett alhálózatok" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Egyéni szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Az egyéni szabályok lehetővé teszik tetszőleges iptables parancsok " +"végrehajtását, amelyeket a tűzfal keretrendszer egyébként nem fed le. A " +"parancsok minden tűzfal-újraindítás után végrehajtásra kerülnek, közvetlenül " +"az alapértelmezett szabálykészletek betöltődése után." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP-osztályozás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP jelölő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP jelölő szükséges" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Célcím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Célport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Célzóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Eszköznév" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Ne telepítsen további szabályokat az érvénytelen kapcsolatkövető " +"állapottal rendelkező továbbított forgalom visszautasításához." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Érvénytelen csomagok eldobása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Engedélyezés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "NAT visszacsatolás engedélyezése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "SYN-elárasztás elleni védelem engedélyezése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Naplózás engedélyezése ezen a zónán" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Engedélyezze az IPv4-es hálózati cím- és portfordítást (NAT4 vagy NAPT4) a " +"kimenő forgalomhoz ebben a zónában. Ez általában a wan zónában van " +"engedélyezve." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Engedélyezze az IPv6-os hálózati cím- és portfordítást (NAT6 vagy NAPT6) a " +"kimenő forgalomhoz ebben a zónában." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Engedélyezve" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Engedélyezi a csomag- és bájtszám nyomon követését a készlet számára." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Elvárás: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Egyértelműen kiválasztja az engedélyezett kapcsolatkövetés-segítőket a " +"zónaforgalomhoz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Külső IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Külső port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "További argumentumok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "További célargumentumok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "További iptables argumentumok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "További forrásargumentumok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Család" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Tűzfal" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Tűzfal – egyéni szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Tűzfal - IP-készletek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Tűzfal – NAT szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Tűzfal – porttovábbítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Tűzfal – forgalmi szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Tűzfal – zónabeállítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Tűzfal szabályok áttelepítése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Továbbítás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Továbbított %{ipv6?%{ipv4?IPv4 és IPv6:IPv6}:IPv4}%{proto?, protokoll\\: %{proto#%{next?, }%{item." +"name}}}%{mark?, Jelölő\\: %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Péntek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Innen: %{src}%{src_device?, csatoló\\: %{src_device}}%{src_ip?, " +"IP\\: %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port\\: " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Innen: %{src}%{src_device?, csatoló\\: %{src_device}}%{src_ip?, " +"IP\\: %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port\\: " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC\\: " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Innen: %{src}%{src_ip?, IP\\: %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port\\: %{src_port#%{next?, }%{item.ival}" +"}}%{src_mac?, MAC\\: %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Általános beállítások" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Jogosultság adása a tűzfal beállításához" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Hardveres áramláskiürítés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (tartomány)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP-készletek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP-k/Hálózatok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP-k/Hálózatok/MAC-címek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 és IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Csak IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 álcázás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Csak IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Bejövő eszköz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Belevett fájl" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Bejövő: %{ipv6?%{ipv4?IPv4 és IPv6:IPv6}:" +"IPv4}%{proto?, protokoll\\: %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"típus\\: %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, Jelölő\\: %{mark.val}}%{helper?, Segítő\\: " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Kezdeti hash méret" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Bemenet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Belső IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Belső port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Belső zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Érvénytelen DSCP jelölő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Érvénytelen korlátérték" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Érvénytelen készlet név" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Löketek korlátozása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Naplóüzenetek korlátozása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Illesztés korlátozása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Korlátozás: %{limit.num} csomag / %{limit.unit}%{limit." +"burst?, %{limit.burst} löket}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Korlátozott álcázás engedélyezve" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Korlátozza az illeszkedő forgalmat a megadott sebességre." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Visszacsatolt forrás IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "ÁLCÁZÁS – automatikus átírás a kimenő csatoló IP-jére" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS összefogás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Álcázás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Illesztés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "DSCP illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "ICMP-típus illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Eszköz illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "A megadott IP-címre irányított továbbított forgalom illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"A megadott célportra vagy porttartományra irányított továbbított forgalom " +"illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Erről az IP-ről vagy tartományról továbbított forgalom illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"A megadott forrásportról vagy porttartományból eredő továbbított forgalom " +"illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Illesztés-segítő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Az ezen a gépen lévő megadott célportra vagy porttartományra irányított " +"bejövő forgalom illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Jelölés illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Forgalom illesztése a megadott kapcsolatkövetés-segítő használatával." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Egy bizonyos tűzfaljelölőt vagy különböző jelölők tartományát illeszti." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"A megadott kimeneti hálózati eszköz használatával illeszti a továbbított " +"forgalmat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" +"A megadott DSCP jelölést használva " +"illeszti a forgalmat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Max bejegyzés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Max hossz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Az illesztendő csomagok legnagyobb kezdeti száma: ez a szám újratöltődik " +"minden alkalommal, amikor a fent meghatározott korlátot nem érik el, " +"legfeljebb eddig a számig." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Hétfő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Hónap napjai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"A NAT szabályok lehetővé teszik a részletes szabályozást a kimenő vagy " +"továbbított forgalomnál használandó forrás IP fölött." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Név" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmask" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" +"Nem teljesen kompatibilis a QoS / SQM használatával." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Csak a megadott IP-címre irányított bejövő forgalom illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Csak ezekről a MAC-címekről érkező bejövő forgalom illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"Csak erről az IP-ről vagy tartományból érkező bejövő forgalom illesztése." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Csak az ügyfélgépen lévő megadott forrásportról vagy porttartományból eredő " +"bejövő forgalom illesztése" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Kimenő eszköz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Kimenő zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Kimenet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Csomagmező illesztés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"A megfelelő csomagmezők.
Elrendezés: direction_datatype. pl.: " +"src_port, dest_net.
Útvonal: src, dst. " +"Adattípusok: ip, port, mac, net, set.
Az irány előtagok " +"nem kötelezőek.
Megjegyzés: a set adattípust az fw4 nem " +"támogatja." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Átadja a további argumentumokat az iptables részére. Használja " +"körültekintően!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"A forrás- és célforgalom osztályozási szabályainak való nyers iptables " +"argumentumok átadása lehetővé teszi a csomagoknak a csatolóktól vagy " +"alhálózatoktól eltérő feltételek alapján történő illesztését. Ezeket a " +"kapcsolókat rendkívül óvatosan kell használni, mivel az érvénytelen értékek " +"tönkre tehetik a tűzfalszabálykészleteket, ezáltal teljesen feltárva az " +"összes szolgáltatást." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" +"Elérési út a CIDR-ek, alhálózatok, gazdagép IP-" +"címek, stb. fájlhoz.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Porttovábbítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"A porttovábbítás lehetővé teszi az interneten lévő távoli számítógépeknek a " +"személyes helyi hálózat bizonyos számítógépéhez vagy szolgáltatásához " +"történő csatlakozását." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Port tartomány" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "Egyező bejövő forgalom átirányítása a belső gép megadott portjára." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Egyező bejövő forgalom átirányítása a megadott belső gépre." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Lásd: Külső készlet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Tükrözési zónák" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" +"Hardveres NAT támogatás szükséges." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Álcázás korlátozása a megadott cél-alhálózatokra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Álcázás korlátozása a megadott forrás-alhálózatokra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Korlátozás címcsaládra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "IP-cím átírása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Illesztett forgalom átírása a megadott forrás IP-címre." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Illesztett forgalom átírása a megadott forrásportra vagy porttartományra." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Port átírása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Útválasztás vagy NAT kiürítés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT – átírás egy adott forrás IP-re vagy portra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Szombat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Jelölő beállítása" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"A megadott jelölőérték beállítása a kiépített kapcsolatokon. A formátum: " +"érték[/maszk]. Ha egy maszk meg van adva, akkor csak a maszkban beállított " +"bitek lesznek módosítva." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Szoftveres áramláskiürítés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Forrás IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Forrás MAC-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Forráscím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Forrásport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Forrászóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Meghatározza, hogy ezt a forgalomszabályt egy adott bejövő vagy kimenő " +"hálózati eszközhöz kell kötni." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Meghatározza, hogy a külső vagy a belső IP-címet használja a visszatükrözött " +"forgalomnál." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Kezdés dátuma
(ÉÉÉÉ-HH-NN)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Kezdés ideje
(ÓÓ.PP.MM)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Leállítás dátuma
(ÉÉÉÉ-HH-NN)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Leállítás ideje
(ÓÓ.PP.MM)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Tárolási módszer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Vasárnap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"A meglévő tűzfalkonfigurációt módosítani kell a LuCI megfelelő működéséhez." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"A tűzfalzónákat hoz létre a hálózati csatolók fölött a hálózati forgalom " +"áramlásának szabályozásához." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Az alábbi beállítások vezérlik a továbbítási szabályokat a jelenlegi zóna " +"(%s) és a többi zóna között. A célzónák fedik le a továbbított " +"forgalmat, amelynek forrása %q. A forrászónák " +"illesztik a továbbított forgalmat más zónákból, amelynek célja %q. A továbbítási szabály egyirányú, például egy továbbítás " +"LAN-ból WAN-ba nem jelenti azt, hogy a továbbítás WAN-ból LAN-ba is " +"engedélyezett." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Ez a szakasz a(z) %q közös tulajdonságait határozza meg. A bemenet " +"és kimenet beállításai határozzák meg a zónába be- és kilépő " +"forgalom alapértelmezett szabályait, míg a továbbítási beállítás a " +"különböző hálózatok közötti továbbított forgalom szabályát írja le a zónán " +"belül. A lefedett hálózatok adják meg, hogy mely elérhető hálózatok " +"tagjai ennek a zónának." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Csütörtök" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Időkorlátozások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Idő UTC szerint" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Időkorlátozások engedélyezettek ennél a szabálynál" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Időtúllépés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Ide: %{dest}%{dest_device?, csatoló\\: %{dest_device}}%{dest_ip?, " +"IP\\: %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port\\: " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Ide: %{dest}%{dest_device?, csatolón át\\: %{dest_device}}%{dest_ip?, IP\\: %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port\\: %{dest_port#%{next?, }%{item.ival}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Ide: %{dest}%{dest_ip?, IP\\: %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port\\: %{dest_port#%{next?, }%{item.ival}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Követés-segítő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Forgalmi szabályok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"A forgalmi szabályok a különböző zónák között utazó csomagokra vonatkozó " +"szabályokat határozzák meg, például bizonyos gépek közötti forgalom " +"visszautasításához vagy WAN portok megnyitásához az útválasztón." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Kedd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Nem lehet elmenteni a tartalmat: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Mértékegység: másodperc. Max: 2 147 483 másodperc.
Az alapértelmezett " +"0 azt jelenti, hogy a bejegyzés véglegesen hozzáadódik a " +"készlethez." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Ismeretlen vagy nem telepített kapcsolatkövetés-segítő: „%s”" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Névtelen NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Névtelen továbbítás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Névtelen szabály" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Névtelen beállítás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Névtelen zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Ismeretlen protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"A „Folytatás” gomb megnyomására a \"SNAT\" célú \"átirányítás\" szakaszok " +"\"NAT\" szakaszokká alakulnak, és a tűzfal újraindul a frissített " +"beállítások alkalmazásához." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Külső IP-cím használata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Belső IP-cím használata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Használja ezt a beállítást a zónaforgalom nyers, nem uci által " +"kezelt hálózati eszközök szerint történő besorolásához." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Használja ezt a beállítást a zónaforgalom forrás- vagy célalhálózat szerint " +"történő besorolásához a hálózatok vagy eszközök helyett." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Érvényes tűzfaljelölő szükséges" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Szerda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Hétköznapok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR tűzfaljelölő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR jelölő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Az eszközön nem firewall4 fut." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Az eszközön firewall4 fut." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zóna ⇒ Továbbítások" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zónák" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zónák, amikből tükrözési szabályokat kell létrehozni. Ha nincs beállítva, " +"csak a célzóna kerül felhasználásra." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "elfogadás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "bármely" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "bármely zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "bármely/mind" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "tűzfaljelölő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "kapcsolatkövetés-segítő" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatikus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bittérkép" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "csak ipv4 bittérkép" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "nap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Cél IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Cél MAC-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Cél-(al)hálózat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Célport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Cél ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "ne írja át" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "nincs követés" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "eldobás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"A firewall4 támogatja a hivatkozást és az IP-készletek létrehozását, hogy " +"leegyszerűsítse a nagy címlisták egyeztetését anélkül, hogy elemenként egy " +"szabályt kellene létrehozni. A firewall4 nem támogatja az IP-készletekbenben " +"található porttartományokat.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "porttól-portig" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "óra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
Használja az egyező adattípusokhoz: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lista" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "perc" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (al)hálózat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "visszautasítás" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "másodperc" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Forrás ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Forrás IP-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Forrás MAC-cím" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Forrás-(al)hálózat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Forrásport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "ez az eszköz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "ez az új zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "korlátlan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "nincs meghatározva" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "65 536 bejegyzésig." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "érvényes tűzfaljelölő" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "" +#~ "Szoftver alapú kiürítés az útválasztásnál vagy NAT-nál." diff --git a/luci-app-firewall/po/id/firewall.po b/luci-app-firewall/po/id/firewall.po new file mode 100644 index 000000000..01fc4bc3f --- /dev/null +++ b/luci-app-firewall/po/id/firewall.po @@ -0,0 +1,1474 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2023-08-31 08:31+0000\n" +"Last-Translator: Charles03010 \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.0.1-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- tambahkan IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- tambahkan MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +" Terima %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr " Cegah penulisan ulang sumber" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Teruskan ke %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Jatuhkan%{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Tetapkan klasifikasi DSCP %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Tetapkan conntrack helper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Tetapkan:XOR} tanda firewall " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Menulis ulang IP sumber secara otomatis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Jangan lacak %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Tolak %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +#, fuzzy +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Tulis secara statis ke sumber %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "IP penulisan ulang harus ditentukan!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Nonaktifkan penulisan ulang alamat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Aksi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Argumen iptables mentah tambahan untuk mengklasifikasikan lalu " +"lintas tujuan zona, misalnya -p tcp --dport 443 agar hanya " +"cocok dengan lalu lintas HTTPS keluar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Argumen mentah iptables tambahan untuk mengklasifikasikan lalu " +"lintas sumber zona, mis. -p tcp --sport 443 agar hanya " +"mencocokkan lalu lintas HTTPS masuk." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Setelan Lanjutan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Izinkan lalu lintas \"tidak valid\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Izinkan forward dari zona sumber :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Izinkan forward ke zona tujuan :" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Apapun" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Setiap hari" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Terapkan XOR bitwise dari nilai yang diberikan dan nilai tanda yang ada pada " +"koneksi yang dibuat. Formatnya adalah nilai[/mask]. Jika mask ditentukan " +"maka bit-bit yang diatur dalam mask tersebut dinolkan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Terapkan kelas atau nilai DSCP yang diberikan ke koneksi yang dibuat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Tetapkan pembantu pelacakan koneksi yang ditentukan ke lalu lintas yang " +"cocok." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Penetapan pembantu otomatis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Diaktifkan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "meneruskan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Setelan Umum" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nama" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "zona apapun" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "terapkan tanda firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "tetapkan conntrack helper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "hari" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "jangan menulis ulang" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "jangan lacak" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "buang" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "jam" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "menit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "tolak" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "detik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "peranti ini" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "zona baru ini" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "tak terbatas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "tidak ditentukan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "tanda firewall valid" diff --git a/luci-app-firewall/po/it/firewall.po b/luci-app-firewall/po/it/firewall.po new file mode 100644 index 000000000..dbc799dd8 --- /dev/null +++ b/luci-app-firewall/po/it/firewall.po @@ -0,0 +1,1632 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-07-13 20:44+0000\n" +"Last-Translator: Random \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 e " +"IPv6:IPv6}:IPv4}%{proto?, protocollo " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP con tipi %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, assistente %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- aggiungi IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- aggiungi MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Accetta %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" +"Previeni la riscrittura dell'origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Inoltra a %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? porta %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Scarta (drop)%{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Assegna classificazione DSCP " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Assegna assistente conntrack " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"Contrassegno firewall %{set_mark?Assign:XOR} %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Riscrivi automaticamente l'IP di " +"origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Non rintracciare %{src?%{dest?forward:" +"input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Rifiuta (reject) %{src?%{dest?forward:" +"input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Riscrivi staticamente verso l'origine " +"%{snat_ip?IP %{snat_ip}} %{snat_port?porta %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "È necessario specificare un IP di riscrittura!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCETTA - Disattiva riscrittura degli indirizzi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Azione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Ulteriori argomenti grezzi di iptables per classificare il traffico " +"di destinazione della zona, ad es. -p tcp --dport 443 per il " +"solo traffico HTTPS in uscita." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Ulteriori argomenti grezzi di iptables per classificare il traffico " +"di origine della zona, ad es. -p tcp --sport 443 per il solo " +"traffico HTTPS in ingresso." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "La famiglia di indirizzi e l'indirizzo IP interno devono corrispondere" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"La famiglia di indirizzi, l'indirizzo di origine, l'indirizzo di " +"destinazione e l'indirizzo IP di riscrittura devono corrispondere" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Impostazioni avanzate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Consenti traffico \"non valido\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Consenti l'inoltro da zone di origine:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Consenti l'inoltro a zone di destinazione:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Qualsiasi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Qualsiasi giorno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Applica uno XOR bit a bit del valore dato e il valore contrassegno esistente " +"sulle connessioni stabilite. Il formato è valore[/maschera]. Se una maschera " +"è specificata allora quei bit impostati nella maschera sono azzerati." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Applica la classe o il valore DSCP dato per le connessioni stabilite." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Assegna l'assistente di tracciamento di connessione specificato al traffico " +"corrispondente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Assegnazione automatica dell'assistente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Assegna automaticamente gli assistenti conntrack in base al protocollo e " +"alla porta di traffico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Commento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Impostazioni di conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Assistenti di conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "I contenuti sono stati salvati." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Continua" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Contatori" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Dispositivi coperti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Reti coperte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Sottoreti coperte" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Regole personalizzate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Le regole personalizzate ti permettorno di eseguire comandi iptables " +"arbitrari che non sono altrimenti coperti dall'applicazione firewall. I " +"comandi sono eseguiti dopo ogni riavvio del firewall, giusto dopo le altre " +"regole che sono state caricate." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Classificazione DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Contrassegno DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Contrassegno DSCP richiesto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Indirizzo di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Porta di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Zona di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Nome dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Non installare regole extra per rifiutare il traffico inoltrato con lo stato " +"conntrack non valido. Può essere necessario per configurazioni di " +"instradamenti asimmetrici complesse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Scarta (drop) pacchetti non validi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Abilitare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Attiva loopback NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Attiva protezione SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Attiva registro su questa zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Attiva la traduzione di indirizzo di rete e porta IPv4 (NAT4 o NAPT4) per il " +"traffico in uscita su questa zona. È tipicamente attivata nella zona " +"wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Attiva la traduzione di indirizzo di rete e porta IPv6 (NAT6 o NAPT6) per il " +"traffico in uscita su questa zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Abilita" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Attiva il monitoraggio del conto di pacchetti e byte per il set." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Previsto: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Sceglie esplicitamente gli assistenti autorizzati del monitoraggio delle " +"connessioni per il traffico della zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Indirizzo IP esterno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Porta esterna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Argomenti extra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Argomenti di destinazione extra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Argomenti di iptables extra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Argomenti di origine extra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Famiglia" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Regole personalizzate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - Set di IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - Regole NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Inoltro porte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Regole di traffico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Impostazioni zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migrazione configurazione del firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Inoltra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Inoltrato %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocollo %{proto#%{next?, }%{item.name}}}%{mark?, contrassegno %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Venerdì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Da %{src}%{src_device?, interfaccia %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, porta " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Da %{src}%{src_device?, interfaccia %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, porta " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Da %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, porta %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Impostazioni Generali" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Concedi l'accesso alla configurazione del firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Scarico del flusso hardware" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (intervallo)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Set di IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP/Reti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP/Reti/MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 e IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Solo IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Masquerading IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Solo IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Dispositivo di ingresso" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Includi file" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"In ingresso %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocollo %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"con tipi %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, contrassegno %{mark.val}}%{helper?, " +"assistente %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Dimensione hash iniziale" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "In entrata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Indirizzo IP interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Porta interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Zona interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Inoltro zona intra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Contrassegno DSCP non valido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Valore di limite non valido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Nome set non valido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Limite di raffica" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Limita messaggi del registro" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Limita corrispondenza" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limita la corrispondenza a %{limit.num} pacchetti per " +"%{limit.unit}%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Masquerading limitato attivato" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Limita il traffico corrispondente alla velocità specificata." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP di origine loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"MASQUERADE - Riscrivi automaticamente all'IP dell'interfaccia in uscita" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Ancoraggio MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Corrispondenza" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Corrispondi DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Corrispondi tipo ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Corrispondi dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Corrispondi il traffico inoltrato diretto all'indirizzo IP indicato." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Corrispondi traffico inoltrato diretto alla porta o all'intervallo di porte " +"di destinazione." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Corrispondi il traffico inoltrato da questo IP o intervallo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Corrispondi il traffico inoltrato derivante dalla porta o dall'intervallo di " +"porte di origine." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Corrispondi assistente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Corrispondi il traffico in ingresso diretto alla porta o all'intervallo di " +"porte su questo host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Corrispondi contrassegno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Corrispondi il traffico usando l'assistente di monitoraggio della " +"connessione specificato." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Corrisponde un contrassegno specifico del firewall o un intervallo di " +"diversi contrassegni." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Corrisponde il traffico inoltrato usando il dispositivo di rete in uscita " +"specificato." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" +"Corrisponde il traffico che trasporta il contrassegno DSCP specificato." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Elementi massimi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Dimensione massima" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Numero massimo iniziale di pacchetti da corrispondere: questo numero viene " +"ricaricato da uno ogni volta che il limite specificato sopra non è " +"raggiunto, fino a questo numero." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Lunedì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Giorni del mese" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Regole NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Le regole NAT consentono un controllo granulare sull'IP di origine da usare " +"per il traffico in uscita o inoltrato." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Maschera di rete" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" +"Non completamente compatibile con QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Corrispondi solo traffico in entrata diretto al dato indirizzo IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Corrispondi solo traffico in entrata da questi MAC." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Corrispondi solo traffico in entrata da questo IP o intervallo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Corrispondi solo traffico in entrata originato dalla porta o intervallo di " +"porte sorgenti su host cliente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Dispositivo di uscita" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Zona di uscita" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "In uscita" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Corrispondenza campo pacchetto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"I campi dei pacchetti da corrispondere.
Sintassi: " +"direction_datatype. es.: src_port, dest_net.
Direzioni: src, dst. Tipi di dati: ip, port, mac, net, " +"set.
I prefissi di direzione sono facoltativi.
*Nota: il " +"tipo di dati set non è supportato in fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Passa comandi addizionali a iptables. Usare con cura!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Passare argomenti grezzi di iptables alle regole di classificazione del " +"traffico di origine e di destinazione, consente di corrispondere i pacchetti " +"in base ad altri criteri rispetto a interfacce o sottoreti. Queste opzioni " +"dovrebbero essere usate con estrema cura, in quanto valori non validi " +"possono invalidare le regole del firewall, esponendo completamente tutti i " +"servizi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Percorso al file dei CIDR, sottoreti, IP host, ecc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Inoltro porte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"L'inoltro delle porte permette a computer remoti su Internet di connettersi " +"a uno specifico computer o servizio presente nella LAN privata." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Intervallo di porte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protocollo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "Reindirizza il traffico in entrata alla porta data su host interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Reindirizza il traffico in entrata allo specifico host interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Fare riferimento a set esterno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zone riflettive" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Richiede supporto NAT hardware." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Limita il Masquerading alle subnet di destinazione date" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Limita il Masquerading alle subnet sorgente date" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Limita agli indirizzi famiglia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Riscrivi l'indirizzo IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" +"Riscrivi il traffico corrispondente sull'indirizzo IP di origine specificato." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Riscrivi il traffico corrispondente sulla porta o intervallo di porte di " +"origine specificate." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Riscrivi porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Scarico dell'instradamento/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Riscrivi sull'IP o porta di origine specificati" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Sabato" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Imposta contrassegno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Imposta il valore del contrassegno sulle connessioni stabilite. Il formato è " +"valore[/maschera]. Se una maschera è specificata allora solo quei bit " +"impostati nella maschera sono modificati." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Scarico del flusso software" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Indirizzo IP di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Indirizzo MAC di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Indirizzo di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Porta di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Zona di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Specifica se legare questa regola di traffico a uno specifico dispositivo di " +"rete in ingresso o in uscita." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Specifica se usare l'indirizzo IP esterno o interno per il traffico riflesso." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Data di Inizio (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Ora di inizio (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Data di Stop (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Ora di fine (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Metodo di archiviazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Domenica" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"L'attuale configurazione del firewall deve essere modificata affinché LuCI " +"funzioni correttamente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Il firewall crea delle zone nelle tue interfacce di rete per controllare il " +"flusso del traffico." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Queste opzioni controllano le regole di inoltro tra questa zona (%s) e altre " +"zone. Le zone di destinazione coprono il traffico inoltrato " +"originato da %q. Le zone di origine corrispondono " +"il traffico inoltrato da altre zone che puntano a %q. La " +"regola di inoltro è unidirezionale, esempio: un inoltro dalla lan " +"alla wan non implica anche un permesso da inoltrare dalla wan alla " +"lan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Questa sezione definisce le proprietà comuni di %q. Le opzioni " +"diingresso e uscita definiscono le regole di default per " +"il traffico in entrata e uscita di questa zona mentre l'opzione di " +"inoltro descrive il metodo per il traffico inoltrato tra reti " +"differenti nella zona. Le reti coperte specificano quali reti " +"disponibili sono membri di questa zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Giovedì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Restrizioni temporali" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Orario in UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Le restrizioni temporali sono attive per questa regola" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Scadenza" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Verso %{dest}%{dest_device?, interfaccia %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, porta %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Verso %{dest}%{dest_device?, via interfaccia %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, porta %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Verso %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, porta %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Assistente di monitoraggio" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Regole di Traffico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Le regole del traffico definiscono il metodo per il viaggio dei pacchetti " +"tra zone differenti, per esempio per rifiutare il traffico tra certi host o " +"per aprire porte WAN sul router." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Martedì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Impossibile salvare i contenuti: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unità: secondi. Il predefinito 0 significa che la voce viene " +"aggiunta in modo permanente al set.
Max: 2147483 secondi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Assitente conntrack sconosciuto o non installato \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT senza nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Inoltro senza nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Regola senza nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Set senza nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Zona senza nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Protocollo non riconosciuto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Dopo aver premuto \"Continua\", le sezioni \"reindirizza\" con destinazione " +"\"SNAT\" saranno convertite in sezioni \"nat\" e il firewall verrà riavviato " +"per applicare la configurazione aggiornata." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Usa l'indirizzo IP esterno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Usa l'indirizzo IP interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Usa ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Usa questa opzione per classificare il traffico di zona da dispositivi di " +"rete gestiti grezzi, nonuci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Usa questa opzione per classificare il traffico di zona per origine o " +"sottorete di destinazione, invece di reti o dispositivi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Contrassegno firewall valido richiesto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Mercoledì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Giorni della Settimana" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "Contrassegno firewall XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Contrassegno XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Il dispositivo non sta eseguendo firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Il dispositivo sta eseguendo firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Inoltri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zone da cui devono essere create regole riflettive. Se non impostato, viene " +"usata solo la zona di destinazione." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "accetta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "qualsiasi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "qualsiasi zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "qualsiasi/tutti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "applica contrassegno firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "assegna assistente conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatico" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap è solo ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "giorno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: indirizzo MAC di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: (sotto)rete di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: porta di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: ipset* di destinazione" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "non riscrivere" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "non tracciare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "scarta (drop)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 supporta il riferimento e la creazione di set di IP per " +"semplificare la corrispondenza di liste di indirizzi di grandi dimensioni, " +"senza la necessità di creare una regola per elemento da abbinare. Gli " +"intervalli di porte in ipsets non sono supportati da firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "ora" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: indirizzo IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
Da usare per i tipi di dati Match: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lista" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: indirizzo MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minuto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (sotto)rete" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "rifiuta (reject)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "secondo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: ipset* di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: indirizzo MAC di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: (sotto)rete di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: porta di origine" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "questo dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "questa nuova zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "illimitato" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "non specificato" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "fino a 65536 voci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "contrassegno firewall valido" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Scarico basato sul software per instradamento/NAT" diff --git a/luci-app-firewall/po/ja/firewall.po b/luci-app-firewall/po/ja/firewall.po new file mode 100644 index 000000000..7fa750ac5 --- /dev/null +++ b/luci-app-firewall/po/ja/firewall.po @@ -0,0 +1,1611 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-10-09 05:48+0000\n" +"Last-Translator: Monarch \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.8-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{ipv6?%{ipv4?IPv4IPv6:IPv6}:IPv4} の %{src?%{dest?転送:受信}:送信}%{proto?, プロトコル " +"%{proto#%{next?, }%{item.types?%{item." +"name}含まれる ICMP タイプ - %{item." +"types#%{next?, }%{item}}:%{item.name}}}}%{mark?, マーク %{mark.val}" +"}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, ヘルパー %{helper.inv?%{helper.val}" +":%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- IP を追加 --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- MAC を追加 --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?転送:受信}:送信} を 許可" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "アクセス元の書き換えを防止" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"%{dest}%{dest_ip? IP %{dest_ip}}%{dest_port? port " +"%{dest_port}} へ転送" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "%{src?%{dest?転送:受信}:送信} を 破棄" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"DSCP 区分の割り当て - %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"conntrack ヘルパーの割り当て - " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"ファイアウォール マークの%{set_mark?割り当て:XOR}" +" - %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"アクセス元 IP を 自動的に書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"%{src?%{dest?転送:受信}:送信} を追跡しない" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"%{src?%{dest?転送:受信}:送信} を拒否" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"アクセス元 %{snat_ip?IP %{snat_ip}} %{snat_port?ポート " +"%{snat_port}} への静的書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "書き換え先 IP の指定が必要です!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - アドレス書き換えを無効化" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "アクション" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"ゾーンの送信先へのトラフィックを区分するために付加する、生の iptables 引数です。(例: HTTPS 送信トラフィックのみにマッチさせる -p tcp --" +"dport 443)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"ゾーンを送信元とするトラフィックを区分するために付加する、生の iptables 引数です。(例: HTTPS 受信トラフィックのみにマッチさせる -p tcp --" +"sport 443)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "詳細設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "\"invalid\" トラフィックの許可" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "送信元ゾーンからの転送を許可する:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "宛先ゾーンへの転送を許可する:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "すべて" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "全日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"確立された接続に、指定された値と既存のマーク値のビット単位のXORを適用します。" +"形式は値 [/mask]です。マスクが指定されている場合、マスクに設定されているビッ" +"トはゼロになります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "指定された DSCP クラスまたは値を確立された接続に適用します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "指定された接続追跡ヘルパーを対象のトラフィックに割り当てます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "自動ヘルパー割り当て" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"トラフィックのプロトコルとポートに基づいて、 conntrack ヘルパーを自動的に割り" +"当てます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "コメント" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Conntrack 設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack ヘルパー" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "内容が保存されました。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "続行" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "カバーされるデバイス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "対象ネットワーク" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "カバーされるサブネット" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "手動設定ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"手動設定ルールの設定では、ファイアウォールの設定画面ではサポートされていない" +"ような、任意のiptablesコマンドを実行することが可能です。これらの任意のコマン" +"ドは、ファイアウォール機能の起動ごとに、標準のルールが読み込まれた後に実行さ" +"れます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP 区分" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP マーク" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP マークが必要です" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "宛先アドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "宛先ポート" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "宛先ゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "デバイス名" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"conntrack ステートが invalid である転送されたトラフィックを拒否する" +"追加ルールをインストールしない。これは、複雑で非対称なルートのセットアップに" +"必要となることがあります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "無効なパケットを遮断する" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "有効化" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "NATループバックを有効にする" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "SYN-Floodプロテクションを有効にする" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "このゾーンのログ記録を有効にする" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "%sである必要があります" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "ゾーン トラフィックの接続追跡ヘルパーを明示的に選択します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "外部IPアドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "外部ポート" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "追加の引数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "追加の送信先引数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "追加の iptables 引数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "追加の送信元引数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "ファイアウォール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "ファイアウォール - 手動設定ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "ファイアウォール - NAT ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "ファイアウォール - ポートフォワーディング" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "ファイアウォール - トラフィック・ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "ファイアウォール - ゾーン設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "ファイアウォール設定マイグレーション" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "転送" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "金曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"送信元: %{src}%{src_device?, インターフェース %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, ポート " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"送信元: %{src}%{src_device?, インターフェース %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, ポート " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }" +"%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"送信元: %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, ポート %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "一般設定" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "ファイアウォール構成へのアクセスを許可" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "ハードウェア フローオフロード" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP セット" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4及びIPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "IPv4のみ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "IPv6のみ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "受信側デバイス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "受信" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "内部IPアドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "内部ポート" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "内部ゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "無効な DSCP マーク" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "無効な制限値" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "バースト制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "ログメッセージを制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "一致の制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"一致するパケット数を %{limit.unit} あたり %{limit.num} " +"に制限%{limit.burst?(バースト %{limit.burst})}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "限定的なマスカレードが有効" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "トラフィックを指定されたレートに制限します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "ループバック元 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - 自動的に送信側インターフェース IP へ書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSSクランプ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "マスカレード" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "対象" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "DSCP の一致" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "ICMPタイプの一致" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "デバイスの一致" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "指定された IP アドレスに転送されるトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"指定されたポートまたはポート範囲に転送されるトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "この IP または範囲からのトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"指定された送信元ポートまたはポート範囲から発信されたトラフィックが対象になり" +"ます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "ヘルパーの一致" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"設定された宛先ポート(またはポート範囲)に一致した受信トラフィックが対象になり" +"ます" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "マークの一致" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "指定された接続追跡ヘルパーを使用するトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"特定のファイアウォール マークまたは異なる複数のマークの範囲が対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"指定された送信側ネットワーク デバイスを使用して転送されるトラフィックが対象に" +"なります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "指定された DSCP マークを持っているトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"対象となるパケットの最初の最大数です。この数は、上のレート制限で上限に到達し" +"なかった場合に、その時間毎にここで指定された数まで1ずつ回復します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "月曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "月間" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT ルールは、送信または転送トラフィックのために使用するアクセス元 IP に対し" +"て、とても細かな制御を可能にします。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "名前" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "QoS/SQM との完全な互換性はありません。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "設定された宛先IPアドレスと一致した受信トラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "設定されたMACアドレスと一致した受信したトラフィックが対象になります。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"設定されたIPアドレス (または範囲) と一致した受信したトラフィックが対象になり" +"ます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"設定されたクライアントホストの送信元ポート(またはポート範囲)からの受信トラ" +"フィックと一致したトラフィックのみを対象にします。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "送信側デバイス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "送信側ゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "送信" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"iptablesにパススルーする追加の引数を設定してください。注意して設定してくださ" +"い!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"送信元と送信先のトラフィックの区分ルールを、インターフェースやサブネット以外" +"の基準に基づいてマッチすることができるように、生の iptables 引数を渡します。" +"これらのオプションは、無効な値がファイアウォール ルールセットの破壊を引き起こ" +"し、全サービスを外部に晒す恐れがあることに、特段の注意を払い使用されなければ" +"なりません。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "ポートフォワーディング" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"ポートフォワーディングは、インターネット上のリモートコンピュータから、プライ" +"ベートなネットワーク上の、特定のコンピュータやサービスへのアクセスを可能にし" +"ます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "プロトコル" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"ルールに一致した受信トラフィックを、内部ホストの設定されたポートへ転送します" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "ルールに一致した受信トラフィックを、設定された内部ホストへ転送します" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "ハードウェア NAT サポートが必要です。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "設定された宛先サブネットへのマスカレードを制限する" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "設定された送信元サブネットへのマスカレードを制限する" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "アドレスファミリの制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "IP アドレスの書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "対象のトラフィックを指定されたアクセス元 IP アドレスに書き換えます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"対象のトラフィックを指定されたアクセス元ポートまたはポート範囲に書き換えま" +"す。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "ポートの書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "ルーティング/NAT オフロード" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - 特定のアクセス元 IP またはポートへの書き換え" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "土曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "マークの設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"確立された接続にマーク値を設定します。フォーマットは value[/mask] です。もし" +"マスクが指定されている場合、マスクによって有効なビットのみ設定されます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "ソフトウェア フローオフロード" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "送信元IPアドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "送信元MACアドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "送信元アドレス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "送信元ポート" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "送信元ゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"このトラフィック ルールを関連付ける、特定の受信側または送信側ネットワークデバ" +"イスを指定します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"反映されるトラフィックに対し、外部または内部 IP アドレスのどちらを使用するか" +"を指定します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "開始日 (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "開始時刻 (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "停止日 (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "停止時刻 (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "日曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"既存のファイアウォール設定は、 LuCI が正常に機能するように変更する必要があり" +"ます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"ファイアウォール機能は、各ネットワークインターフェース上にゾーンを作成してト" +"ラフィックの制御を行います。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"下記の設定は、このゾーン (%s)とその他のゾーン間の転送ポリシーを制御します。" +"宛先ゾーンへの転送 は、%q から転送されたトラフィッ" +"クに対して転送を許可します。 送信元ゾーンからの転送 は、別のゾーンか" +"ら%qへ の転送を許可します。トラフィック転送設定は、一方" +"向であり、例えばlanからwanへの転送設定は、wanからlanへの転送を許可し" +"ません。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"このセクションでは、%sの標準的な動作を設定します。受信及び送信オプションは、このゾーンに対して入出力するトラフィックに対する標準のポリ" +"シーを設定し、転送オプションは、ゾーン間の転送トラフィックに対する標" +"準のポリシーになります。対象ネットワークは、どのネットワーク設定がこ" +"のゾーンに属するかを設定します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "木曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "時間制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "UTC時刻を使用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "このルールでは時間制限が有効です" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"送信先: %{dest}%{dest_device?, インターフェース %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, ポート " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"送信先: %{dest}%{dest_device?, 経由インターフェース %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, ポート " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"送信先: %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, ポート %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "追跡ヘルパー" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "トラフィック・ルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"トラフィック・ルールの設定では、ゾーン間を行き来するパケットのポリシーを設定" +"します。例えば、特定のホスト間や、ルーターのWANポートへのトラフィックの拒否を" +"設定することができます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "火曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "内容を保存できません: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "不明またはインストールされていない conntrack ヘルパー \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "名称未設定の NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "名称未設定の転送" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "名称未設定のルール" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "名称未設定のゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "認識されていないプロトコル" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"\"続行\" を押下すると、 \"SNAT\" ターゲットを持つ \"redirect\" セクションは " +"\"nat\" セクションに変換されたうえで、ファイアウォールは更新された設定を適用" +"するために再起動されます。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "外部 IP アドレスを使用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "内部 IP アドレスを使用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"生の、または非 uci 管理下にあるデバイスによるゾーン トラフィックの区" +"分にこのオプションを使用します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"ネットワークまたはデバイスに代わり、アクセス元またはアクセス先サブネットによ" +"るゾーン トラフィックの区分にこのオプションを使用します。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "有効なファイアウォール マークが必要です" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "水曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "曜日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "ファイアウォール マークの XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "マークの XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "ゾーン ⇒ 転送" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "ゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "許可" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "すべて" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "すべてのゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "ファイアウォール マークの適用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "conntrack ヘルパーの割り当て" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "書き換えない" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "コネクション追跡を行わない" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "破棄" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "時間" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "分" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "拒否" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "秒" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "このデバイス" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "この新しいゾーン" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "無制限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "未設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "有効なファイアウォール マーク" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "ルーティング/NAT のための、ソフトウェアベースのオフロードです。" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "IPv4 の転送%{proto?, プロトコル %{proto#%{next?, }%{item.name}}}%{mark?, マーク %{mark." +#~ "val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "IPv4 の受信%{proto?, プロトコル %{proto#%{next?, }%{item.types?%{item.name}含" +#~ "まれる ICMP タイプ - %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, マーク %{mark.val}}%{helper?, ヘルパー %{helper.inv?" +#~ "%{helper.val}:%{helper.val}" +#~ "}}" diff --git a/luci-app-firewall/po/ka/firewall.po b/luci-app-firewall/po/ka/firewall.po new file mode 100644 index 000000000..5da118413 --- /dev/null +++ b/luci-app-firewall/po/ka/firewall.po @@ -0,0 +1,1460 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-06-29 16:09+0000\n" +"Last-Translator: Temuri Doghonadze \n" +"Language-Team: Georgian \n" +"Language: ka\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- დაემატოს IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- დაემატოს MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"მიღება %{src?%{dest?გადაგზავნილი:" +"შემავალი}:გამომავალი}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "წყაროს ჩანაცვლების არიდება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"გადამისამართება %{dest}%{dest_ip? IP-" +"მისამართზე %{dest_ip}}%{dest_port? პორტი %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"აცილება %{src?%{dest?გადაგზავნილი:შემავალი}:" +"გამომავალი}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"საწყისი IP-მისამართის თავისთავად " +"ჩანაცვლება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"მისამართების ჯგუფი, საწყისი მისამართი, საბოლოო მისამართი, ჩანაცვლების IP-" +"მისამართი შესაფერისი უნდა იყოს" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "გაფართოებული პარამეტრები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "გადამისამართების ნებართვა საწყისი არედან:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "გადაგზავნის ნებართვა საბოლოო არეებში:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "ნებისმიერი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "ნებისმიერი დღე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "შენიშვნა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Conntrack-პარამეტრები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack-დამხმარე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "შემცველობა შენახულია." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "გაგრძელება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "მთვლელები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "მითითებული წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "საბოლოო მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "საბოლოო პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "საბოლოო არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "მოწყობილობის სახელი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "გაუმართავი კრებულების აცილება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "ამოქმედდეს NAT-უკუკავშირი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "SYN-flood-დაცვის ჩართვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "აღრიცხვის ჩართვა ამ არესთვის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"ამოქმედდეს ქსელისა და პორტის გარდაქმნა IPv4 (NAT4 ან NAPT4) გამავალი " +"ნაკადისთვის ამ არეში. ჩვეულებრივ მოქმედია ხოლმე wan არეში." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"ამოქმედდეს ქსელისა და პორტის გარდაქმნა IPv6 (NAT6 ან NAPT6) გამავალი " +"ნაკადისთვის ამ არეში." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "მოქმედია" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "გარე IP-მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "გარე პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "დამატებითი არგუმენტები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "დამატებით არგუმენტები საბოლოო წერტილისთვის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "დამატებითი არგუმენტები საწყისი წერტილისთვის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "ჯგუფი" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "ქსელის ფარი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "ქსელის ფარი - მითითებული წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "ქსელის ფარი - IP-ნაკრები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "ქსელის ფარი - NAT-წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "ქსელის ფარი - პორტის გადამისამართება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "ქსელის ფარი - მიმოცვლის წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "ქსელის ფარი - არეების გამართვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "ქსელის ფარის გამართვის გადატანა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "გადაგზავნა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "პარასკევი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "ზოგადი პარამეტრები" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "ქსელის ფარის გამართვასთან წვდომის ნებართვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "ნაკადის აპარატურული განტვირთვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP-ები/ქსელები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP-ები/ქსელები/MAC-ები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 და IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "IPv4 მხოლოდ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 შენიღბვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "IPv6 მხოლოდ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "შემავალი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "შიდა IP-მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "შიდა პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "შიდა არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "უკუკავშირის წყაროს IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "მაქს. ჩანაწერები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "უმაღლესი სიგრძე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "ორშაბათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "თვის დღეები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT-წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT-წესების მეშვეობით უკეთ შეიძლება იმართოს საწყისი IP გამავალი ან " +"გადამისამართებული ნაკადისთვის." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "სახელი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "სრულად თავსებადი არ იქნება QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "გამომავალი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "პორტის გადამისამართება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"პორტის გადამისამართებით მოშორებულ კომპიუტერებს ინტერნეტით შეეძლება " +"ადგილობრივი ქსელის რომელიმე კომპიუტერთან ან მომსახურებასთან წვდომა." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "ოქმი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "ესაჭიროება აპარატურული NAT-მხარდაჭერა." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "შენიღბვის აკრძალვა მოცემული საბოლოო ქვექსელებისკენ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "მისამართის ჯგუფის შეზღუდვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "დამისამართება/NAT-განტვირთვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - ჩანაცვლება ზოგიერთი საწყისი IP-ისა თუ პორტისა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "შაბათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "ნაკადის პროგრამული განტვირთვა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "საწყისი IP-მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "საწყისი MAC-მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "საწყისი მისამართი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "საწყისი პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "საწყისი არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "დაწყების თარიღი (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "დაწყების დრო (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "შეწყვეტის თარიღი (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "შეწყვეტის დრო (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "შენახვის ხერხი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "კვირა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"ქსელის ფარის არსებული გამართვა უნდა შეიცვალოს, რომ LuCI სათანადოდ მუშაობდეს." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"ქსელის ფარი ქმნის არეებს ქსელის მაკავშირებლებს შორის მიმოცვლილი მონაცემების " +"სამართავად." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "ოთხშაბათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "დროის შეზღუდვები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "დროის შეზღუდვები ამოქმედებულია ამ წესისთვის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "მოლოდინის ვადა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "მიმოცვლის წესები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"მიმოცვლის წესებით განისაზღვრება დებულებები კრებულთა მიმოცვლისთვის არეებს " +"შორის, მაგალითად, ცალკეული წყაროდან მომავალი მონაცემების ასაკრძალად ან გარე " +"პორტების გასახსნელად როუტერზე." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "სამშაბათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "ვერ შეინახა შიგთავსი: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "უსახელო NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "უსახელო გადამისამართება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "უსახელო წესი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "უსახელო ნაკრები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "უსახელო არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "დაუდგენელი ოქმი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "გარე IP-მისამართის გამოყენება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "შიდა IP-მისამართის გამოყენება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"ამ პარამეტრის გამოყენება არეებში მიმოცვლის დასახარისხებლად საწყისი ან " +"საბოლოო ქვექსელით, ნაცვლად ქსელებით ან მოწყობილობებით." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "ქსელის ფარის მართებული ნიშანია საჭირო" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "ოთხშაბათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "კვირის დღეები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "ქსელის ფარის XOR-ნიშანი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR-ნიშანი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "თქვენს მოწყობილობაზე არაა გაშვებული firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "თქვენს მოწყობილობაზე გაშვებულია firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "არე ⇒ გადამისამართება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "არეები" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "მიღება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "ნებისმიერი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "ნებისმიერი არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "ნებისმიერი/ყველა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "დღე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: საბოლოო IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: საბოლოო MAC-მის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: საბოლოო (ქვე)ქსელი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: საბოლოო პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "ჩანაცვლების გარეშე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "მიდევნების გარეშე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "აცილება" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "ჰეში" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "საათი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP-მის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "სია" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC-მის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "წუთი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "უარყოფა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "წამი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: საწყისი IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: საწყისი MAC-მის" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: საწყისი (ქვე)ქსელი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: საწყისი პორტი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "ეს მოწყობილობა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "ახალი არე" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "შეუზღუდავი" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "არ მითითებულა" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "65536 ჩანაწერამდე." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "პროგრამული სახით განიტვირთება დამისამართება/NAT" diff --git a/luci-app-firewall/po/ko/firewall.po b/luci-app-firewall/po/ko/firewall.po new file mode 100644 index 000000000..46f4dc0d7 --- /dev/null +++ b/luci-app-firewall/po/ko/firewall.po @@ -0,0 +1,1452 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2022-11-22 08:46+0000\n" +"Last-Translator: Taewook Yang (ワリ) \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.15-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- IP 추가 --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- MAC 주소 추가 --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "액션" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "고급 설정" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Source zone 로부터의 forward 허용:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Destination zone 으로 forward 허용:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "사용자 규칙" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"사용자 규칙을 사용하면 방화벽 프레임워크로 해결이 되지 않는 임의의 iptables " +"명령을 실행할 수 있습니다. 입력된 명령어들은 매 방화벽 재시작시 default " +"ruleset을 불러온 직후 실행됩니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "목적지 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "활성화" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "NAT 루프백 활성화" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "SYN-flood protection 활성화" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "해당 Zone 의 로그 활성화" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "외부 IP 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "외부 포트" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "추가 변수" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "방화벽" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "방화벽 - 사용자 규칙" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "방화벽 - NAT 규칙" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "방화벽 - 포트 포워드" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "방화벽 - 트래픽 규칙" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "방화벽 - Zone 설정" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "방화벽 구성 마이그레이션" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "포워드" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "금요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "기본 설정" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4와 IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "IPv4 전용" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "IPv6 전용" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "인바운드 장치" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "입력" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "내부 IP 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "내부 포트" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "내부 Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "잘못된 DSCP 마크" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "잘못된 limit 값" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "로그 메시지 제한" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "루프백 소스 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "월요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "이름" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "iptables 명령에 추가 변수들을 전달합니다. 주의하여 사용하세요!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Port Forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Port forwarding 기능은 인터넷 상의 원격 컴퓨터가 내부 LAN 에 속한 특정 컴퓨터" +"나 서비스에 접속할 수 있도록 합니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "프로토콜" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "주어진 destination subnet 으로 Masquerading 제한" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "주어진 source subnet 으로 Masquerading 제한" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Address family 제한" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "토요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Source IP 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Source MAC 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Source 주소" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "시작 날짜 (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "종료 날짜 (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "일요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"방화벽 기능을 이용하여 네트워크 인터페이스와 연결된 zone 을 생성할 수 있고 이" +"를 이용하여 네트워크 traffic flow 를 제어할 수 있습니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"이 zone (%s) 과 다른 zone 들 사이의 forwarding 정책을 제어하는 옵션들입니다. " +"Destination zones%q 에서 출발한 forward " +"traffic 을 뜻하고, Source zones 은 다른 zone 들에서 %q 로 전" +"달되는 forward traffic 을 뜻합니다. Forwarding rule 은 " +"unidirectional 인데, 예를 들어 LAN 에서 WAN 으로의 forward 규칙이 " +"WAN 에서 LAN 으로의 forward 를 허락하는 것이 아닙니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"이 섹션은 %q 의 공통 속성을 설정할 수 있습니다. input 과 " +"output 옵션은 이 Zone 으로 전달되어 들오거나 나가는 트래픽에 대한 기" +"본 정책을 뜻합니다. forward 옵션은 Zone 내에서 다른 네트워크들 사이" +"를 오가는 포워드 트래픽에 대한 정책을 뜻합니다. Covered networks 에" +"서는 Zone 의 영향을 받을 네트워크들을 지정할 수 있습니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "목요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "UTC 기준시" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Traffic Rule" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Traffic rule 은 서로 다른 zone 사이를 오가는 패킷들에 대한 정책을 정의합니" +"다. 예를 들어 특정 host 들 사이의 트래픽을 차단하거나 공유기의 WAN port 를 " +"open 할때 사용됩니다." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "화요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "수요일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "주일" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zone 내역" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "무제한" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "명시되지 않음" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/lt/firewall.po b/luci-app-firewall/po/lt/firewall.po new file mode 100644 index 000000000..aa01f0d77 --- /dev/null +++ b/luci-app-firewall/po/lt/firewall.po @@ -0,0 +1,1625 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2024-10-20 19:09+0000\n" +"Last-Translator: Džiugas Januševičius \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (" +"n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.8-rc\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Persiųsta:Gaunama}:Išsiunčiama} %{ipv6?%{ipv4?IPv4 " +"and IPv6:IPv6}:IPv4}%{proto?, protokolas " +"%{proto#%{next?, }%{item.types?%{item." +"name}„ICMP“ su tipais %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- Pridėti IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- Pridėti „MAC“ --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Priimti %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Neleisti išteklio perrašymo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Persiųsti į %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? prievadas %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Mesti/Šalinti %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Priskirti „DSCP“ classification " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Priskirti „conntrack“ helper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} užkardos žymė " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Automatiškai perrašyti IP šaltinį" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Nesekti %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Atmesti %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statistiškai perrašyti į šaltinį %{snat_ip?" +"IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Turi būti nurodytas perrašymo IP!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "PRIIMTI – išjungti adreso perrašymą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Veiksmas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Papildomi neapdoroti „iptables“ argumentai, skirti klasifikuoti " +"zonos paskirties srautą, pvz. „-p tcp --dport 443“, kad " +"atitiktų tik išsiunčiamą „HTTPS“ srautą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Papildomi neapdoroti „iptables“ argumentai zonos šaltinio srautui " +"klasifikuoti, pvz. „-p tcp --sport 443“, kad atitiktų tik " +"atvykstantį „HTTPS“ srautą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adresų „šeima“, vidinis IP adresas turi atitikti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adresų „šeima“, šaltinio adresas, paskirties adresas, perrašymo IP adresas " +"turi atitikti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Pažangūs nustatymai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Leisti „techniškai neveikiančiai“ veiklai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Leisti perleidimą iš išteklio zonų:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Leisti perleidimą į paskirties zonas:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Bet koks" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Bet kokią dieną" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Taikyti duotosios vertės ir esamos žymos reikšmės bitinį „XOR“ sukurtiems " +"ryšiams. Formatas yra „value[/mask]“. Jei nurodyta tinklavimo „kaukė“ – " +"adresų segregatorius, tada tinklavimo „kaukėje“ – adresų segregatoriuje " +"nustatyti bitai yra – nuliniai." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Taikyti nurodyta „DSCP“ klasę arba reikšmę užmegztiems ryšiams." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "Priskirti nurodytą ryšio sekimo pagelbiklį atitinkančiam srautui." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automatinis pagelbiklio paskyrimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Automatiškai priskirti „conntrack“ pagelbiklius pagal srauto protokolą ir " +"prievadą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Komentuoti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "„Conntrack“ nustatymai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "„Conntrack“ pagelbikliai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Turinys buvo išsaugotas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Tęsti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Rodikliai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Įtraukti/Apgaubti įrenginiai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Įtraukti/Apgaubti tinklai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Įtraukti/Apgaubti potinkliai" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Pasirinktinės taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Pasirinktinės taisyklės leidžia vykdyti savavališkas „iptables“ komandas, " +"kurių užkardo pagrindų sistema kitaip neapima. Komandos vykdomos po " +"kiekvieno užkardo paleidimo iš naujo, iškart po to, kai įkeliamas " +"numatytasis taisyklių rinkinys." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "„DSCP“ klasifikacija" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "„DSCP“ žymė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "„DSCP“ žymė reikalinga" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Paskirties/Kelionės tikslo adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Paskirties/Kelionės tikslo prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Paskirties/Kelionės tikslo zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Įrenginio vardas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Neįdiegkite papildomų taisyklių, kad atmestumėte persiųstą srautą, kai " +"„conntrack“ būsena „netinkama“. To gali prireikti nustatant " +"sudėtingus asimetrinius maršrutus." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Mesti/Šalinti netinkamus paketus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Įjungti/Įgalinti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Įjungti/Įgalinti „NAT Loopback“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Įjungti/Įgalinti „SYN-flood“ apsauga" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Įjungti/Įgalinti žurnalinima šitoje zonoje" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Įjungti tinklo adresus ir prievado vertimą IPv4 („NAT4“ arba „NAPT4“) " +"išsiunčiamam srautui šitoje zonoje. Tai tipiškai įjungiama/įgalinima " +"„wan“ zonoje." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Įjungti tinklo adresus ir prievado vertimą IPv6 („NAT6“ arba „NAPT6“) " +"išsiunčiamam srautui šitoje zonoje." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Įjungta/Įgalinta (-s/-i)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Įgalina rinkinio paketų ir baitų skaičiaus sekimą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Tikimasi: „%s“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "Aiškiai pasirenka leistinus ryšio sekimo pagelbiklius zonos srautui" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Išorinis IP adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Išorinis prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Papildomi argumentai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Papildomi paskirties/kelionės tikslo argumentai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Papildomi „iptables“ argumentai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Papildomi išteklio argumentai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Šeima" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Užkarda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Užkarda - Atskiros/Pasirinktinės taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Užkarda – IP rinkiniai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Užkarda - „NAT“ taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Užkarda – Prievadų persiuntimas/-ai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Užkarda - Srauto taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Užkarda - Zonų nustatymai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Užkardos konfigūracijos migracija" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Persiųsti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Persiųsta %{ipv6?%{ipv4?IPv4 ir IPv6:IPv6}:" +"IPv4}%{proto?, protokolas %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +"val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Penktadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Iš %{src}%{src_device?, sąsajos ir/ar sietuvo %{src_device}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, prievadas %{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Iš %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, prievadas " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, „MAC“ " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Iš %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Bendri nustatymai" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" +"Duoti prieigą prie užkardos konfigūravimo „pkg – firewall configuration“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Aparatinės įrangos srauto iškrovimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (diapazonas)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP rinkiniai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP(dgs.)/Tinklai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP(dgs.)/Tinklai/„MACs“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4 – Interneto protokolo versija 4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 ir IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Tik IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6 – Interneto protokolo versija 6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 privataus IP į viešojo IP konvertavimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Tik IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Atvykstantis įrenginys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Įtraukti failą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Gaunamas %{ipv6?%{ipv4?IPv4 ir IPv6:IPv6}:" +"IPv4}%{proto?, protokolas %{proto#%{next?, }%{item.types?%{item.name}„ICMP“ su tipais %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Pradinis maišos dydis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Įvestis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Vidinis IP adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Vidinis prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Vidinė zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Tarpzoninis persiuntimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Netinkamą „DSCP“ žymę" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Netinkama ribinė reikšmė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Neteisingas rinkinio pavadinimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Apriboti pliūpsnius" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Riboti žurnalo pranešimus" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Apriboti atitikimą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Apriboti atitikimą į „%{limit.num}“ paketus/-ai per „%{limit." +"unit}%{limit.burst? burst %{limit.burst}}“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Įjungtas ribotas privataus IP į viešojo IP konvertavimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Apriboja srauto atitikimą iki nurodytos spartos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP ciklo grįžimo šaltinis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"„MASQUERADE“ – Automatiškai perrašyti į išsiunčiamos sąsajos IP (privatus IP " +"į viešąjį IP)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "„MSS“ prispaudimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Privataus IP į viešojo IP konvertavimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Atitikti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Atitikti „DSCP“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Atitikti „ICMP“ tipą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Atitikti įrenginį" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Atitikti peradresuotą srautą, nukreiptą nurodytu IP adresu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Atitikti persiųstą srautą, nukreiptą į nurodytą paskirties prievadą arba " +"prievado diapazoną." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Atitikti persiųstą srautą iš šio IP arba diapazono." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Atitikti persiųstą srautą, kilusį iš nurodyto šaltinio prievado arba " +"prievadų diapazono." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Atitikti pagelbiklį" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Atitikti įeinantį srautą, nukreiptą į nurodytą paskirties prievadą arba " +"prievadų diapazoną ant šito skleidėjo/vedėjo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Atitiktį žymę" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Atitikti srautą naudodami nurodytą ryšio sekimo pagelbiklį." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "Atitinka savitą užkardos žymę arba daugybę skirtingų žymių." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Atitinka persiųstą srautą naudojant nurodytą išsiunčiamo tinklo įrenginį." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Atitinka srautą su nurodytu „DSCP“ žymėjimu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Maksimalus įrašų skaičius" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Maksimalus ilgis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Maksimalus pradinis paketų skaičius: šis skaičius įkraunamas vienu kaskart, " +"kai nepasiekiama aukščiau nurodyta riba, iki šio skaičiaus." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Pirmadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Mėnesis/Mėnuo, dienos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "„NAT“ taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"„NAT“ taisyklės leidžia tiksliai valdyti šaltinio IP, kurią galima naudoti " +"išsiunčiamam arba persiunčiamam srautui." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Vardas/Pavadinimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Tinklavimo „net-kaukė“ – 32-bitų adresas, IP užmaskãvimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Nepilnai suderinamas su „QoS“/„SQM“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Atitikti tik įeinantį srautą, nukreiptą nurodytu IP adresu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Atitikti tik įeinantį srautą iš šių „MAC“ adresų." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Atitikti tik įeinantį srautą iš šio IP arba diapazono." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Atitikti tik gaunamą srautą, kilusį iš nurodyto šaltinio prievado arba " +"prievadų diapazono kliento skleidėjo/vedėjo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Išsiunčiamasis įrenginys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Išsiunčiamoji zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Išvestis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Paketo lauko atitikimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Paketų laukai, kuriuos reikia suderinti. „
Syntax: " +"direction_datatype“. Pvz.: „src_port, dest_net.
Directions: src, dst“. Duomenų tipai: „ip, port, mac, " +"net, set.
“ Krypties priešdėliai yra pasirenkami.„
“ " +"*Pastaba: duomenų tipas „set“ yra nepalaikomas per „fw4“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Perduoda papildomus argumentus į „iptables“. Naudokite atsargiai!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Perduodant neapdorotus „iptables“ argumentus į šaltinio ir paskirties srauto " +"klasifikavimo taisyklės leidžia suderinti paketus pagal kitus kriterijus nei " +"sąsajos ar potinklius. Šias parinktis reikia naudoti labai atsargiai, nes " +"dėl netinkamų reikšmių, užkardos taisyklių rinkinys gali būti sugadintas; " +"visiškai atskleisti visas tarnybas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" +"Kelias į „CIDR“ (dgs.) failą , potinklius, skleidėjų/vedėjų IP (dgs.) ir kt." +"
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Prievadų persiuntimai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Prievadų persiuntimas leidžia išoriniams kompiuteriams internete prisijungti " +"prie Jūsų savito kompiuterio ar paslaugų veikiančių Jūsų privačiame " +"vietiniame („LAN“) tinkle." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Prievadų diapazono pasiekiamumas/numatomas apribojimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokolas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Peradresuoti suderintą gaunamą srautą į nurodytą vidinio skleidėjo/vedėjo " +"prievadą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" +"Peradresuoti atitinkantį gaunamą srautą į nurodytą vidinį skleidėją/vedėją" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Žr. Išorinis rinkinys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Atspindžio zonos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Reikalingas techninės įrangos „NAT“ palaikymas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" +"Apriboti privataus IP į viešojo IP konvertavimą nurodytais paskirties " +"potinkliais" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" +"Apriboti privataus IP į viešojo IP konvertavimą nurodytais šaltinio " +"potinkliais" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Apriboti į adreso „šeimą“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Perrašyti IP adresą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Perrašyti suderintą srautą į nurodytą šaltinio IP adresą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Perrašyti suderintą srautą į nurodytą šaltinio prievadą arba prievado " +"diapazoną." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Perrašyti prievadą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Kelvados/„NAT“ iškrovos perkėlimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "„SNAT“ – perrašyti į savito šaltinio IP arba prievadą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Šeštadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Nustatyti žymę" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Nustatyti nurodytą žymos reikšmę užmegztiems ryšiams. Formatas yra – " +"reikšmė[/mask] („value[/mask]“). Jei nurodyta tinklavimo „kaukė“ – adresų " +"segregatorius, keičiami tik tie tinklavimo „kaukėje“ – adresų segregatoriuje " +"nustatyti bitai." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Taikomosios įrangos srauto iškrovos perkėlimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "IP adreso šaltinis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Šaltinio „MAC“ adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Šaltinio adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Šaltinio prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Šaltinio zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Nurodoma, ar susieti šią srauto taisyklę su savitu atvykstančiu ar " +"išsiunčiamu tinklo įrenginiu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "Nurodo, ar atspindėtam srautui naudoti išorinį ar vidinį IP adresą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Pradžios data (Metai-Mėnuo-Diena/pvz:1990-03-11)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Pradėti laiką (val:min:sek)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Pabaigos data (Metai-Mėnuo-Diena/pvz:1993-08-31)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Stabdyti laiką (val:min:sek)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Talpos metodas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Sekmadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Dabartinė užkardos konfigūracija turi būti pakeista, jeigu norite, kad " +"„LuCI“ veiktų teisingai." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "Užkarda sukuria zonas tinklo sąsajose, kad valdytų tinklo srautą." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Toliau pateiktos parinktys valdo persiuntimo politiką tarp šios zonos („%s“) " +"ir kitų zonų. Paskirties zonos apima persiųstą srautą iš " +"„%q“. Šaltinio zonos atitinka persiųstą srautą iš kitų " +"zonų, nukreipta į „%q“. Persiuntimo taisyklė yra " +"vienakryptė, pvz. persiuntimas iš „LAN“ į „WAN“ taip pat " +"nereiškia leidimo persiųsti iš „WAN“ į „LAN“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Šiame skyriuje apibrėžiamos bendrosios %q savybės. Įvesties ir " +"išvesties parinktys nustato numatytąsias srauto, patenkančio į šią " +"zoną ir išeinančio iš jos politiką, o „persiųsti“ parinktis aprašo " +"politikos persiuntimo srautą tarp skirtingų tinklų zonos viduje. " +"Padengti tinklai nurodo, kurie galimi tinklai yra šios zonos nariai." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Ketvirtadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Laiko ribojimai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Laikas pagal GMT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Laiko ribojimai yra įgalinti šiai taisyklei" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Pasibaigė užklausos laikas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Į %{dest}%{dest_device?, sąsają ir/ar sietuvą %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, prievadas %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Į %{dest}%{dest_device?, per sąsają ir/ar sietuvą %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, prievadas %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Į %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, prievadas %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Sekimo pagalbininkas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Srauto taisyklės" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Srauto taisyklės apibrėžia paketų, keliaujančių tarp skirtingų zonų, " +"politiką (pavyzdžiui, atmesti srautą tarp tam tikrų skleidėjų/vedėjų arba " +"atidaryti maršrutizatoriaus „WAN“ prievadus)." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Antradienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Nepavyko išsaugoti turinį: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Vienetas: sekundės. Numatytas 0, reiškią, kad įvestis yra " +"pridėtas visam laikui į rinkinį.
Maksimalus: 2147483 sekundės." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Nežinomas arba neįdiegtas „conntrack“ pagelbiklis „%s“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Nepavadintas „NAT“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Nepavadintas persiuntimas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Nepavadinta taisyklė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Nepavadintas rinkinys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Nepavadinta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Neatpažintas protokolas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Paspaudus „Tęsti“, „peradresuoti“ sekcijos su tiksline „SNAT“ bus " +"konvertuojamos į „nat“ skiltis, o užkarda bus paleista iš naujo, kad būtų " +"pritaikyta atnaujinta konfigūracija." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Naudoti išorinį IP adresą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Naudoti vidinį IP adresą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Naudoti „ipset“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Naudoti šią parinktį, jei norite klasifikuoti zonos srautą pagal " +"neapdorotus, ne„uci“ valdomus tinklo įrenginius." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Naudoti šią parinktį, norėdami klasifikuoti zonos srautą pagal šaltinį arba " +"paskirties potinklį, vietoj tinklus ar įrenginius." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Reikalinga galiojanti užkardos žymė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Trečiadienis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Savaitės dienos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "„XOR“ užkardos žymė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "„XOR“ žymė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Jūsų įrenginyje neveikia „firewall4“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Jūsų įrenginyje veikia „firewall4“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Perleidimai" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zonos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonos, iš kurių turi būti kuriamos atspindžio taisyklės. Jei nenustatyta, " +"bus naudojama tik paskirties zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "priimti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "bet koks" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "bet kokia zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "bet koks/visi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "patvirtinti užkardos žymę" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "Priskirti „conntract helper“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatinis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "„bitmap“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "„bitmap“ yra tik IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "diena" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "„dest_ip“: Paskirties IP adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Paskirties „MAC“ adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "„dest_net“: Paskirties „(sub)net“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "„dest_port“: Paskirties Prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "„dest_set“: Paskirties „ipset“*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "neperrašyti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "nesekti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "mesti/šalinti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"„Firewall4“ palaiko įvestiẽs arba išvestiẽs kreipinių ir IP rinkinių kūrimą, " +"kad būtų supaprastintas didelių adresų sąrašų suderinimas be poreikio " +"kuriant vieną taisyklę kiekvienam elementui, kad jis atitiktų. „IPsets“ " +"prievadų diapazonai nepalaikomi „firewall4“.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "iš•prievado-į•prievadą" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "maiša" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "valanda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "„ip“: IP adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "„ip[/cidr]
“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"„ip[/cidr]“
Naudoti su atitikties duomenų tipais: „*_ip“." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "sąrašas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "„mac“: „MAC“ adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "„macaddr|ip[/cidr]“
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minutė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "„net“: (po)tinklis/tinklas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "„port“: Prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "atmesti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "sekundė" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "rinkinys: „ipset*“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "„src_Set“: Šaltinio „ipset*“" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "„src_ip“: Šaltinio IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "„src_mac“: Šaltinio „MAC“ adresas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "„src_net“: Šaltinio (po)tinklis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "„src_port“: Šaltinio prievadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "šis įrenginys" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "ši nauja zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "neribotas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "nenustatyta/-s/-i" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "iki 65536 įrašų." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "tinkamą užkardos žymę" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "" +#~ "Taikomosios įrangos pagrįsta kelvada ir (arba) „NAT“ iškrovos perkėlimas" diff --git a/luci-app-firewall/po/mr/firewall.po b/luci-app-firewall/po/mr/firewall.po new file mode 100644 index 000000000..1780bca1b --- /dev/null +++ b/luci-app-firewall/po/mr/firewall.po @@ -0,0 +1,1434 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2020-02-07 09:18+0000\n" +"Last-Translator: Prachi Joshi \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 3.11-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "प्रगत सेटिंग्ज" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "गंतव्य पोर्ट" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "सक्षम करा" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "सामान्य सेटिंग्ज" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 आणि IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "केवळ IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "केवळ IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "चिन्ह जुळवा" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "नाव" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "प्रोटोकॉल" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "स्रोत पोर्ट" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "MAC" +#~ msgstr "MAC" diff --git a/luci-app-firewall/po/ms/firewall.po b/luci-app-firewall/po/ms/firewall.po new file mode 100644 index 000000000..97eaf50ee --- /dev/null +++ b/luci-app-firewall/po/ms/firewall.po @@ -0,0 +1,1429 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2024-01-22 09:21+0000\n" +"Last-Translator: Abdul Muizz Bin Abdul Jalil \n" +"Language-Team: Malay \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.4-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Tindakan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Tetapan Lanjutan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Ulasan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Alamat destinasi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Pemboleh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Dibolehkan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Tembok api" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "Tidak terhad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "Tidak ternyata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/nb_NO/firewall.po b/luci-app-firewall/po/nb_NO/firewall.po new file mode 100644 index 000000000..ba46a4859 --- /dev/null +++ b/luci-app-firewall/po/nb_NO/firewall.po @@ -0,0 +1,1456 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2024-01-03 18:37+0000\n" +"Last-Translator: Allan Nordhøy \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb_NO\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.4-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Handling" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Avanserte innstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Tillat videresending fra kilde soner:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Tillat videresending til destinasjon soner:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Enhver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Innholdet har blitt lagret." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Fortsett" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Gjeldene nettverk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Egendefinerte Regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Egendefinerte regler tillater deg å utføre vilkårlige iptables kommandoer " +"som ikke dekkes av brannmurens standardoppsett. Kommandoene utføres etter " +"hver omstart av brannmuren, rett etter at standard regelsett er lastet." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Destinasjon adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Målport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Målsone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Enhetsnavn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Forkast ugyldige pakker" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Skru på" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Aktiver NAT Tilbakekobling" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Aktiver SYN-flood beskyttelse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Aktiver logging av denne sonen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Påskrudd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Forventer: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Ekstern IP adressse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Ekstern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Ekstra argumenter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Brannmur" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Brannmur - Egendefinerte Regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Brannmur - Port Videresending" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Brannmur - Trafikk Regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Brannmur - Sone Innstillinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Frem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Generelle innstillinger" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 og IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Kun IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Kun IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Inndata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Intern IP adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Intern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Intern sone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Begrens logging" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS Kontroll (Clamping)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Match" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Match ICMP type" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Match innkommende trafikk rettet mot den oppgitte destinasjonsport eller " +"portområdet på denne verten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Navn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Nettmaske" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Match kun innkommende trafikk rettet mot den oppgitt IP adresse." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Match kun innkommende trafikk fra disse MAC adresser." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Match kun innkommende trafikk fra denne IP eller IP område." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Match kun innkommende trafikk som kommer fra den oppgitte kildeport eller " +"fra portområdet til klienten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Utdata" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Sender flere argumenter til iptables. Bruk med forsiktighet!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Port Videresendinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Port videresending tillater at eksterne datamaskiner på Internett kan koble " +"seg til en bestemt maskin eller tjeneste innenfor det private LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Viderekoble matchet innkommende trafikk til den oppgitte porten på intern " +"vert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Viderekoble matchet innkommende trafikk til den angitte interne vert" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Begrens Masquerading til oppgitt destinasjons subnett" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Begrens Masqeuerading til oppgitt kilde subnett" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Begrens til adresse familie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Kilde IP adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Kilde MAC adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Kilde adresse" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Kilde port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Kilde sone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Brannmuren skaper soner over nettverkets grensesnitt for å styre " +"nettverkstrafikken." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Med valgene under konfigurerer man videresending mellom denne sone (%s) og " +"andre soner. Destinasjons soner omhandler videresendt trafikk " +"med opprinnelse fra %q. Kilde soner matcher " +"videresendt trafikk fra andre soner rettet mot %q. Reglene " +"ved videresending er enveis, d.v.s at videresending fra LAN til WAN " +"ikke automatisk også tillater videresending fra WAN til LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +#, fuzzy +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Denne seksjonen definerer de vanligste valg for %q. Med Inndata og " +"Utdata fastsetter man vanlige regler for trafikk gjennom sonen, " +"mens videresend valget definerer regler for videresendt trafikk " +"mellom forskjellige nettverk i sonen. Gjeldene nettverk " +"spesifiserer hvilken av de tilgjengelige nettverk som er medlem av denne " +"sone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Tidsavbrudd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Trafikk Regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Trafikk regler definerer regler for sending av pakker mellom ulike soner, " +"for eksempel for å avvise trafikk mellom visse verter eller for å åpne WAN " +"porter på ruteren." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Sone = Videresendinger" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Soner" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "godta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "enhver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "enhver sone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "ikke track" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "forkast" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "avslå" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/nl/firewall.po b/luci-app-firewall/po/nl/firewall.po new file mode 100644 index 000000000..55f27f290 --- /dev/null +++ b/luci-app-firewall/po/nl/firewall.po @@ -0,0 +1,1629 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-04-18 14:03+0000\n" +"Last-Translator: Stephan \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.5-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Inkomend}:Uitgaand} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP met types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- IP toevoegen --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- MAC toevoegen --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Accepteer %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Voorkom overschrijven van bron" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Uitgang %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Toewijzen DSCP classificatie " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Geassocieerde tracking helper " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} Firewall markering " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Automatisch herschrijven bron IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Niet traceren %{src?%{dest?forward:" +"input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Afwijzen %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statisch herschrijven naar bron %{snat_ip?" +"IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Een herschrijf IP moet gespecificeerd worden!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPTEREN - Herschrijven van adres uitschakelen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Actie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Extra ruwe iptables argumenten om zonebestemmingsverkeer te " +"classificeren, bv. -p tcp --dport 443 om alleen overeen te " +"komen met uitgaand HTTPS-verkeer." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Extra ruwe iptables argumenten om zonebronverkeer te classificeren, " +"bv. -p tcp --sport 443 om alleen inkomend HTTPS-verkeer te " +"matchen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adres familie, het interne IP-adres moet overeenkomen met" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adres familie, bronadres, bestemmingsadres, herschreven IP-adres moeten " +"overeenkomen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Geavanceerde instellingen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Laat \"ongeldig\" verkeer toe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Doorsturen vanuit bronzones toestaan:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Doorsturen naar bestemmingszones toestaan:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Elke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Elke dag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Past een bitwise XOR toe van de gegeven waarde en de bestaande markeerwaarde " +"op gevestigde verbindingen. Formaat is waarde[/masker]. Als een masker is " +"opgegeven, worden de bits in het masker op nul gezet." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" +"Past de opgegeven DSCP-klasse of -waarde toe op tot stand gebrachte " +"verbindingen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Wijst de gespecificeerde helper voor het volgen van verbindingen toe aan " +"gematcht verkeer." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automatische helper opdracht" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Automatisch conntrack helpers toewijzen op basis van verkeersprotocol en " +"poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Opmerking" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Conntrack Instellingen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack helpers" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "De inhoud is opgeslagen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Doorgaan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Tellers" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Gedekte apparaten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Gedekte netwerken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Gedekte subnetten" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Aangepaste regels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Aangepaste regels laten u toe om willekeurige iptables-commando's uit te " +"voeren die anders niet onder het firewall raamwerk vallen. De commando's " +"worden uitgevoerd na elke herstart van de firewall, direct nadat de " +"standaardregelset is geladen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP classificatie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP markering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP markering vereist" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Bestemmingsadres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Bestemmingspoort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Bestemmingszone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Naam apparaat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Installeer geen extra regels om doorgestuurd verkeer met conntrackstatus " +"ongeldig te weigeren. Dit kan nodig zijn voor complexe " +"asymmetrische route-instellingen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Verwijder ongeldige pakketten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Inschakelen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "NAT Loopback inschakelen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "SYN-flood bescherming inschakelen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Logging op deze zone inschakelen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Netwerkadres- en poortvertaling IPv4 (NAT4 of NAPT4) inschakelen voor " +"uitgaand verkeer in deze zone. Dit is meestal ingeschakeld in de zone " +"wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Netwerkadres- en poortvertaling IPv6 (NAT6 of NAPT6) inschakelen voor " +"uitgaand verkeer op deze zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Ingeschakeld" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Schakelt het telling bijhouden van pakketten en bytes voor de set in." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Verwacht: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "Kiest expliciet toegestane connectie tracking helpers voor zoneverkeer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Extern IP-adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Externe poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Extra argumenten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Extra bestemmingsargumenten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Extra iptables argumenten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Extra bron argumenten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Familie" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Aangepaste regels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - IP sets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - NAT-regels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Poort doorsturen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Verkeersregels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Zone-instellingen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migratie van firewallconfiguratie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Forwarded %{ipv6?%{ipv4?IPv4 en IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Vrijdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Van %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, poort " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Van %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, poort " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Van %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, poort %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Algemene instellingen" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Toegang verlenen tot firewallconfiguratie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Hardware stroom ontlasten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (bereik)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP-sets" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP's/netwerken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP's/Netwerken/MAC's" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 en IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Alleen IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6-maskering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Alleen IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Inkomend apparaat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Inclusief bestand" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Inkomend %{ipv6?%{ipv4?IPv4 en IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"met types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Initiële hashgrootte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Invoer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Intern IP-adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Interne poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Interne zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Ongeldige DSCP-markering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Ongeldige grenswaarde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Beperk burst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Logboekberichten beperken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Beperk het matchen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Beperk matching tot %{limit.num} pakketten per %{limit.unit}" +"%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Beperkte maskering ingeschakeld" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Beperkt verkeer dat overeenkomt met de opgegeven snelheid." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Loopback-bron-IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Automatisch herschrijven naar uitgaande interface IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS klemmen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Gemaskerd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Overeenkomst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "DSCP overeenkomst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "ICMP-type overeenkomst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Apparaat overeenkomst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Match doorgestuurd verkeer gericht op het opgegeven IP-adres." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Match doorgestuurd verkeer dat is gericht op de opgegeven bestemmingspoort " +"of poortbereik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Match doorgestuurd verkeer van dit IP-adres of bereik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Match doorgestuurd verkeer afkomstig van de opgegeven bronpoort of " +"poortbereik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Match helper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Binnenkomend verkeer afstemmen dat is gericht op de opgegeven " +"bestemmingspoort of het opgegeven poortbereik op deze host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Markering overeenkomst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Match verkeer met behulp van de opgegeven helper voor het bijhouden van " +"verbindingen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Komt overeen met een specifieke firewallmarkering of een reeks verschillende " +"markeringen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Komt overeen met doorgestuurd verkeer met behulp van het opgegeven uitgaande " +"netwerkapparaat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Komt overeen met verkeer met de opgegeven DSCP-markering." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Max inzendingen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Max lengte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Maximum aanvankelijk aantal te matchen pakketten: dit aantal wordt elke keer " +"dat de hierboven gespecificeerde limiet niet wordt bereikt met één " +"aangevuld, tot dit aantal." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Maandag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Maand Dagen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT-regels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT-regels bieden een gedetailleerde controle over het bron-IP-adres dat " +"moet worden gebruikt voor uitgaand of doorgestuurd verkeer." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Naam" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmasker" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Niet volledig compatibel met QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Pas alleen binnenkomend verkeer toe dat naar het opgegeven IP-adres wordt " +"geleid." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Alleen binnenkomend verkeer van deze MAC's matchen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Match alleen binnenkomend verkeer van dit IP of bereik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Pas alleen binnenkomend verkeer toe dat afkomstig is van de opgegeven " +"bronpoort of poortbereik op de clienthost" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Uitgaand apparaat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Uitgaande zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Uitgang" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Pakket veld matchen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Pakketvelden waarop moet worden afgestemd.
Syntax: " +"direction_datatype. bijv.: src_port, dest_net.
Richtingen: src, dst. Datatypes: ip, poort, mac, net, " +"set.
Richtingvoorvoegsels zijn optioneel.
*Noot: datatype " +"set wordt niet ondersteund in fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Geeft aanvullende argumenten door aan iptables. Zorgvuldig gebruiken!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Door onbewerkte iptables-argumenten door te geven aan classificatieregels " +"voor bron- en bestemmingsverkeer, kunnen pakketten worden vergeleken op " +"basis van andere criteria dan interfaces of subnetten. Deze opties moeten " +"uiterst voorzichtig worden gebruikt, omdat ongeldige waarden de regelset van " +"de firewall kunnen overtreden, waardoor alle services volledig worden " +"blootgesteld." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Pad naar bestand van CIDR's, subnetten, host-IP's, enz.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Poort forwards" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Met poort forwarding kunnen externe computers op internet verbinding maken " +"met een specifieke computer of service binnen het privé-LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Poort bereik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protocol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Leid overeenkomend binnenkomend verkeer om naar de opgegeven poort op de " +"interne host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" +"Leid overeenkomend binnenkomend verkeer om naar de opgegeven interne host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Raadpleeg Externe set" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Vereist hardware NAT-ondersteuning." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Beperk Masquerading tot bepaalde bestemmingssubnetten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Beperk Masquerading tot bepaalde bronsubnetten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Beperken tot adres familie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Herschrijf het IP-adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Herschrijf overeenkomend verkeer naar het opgegeven bron-IP-adres." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Herschrijf overeenkomend verkeer naar de opgegeven bronpoort of poortbereik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Herschrijf poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Routering/NAT-offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - herschrijven naar specifieke bron-IP of poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Zaterdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Markering instellen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Stel de gegeven markeringswaarde in op bestaande verbindingen. Formaat is " +"waarde[/mask]. Als een masker is opgegeven, worden alleen de bits die in het " +"masker zijn ingesteld, gewijzigd." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Software flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Bron IP adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Bron MAC-adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Bron adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Bronpoort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Bronzone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Geeft aan of deze verkeersregel moet worden gekoppeld aan een specifiek " +"inkomend of uitgaand netwerkapparaat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Specificeert of het externe of het interne IP-adres moet worden gebruikt " +"voor gereflecteerd verkeer." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Startdatum (jjjj-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Starttijd (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Stopdatum (jjjj-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Stoptijd (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Opslagmethode" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Zondag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"De bestaande firewallconfiguratie moet worden gewijzigd om LuCI goed te " +"laten functioneren." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"De firewall creëert zones over uw netwerkinterfaces om de " +"netwerkverkeersstroom te regelen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"De onderstaande opties regelen het doorstuurbeleid tussen deze zone (%s) en " +"andere zones. Bestemmingszones dekken doorgestuurd verkeer " +"afkomstig van %q. Bronzones komen overeen met " +"doorgestuurd verkeer van andere zones gericht op %q. De " +"doorstuurregel is unidirectioneel, b.v. een forward van lan naar " +"wan impliceert niet een toestemming om ook van wan naar lan door te " +"sturen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Deze sectie definieert gemeenschappelijke eigenschappen van %q. De opties " +"invoer en uitvoer stellen het standaardbeleid in voor " +"verkeer dat deze zone binnenkomt en verlaat, terwijl de optie forward het beleid beschrijft voor doorgestuurd verkeer tussen verschillende " +"netwerken binnen de zone . Overdekte netwerken specificeert welke " +"beschikbare netwerken lid zijn van deze zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Donderdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Tijdsbeperkingen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Tijd in UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Tijdsbeperkingen zijn ingeschakeld voor deze regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Time-out" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Naar %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, poort " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Naar %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, poort %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Naar %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, poort %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Tracking helper" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Verkeersregels" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Verkeersregels definiëren beleid voor pakketten die tussen verschillende " +"zones reizen, bijvoorbeeld om verkeer tussen bepaalde hosts te weigeren of " +"om WAN-poorten op de router te openen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Dinsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Kan inhoud niet opslaan: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Eenheid: seconden. Standaard 0 betekent dat het item permanent " +"aan de set wordt toegevoegd.
Max: 2147483 seconden." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Onbekende of niet geïnstalleerde conntrack helper \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Naamloze NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Naamloze forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Naamloze regel" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Naamloze set" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Naamloze zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Niet herkend protocol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Als u op \"Doorgaan\" klikt, worden \"omleidings\"-secties met als doel " +"\"SNAT\" geconverteerd naar \"nat\"-secties en wordt de firewall opnieuw " +"gestart om de bijgewerkte configuratie toe te passen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Extern IP-adres gebruiken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Intern IP-adres gebruiken" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Gebruik ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Gebruik deze optie om zoneverkeer te classificeren op basis van onbewerkte, " +"niet door uci beheerde netwerkapparaten." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Gebruik deze optie om zoneverkeer te classificeren op bron- of " +"bestemmingssubnet in plaats van op netwerken of apparaten." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Geldige firewallmarkering vereist" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Woensdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Weekdagen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR firewall markering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR-markering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Uw apparaat heeft geen firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Uw apparaat gebruikt een firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zone ⇒ Forwardings" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zones" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "accepteer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "elke" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "elke zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "elke/alle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "firewallmarkering toepassen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "conntrack helper toewijzen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatisch" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap is alleen ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "dag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Bestemmings IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Bestemming MAC addr" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Bestemming (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Bestemmingspoort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Bestemming ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "niet herschrijven" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "niet volgen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "laat vallen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 ondersteunt verwijzingen en het maken van IP-sets om het matchen " +"van grote adreslijsten te vereenvoudigen zonder de noodzaak om één regel per " +"item te maken om te matchen. Poortbereiken in ipsets worden niet ondersteund " +"door firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "vanpoort-naarpoort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "uur" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
Voor gebruik met Match datatypes: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lijst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minuut" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "poort: Poort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "afwijzen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "seconde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Bron ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Bron IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Bron MAC adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Bron (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Bronpoort" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "dit apparaat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "deze nieuwe zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "onbeperkt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "niet gespecificeerd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "tot 65536 vermeldingen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "geldige firewallmarkering" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Op software gebaseerde offloading voor routing/NAT" diff --git a/luci-app-firewall/po/pl/firewall.po b/luci-app-firewall/po/pl/firewall.po new file mode 100644 index 000000000..ba3e23ce7 --- /dev/null +++ b/luci-app-firewall/po/pl/firewall.po @@ -0,0 +1,1663 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-11-29 19:50+0000\n" +"Last-Translator: Piotr Kołtun \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.9-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Przekazywane:Przychodzące}:Wychodzące} %{ipv6?%{ipv4?IPv4 i IPv6:IPv6}:IPv4}%{proto?, protokół " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP z odmianami %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, znacznik " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, pomocnik %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- dodaj IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- dodaj MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Akceptuj %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Zapobieganie przepisywaniu źródła" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Przekazuj do %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Porzucaj %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Przydziel DSCP klasyfikacja %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Przydziel conntrack-pomocnika " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} znacznik zapory " +"sieciowej %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Automatycznie przepisz źródłowy adres " +"IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Nie śledź %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Odrzucaj %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statycznie przepisz do źródła %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Należy podać adres IP do ponownego zapisu!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Wyłącz przepisywanie adresów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Akcja" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Dodatkowe surowe iptables argumenty do klasyfikacji ruchu w strefie " +"docelowej, np. -p tcp --dport 443 tylko w celu dopasowania " +"ruchu wychodzącego HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Dodatkowe surowe iptables argumenty do klasyfikacji ruchu w strefie " +"docelowej, np. -p tcp --sport 443 tylko w celu dopasowania " +"ruchu przychodzącego HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Rodzina adresów, wewnętrzny adres IP muszą być zgodne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Rodzina adresów, adres źródłowy, adres docelowy, przepisany adres IP muszą " +"być zgodne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Ustawienia zaawansowane" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Zezwól na „nieprawidłowy” ruch" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Zezwól na przekazywanie ze strefy źródłowej:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Zezwól na przekazywanie do strefy docelowej:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Każdy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Każdy dzień" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Zastosuj bitowy XOR podanej wartości i istniejącej wartości znacznika na " +"ustanowionych połączeniach. Format to wartość [/mask]. Jeśli maska jest " +"określona, wówczas ustawione w niej bity są zerowane." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Zastosuj daną klasę lub wartość DSCP do ustanowionych połączeń." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Przydziel określonego pomocnika śledzenia połączeń do dopasowanego ruchu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Automatyczne przydzielanie pomocnika" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Automatycznie przydzielaj pomocników conntrack na podstawie protokołu ruchu " +"i portu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Komentarz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Ustawienia conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Pomocnicy conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Zawartość została zapisana." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Kontynuuj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Liczniki" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Objęte urządzenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Objęte sieci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Objęte podsieci" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Własne reguły" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Własne reguły pozwalają na arbitralne wykonanie poleceń iptables, które nie " +"są objęte składnią zapory. Polecenia wykonywane są po każdym restarcie " +"zapory, zaraz po załadowaniu zestawu reguł domyślnych." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "klasyfikacja DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Znacznik DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Wymagany znacznik DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Adres przeznaczenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Port docelowy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Strefa docelowa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Nazwa urządzenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Nie instaluj dodatkowych reguł odrzucania ruchu przekazywanego ze stanem " +"conntrack nieprawidłowy. Może to być wymagane w przypadku " +"skomplikowanych asymetrycznych ustawień trasy." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Porzucaj wadliwe pakiety" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Włącz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Włącz pętlę zwrotną NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Włącz ochronę przed SYN‑flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Włącz logowanie tej strefy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Włącz translację adresów sieciowych i portów IPv4 (NAT4 lub NAPT4) dla ruchu " +"wychodzącego w tej strefie. Jest ona zazwyczaj włączona w strefie wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Włącz translację adresów sieciowych i portów IPv6 (NAT6 lub NAPT6) dla ruchu " +"wychodzącego w tej strefie." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Włączone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Włącza śledzenie liczby pakietów i bajtów dla zestawu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Zaleca się użyć: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Dokładnie wybiera dozwolonych pomocników śledzenia połączeń dla ruchu " +"strefowego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Zewnętrzne adresy IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Port zewnętrzny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Dodatkowe argumenty" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Dodatkowe argumenty przeznaczenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Dodatkowe argumenty tablicy IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Dodatkowe argumenty zródłowe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Rodzina" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Zapora sieciowa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Zapora sieciowa - Własne reguły" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Zapora sieciowa - Zestawy IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Zapora sieciowa - Zasady NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Zapora sieciowa - Przekazywanie portów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Zapora sieciowa - Reguły ruchu sieciowego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Zapora sieciowa - Ustawienia stref" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migracja konfiguracji zapory sieciowej" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "Typ flow offloadingu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Ruch przekazujący" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Przekazano %{ipv6?%{ipv4?IPv4 i IPv6:IPv6}:" +"IPv4}%{proto?, protokół {proto#%{next?, }%{item.name}}}%{mark?, znacznik %{mark." +"val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Piątek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Z %{src}%{src_device?, interfejs %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Z %{src}%{src_device?, interfejs %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Z %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Ustawienia główne" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Udziel dostępu do konfiguracji zapory sieciowej" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "Sprzętowy flow offloading do trasowania z/bez NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Sprzętowy flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (zakres)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Zestawy IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "Adresy IP/Sieci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "Adresy IP/Sieci/Adresy MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 i IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Tylko IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Maskarada IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Tylko IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Urządzenie przychodzące" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Plik dołączany" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Przychodzące %{ipv6?%{ipv4?IPv4 i IPv6:IPv6}:IPv4}%{proto?, protokół %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"z typami %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, znacznik %{mark.val}}%{helper?, pomocnik %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Początkowy rozmiar wartości skrótu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Ruch przychodzący" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Wewnętrzny adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Port wewnętrzny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Strefa wewnętrzna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Przekazywanie wewnątrzstrefowe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Nieprawidłowy znacznik DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Nieprawidłowa wartość graniczna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Nieprawidłowa nazwa zestawu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Naruszenie limitu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Ograniczenie logowania" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Dopasowanie limitu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Dopasowanie limitu do %{limit.num} pakiety na %{limit.unit}%{limit.burst? seria %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Ograniczona maskarada włączona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Ogranicza dopasowanie ruchu do określonej szybkości." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Źródło pętli zwrotnej IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Automatyczne przepisywanie na interfejs wyjściowy IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Dostosuj MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Maskarada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Dopasuj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Dopasuj DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Dopasuj typ ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Dopasuj urządzenie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Dopasuj przekazywany ruch skierowany na podany adres IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Dopasuj przekazywany ruch skierowany na dany port docelowy lub zakres portów." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Dopasuj przekazywany ruch z tego adresu IP lub zakresu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Dopasuj przekazywany ruch pochodzący z danego portu źródłowego lub zakresu " +"portów." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Pomocnik dopasowania" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Dopasuj ruch przychodzący do danego portu docelowego lub zakresu portów na " +"tym hoście" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Znacznik dopasowania" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Dopasuj ruch, używając określonego pomocnika śledzenia połączeń." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "Odpowiada konkretnemu znakowi zapory lub zakresowi różnych znaków." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Dopasowuje przekazywany ruch przy użyciu określonego wychodzącego urządzenia " +"sieciowego." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Dopasowuje ruch niosący określone oznaczenie DSCP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Maksymalna liczba wpisów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Maksymalna długość" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Maksymalna początkowa liczba pakietów do dopasowania: ta liczba jest " +"ładowana jednorazowo za każdym razem, gdy limit określony powyżej nie " +"zostanie osiągnięty, aż do tej liczby." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Poniedziałek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Dni miesiąca" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Zasady NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Reguły NAT umożliwiają precyzyjną kontrolę źródłowego adresu IP w celu " +"użycia ruchu wychodzącego lub przekazywanego." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nazwa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Maska sieci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "Brak" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Niepełna kompatybilność z QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Dopasuj tylko przychodzący ruch skierowany do danego adresu IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Dopasuj tylko ruch z tych adresów MAC." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Dopasuj tylko ruch przychodzący z tego adresu IP lub zakresu adresów." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Dopasuj tylko ruch przychodzący z podanego portu źródłowego lub zakresu " +"portów na hoście klienta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Urządzenie wychodzące" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Strefa wychodząca" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Ruch wychodzący" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Dopasowanie pola pakietu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Pola pakietów do dopasowania.
Składnia: direction_datatype. " +"np.: src_port, dest_net.
Kierunki: src, dst. " +"Typy danych: ip, port, mac, net, set.
Prefiksy kierunku są " +"opcjonalne.
*Uwaga: typ danych set nie jest obsługiwany w " +"fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Przekazuje dodatkowe argumenty do iptables. Zachowaj szczególną ostrożność!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Przekazywanie surowych argumentów iptables do reguł klasyfikacji ruchu " +"źródłowego i docelowego pozwala na dopasowanie pakietów w oparciu o inne " +"kryteria niż interfejsy lub podsieci. Opcje te powinny być używane ze " +"szczególną ostrożnością, ponieważ nieprawidłowe wartości mogą spowodować " +"złamanie zestawu reguł zapory sieciowej, całkowicie odsłaniając wszystkie " +"usługi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Ścieżka do pliku CIDR, podsieci, adresów IP hosta itp.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Przekazywanie portów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Przekazanie portów pozwala komputerom z internetu na połączenia z " +"komputerami z sieci LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Zakres portów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokół" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Przekieruj ruch przychodzący na podany port do wskazanego hosta w sieci " +"wewnętrznej" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Przekieruj ruch przychodzący do wskazanego hosta w sieci wewnętrznej" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Patrz zestaw zewnętrzny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Strefy odbicia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Wymaga obsługi sprzętowej NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Ogranicz maskaradę do wskazanych podsieci docelowych" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Ogranicz maskaradę do wskazanych podsieci źródłowych" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Ogranicz do rodziny adresów" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Przepisz adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Przepisz dopasowany ruch do określonego źródłowego adresu IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Przepisz dopasowany ruch do określonego portu źródłowego lub zakresu portów." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Przepisz port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Offloading trasowania/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Przepisz do określonego źródłowego adresu IP lub portu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Sobota" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Ustaw znacznik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Ustaw podaną wartość znaku na ustanowionych połączeniach. Format to wartość " +"[/mask]. Jeśli maska jest określona, modyfikowane są tylko te bity ustawione " +"w masce." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "Programowy flow offloading do trasowania/NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Programowy flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Źródłowy adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Źródłowy adres MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Adres źródłowy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Port źródłowy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Strefa źródłowa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Określa, czy powiązać tę regułę ruchu z określonym przychodzącym, czy " +"wychodzącym urządzeniem sieciowym." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Określa, czy użyć zewnętrznego czy wewnętrznego adresu IP do odbijanego " +"ruchu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Data rozpoczęcia (rrrr-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Czas rozpoczęcia (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Data zatrzymania (rrrr-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Czas zatrzymania (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Metoda przechowywania" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Niedziela" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Istniejąca konfiguracja zapory sieciowej musi zostać zmieniona, aby LuCI " +"mógł działać prawidłowo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Zapora tworzy strefy na interfejsach sieciowych, aby kontrolować przepływ " +"ruchu w sieci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Opcje poniżej kontrolują politykę przekazywania pomiędzy tą strefą (%s) a " +"innymi strefami. Strefy docelowe obejmują przekazywany ruch " +"pochodzący z %q. Strefy źródłowe pasują do ruchu " +"przekazanego z innych stref skierowanych do %q. Reguła " +"przekazywania jest jednokierunkowa, np. przekazywanie z sieci LAN " +"do WAN nie implikuje pozwolenia na przekazywanie z sieci WAN do LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Ta sekcja określa ustawienia ogólne %q. Opcje Ruch przychodzący " +"i Ruch wychodzący ustalają domyślne zasady dla ruchu przychodzącego " +"i wychodzącego w tej strefie, podczas gdy Ruch przekazujący opisuje " +"zasady przekazywania ruchu między różnymi sieciami w obrębie strefy. Opcja " +"Objęte sieci określa, które dostępne sieci należą do tej strefy." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Czwartek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Ograniczenia czasowe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Czas w UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Ograniczenia czasowe są włączone dla tej reguły" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Limit czasu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"Do %{dest}%{dest_device?, interfejs %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Do %{dest}%{dest_device?, poprzez interfejs %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Do %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Pomocnik śledzenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Reguły ruchu sieciowego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Reguły ruchu sieciowego definiują politykę dla pakietów przechodzących " +"między strefami, aby np. odrzucać ruch między hostami lub otwierać porty WAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Wtorek" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Nie można zapisać zawartości: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Jednostka: sekundy. Domyślnie 0 oznacza, że wpis jest dodany na " +"stałe do zestawu.
Maks.: 2147483 sekundy." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Nieznany lub niezainstalowany pomocnik conntrack \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Nienazwany NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Przekazywanie bez nazwy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Nieznana zasada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Zestaw nienazwany" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Strefa bez nazwy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Nierozpoznany protokół" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Po naciśnięciu przycisku „Kontynuuj” sekcje przekierowujące z docelowym " +"„SNAT” zostaną przekonwertowane na sekcje „nat”, a zapora sieciowa zostanie " +"ponownie uruchomiona w celu zastosowania zaktualizowanej konfiguracji." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Użyj zewnętrznego adresu IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Użyj wewnętrznego adresu IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Użyj ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Opcji tej należy używać do klasyfikacji ruchu strefowego według surowych, " +"niezarządzanych przez uci urządzeń sieciowych." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Opcji tej należy używać do klasyfikacji ruchu strefowego według źródła lub " +"podsieci docelowej zamiast sieci lub urządzeń." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Wymagany prawidłowy znacznik zapory sieciowej" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Środa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Dni tygodnia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "znacznik zapory XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Znacznik XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Na tym urządzeniu nie działa firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Na tym urządzeniu działa firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Strefa ⇒ Przekazywanie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Strefy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Strefy, z których mają być tworzone reguły odbicia. Jeśli opcja nie jest " +"ustawiona, używana jest tylko strefa docelowa." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "akceptuj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "dowolny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "dowolna strefa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "dowolny/wszystkie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "zastosuj znacznik zapory" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "przydziel pomocnika conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automatyczne" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap to tylko ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "dzień" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Docelowy adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Docelowy adres MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Docelowa (pod)sieć" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Port docelowy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Docelowy ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "nie przepisuj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "nie śledź" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "porzucaj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 obsługuje odwoływanie się i tworzenie zestawów IP, aby uprościć " +"dopasowywanie dużych list adresów bez potrzeby tworzenia jednej reguły dla " +"każdego elementu do dopasowania. Zakresy portów w zestawach ipset nie są " +"obsługiwane przez firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "zportu-doportu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "godzina" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Do użytku z dopasowanymi typami danych: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "list" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: Adres MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "adresmac|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minuta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (Pod)sieć" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "odrzucaj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "sekunda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Źródłowy ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Źródłowy adres IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Źródłowy adres MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Źródłowa (pod)sieć" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Źródłowy port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "to urządzenie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "ta nowa strefa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "nieograniczona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "nieokreślone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "do 65536 wpisów." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "prawidłowy znacznik zapory sieciowej" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Offloading oparty na oprogramowaniu dla trasowania/NAT" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Włącz translację adresów sieciowych i portów (NAT lub NAPT) dla ruchu " +#~ "wychodzącego w tej strefie. Jest to zazwyczaj włączone w strefie wan." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Przekazywane IPv4 %{proto?, protokół %{proto#%{next?, }%{item.name}}}%{mark?, znacznik %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Przychodzące IPv4%{proto?, protokół %{proto#%{next?, }%{item.types?%{item.name}ICMP z odmianami %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, znacznik %{mark.val}}%{helper?, pomocnik %{helper.inv?%{helper.val}" +#~ ":%{helper.val}}}" diff --git a/luci-app-firewall/po/pt/firewall.po b/luci-app-firewall/po/pt/firewall.po new file mode 100644 index 000000000..18c1cc1fb --- /dev/null +++ b/luci-app-firewall/po/pt/firewall.po @@ -0,0 +1,1680 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-09-21 03:42+0000\n" +"Last-Translator: Sergio Eustaquio \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.8-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 e " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP com tipos %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark." +"val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- adicionar IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- adicionar MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Aceitar %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Prevenir a reescrita da fonte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Encaminhar para %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Descartar %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Atribuir DSCP classificação %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Atribuir auxiliar conntrack " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} marca do firewall " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Reescrever automaticamente o IP de " +"origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Não rastreie %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Rejeita %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Reescrever estaticamente para a origem " +"%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Um IP reescrito deve ser especificado!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Desativar reescrever endereços" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Ação" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Argumentos brutos adicionais iptables para classificar o tráfego de " +"destino da zona, por exemplo, -p tcp -- dport 443 para " +"corresponder apenas ao tráfego https de saída." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Argumentos adicionais brutos iptables para classificar o tráfego de " +"fonte de zona, por exemplo, -p tcp - sport 443 para " +"corresponder apenas ao tráfego HTTPS de entrada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Família de endereços, o endereço de IP interno deve corresponder" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Família de endereços, endereço de origem, endereço de destino, o endereço de " +"IP reescrito deve corresponder" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Configurações avançadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Permitir tráfego \"inválido\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Permitir encaminhamento de zonas de origem:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Permitir encaminhamento para zonas de destino:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Qualquer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Qualquer dia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Aplique um XOR bit a bit do valor dado e o valor da marca existente nas " +"ligações estabelecidas. Formato é valor[/máscara]. Se uma máscara for " +"especificada, os bits definidos na máscara são zerados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Aplique a classe ou valor de DSCP dado às conexões estabelecidas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Atribua o ajudante de rastreamento de conexão especificado para o tráfego " +"combinado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Atribuição automática de assistentes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Atribuir assistentes de conntrack automaticamente com base no protocolo de " +"tráfego e na porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Comentário" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Configurações do Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Assistentes do Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Os conteúdos foram gravados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Continuar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Contadores" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Aparelhos abrangidos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Redes abrangidas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Subredes abrangidas" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Regras Personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"As regras personalizadas permitem-lhe executar comandos arbitrários iptables " +"os quais não são possiveis de aplicar usando a framework da firewall. Os " +"comandos são executados a seguir ao reinicio da firewall, logo a seguir ao " +"conjunto de regras predefinidas serem carregadas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Classificação de DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Marca de DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Marca de DSCP necessária" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Endereço de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Porta de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Zona de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Nome do aparelho" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Não instalae regras adicionais para rejeitar tráfego encaminhado com estado " +"conntrack invalid. Isto pode ser necessário para configurações " +"complexas de rotas assimétricas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Descartar pacotes inválidos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Ativar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Ativar NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Ativar a Proteção SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Ativar registo nesta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Ative o endereço de rede e a tradução da porta IPv4 (NAT4 ou NAPT4) para o " +"tráfego de saída nesta zona. Normalmente, isso é ativado na zona wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Ative o endereço de rede e a tradução da porta IPv6 (NAT6 ou NAPT6) para o " +"tráfego de saída nesta zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Ativado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" +"Ativa o rastreamento da contagem dos pacotes e dos bytes para o conjunto." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Esperando: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Escolhe explicitamente os assistentes de rastreamento de conexão permitidos " +"para o tráfego da zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Endereço IP externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Porta externa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Argumentos adicionais" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Argumentos adicionais de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Argumentos adicionais do iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Argumentos adicionais da fonte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Família" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Regras Personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - Regras de NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Encaminhamento de Portas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Regras de Tráfego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Definições de Zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migração de configuração do Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Encaminhar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Encaminhado %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Sexta-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Configurações gerais" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Conceder acesso à configuração do firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Descarga de fluxo em hardware" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (intervalo)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPs/Redes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPs/Redes/MACs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 e IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Apenas IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Mascaramento IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Apenas IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Aparelho de entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Incluir ficheiro" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Chegando %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"com tipos %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Tamanho inicial do hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Endereço IP interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Porta interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Zona Interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Reencaminhamento na zona interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Marca de DSCP inválida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Valor limite inválido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Nome de conjunto inválido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Limite de burst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Limitar registo de mensagens" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Limitar a correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limitar a correspondência de %{limit.num} pacotes por " +"%{limit.unit}%{limit.burst? estouro %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Mascaramento limitado ativado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Limita o tráfego de acordo com a taxa especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP fonte de loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Reescreve automaticamente para o IP da interface de saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Fixação de MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Mascaramento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Corresponder" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Correspondência DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Correspondência do tipo de ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Aparelho de correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" +"Encaminha o tráfego que obteve correspondência para um determinado endereço " +"de IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Encaminha o tráfego que obteve correspondência para uma determinada porta de " +"destino ou uma faixa de portas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" +"Encaminha o tráfego que obteve correspondência deste IP ou uma faixa de IPs." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Encaminha o tráfego que obteve correspondência originado de uma determinada " +"porta de origem ou faixa de portas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Auxiliar de correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"O tráfego de entrada corresponde a uma dada porta de destino ou intervalo de " +"portas neste host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Marca de correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Corresponder o tráfego usando uma conexão definida pelo auxiliar de " +"rastreamento." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Corresponder uma marca de firewall especifica ou uma variedade de diferentes " +"marcas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Corresponda o tráfego encaminhado usando um aparelho de rede de saída " +"indicado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" +"Compara o tráfego correspondente que esteja carregando uma marca DSCP " +"específica." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Total de registos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Comprimento máximo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Quantidade inicial máxima de pacotes para comparar: este número é " +"recarregado por um cada vez que o limite especificado acima não é atingido, " +"até este número." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Segunda-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Dias do mês" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Regras NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"As regras da NAT permitem o controle fino sobre o IP de origem para usar com " +"o tráfego de saída ou tráfego de encaminhamento." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Máscara de rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Não totalmente compatível com QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Só se tráfego de entrada corresponder ao endereço IP fornecido." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Só se o tráfego de entrada corresponder a um destes MACs." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Só se o tráfego de entrada corresponder a este IP ou intervalo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Só se o tráfego de entrada corresponder à porta de origem fornecida ou de um " +"intervalo de portas no host cliente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Aparelho de saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Zona de saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Campo do pacote coincidente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Campos do pacote que correspondem.
Síntaxe: direction_datatype. por exemplo: src_port, dest_net.
Modo de preparo: " +"src, dst. Tipos de dados: ip, port, mac, net, set. " +"
Os prefixos de direção são opcionais.
*Nota: o tipo de dados " +"set não é suportado no fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Passa argumentos adicionais para o iptables. Usar com cuidado!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Passar argumentos brutos do iptables para regras de classificação de tráfego " +"de origem e destino permite combinar pacotes baseados em outros critérios " +"além de interfaces ou sub-redes. Essas opções devem ser usadas com extremo " +"cuidado, pois valores inválidos podem tornar o conjunto de regras do " +"firewall quebrado, expondo completamente todos os serviços." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Caminho ao ficheiro de CIDRs, sub-redes, IPs de host, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Encaminhamento de Portas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"O Encaminhamento de Portas permite que computadores remotos na internet se " +"liguem a um computador ou serviço especifico na rede privada (LAN)." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Faixa de portas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protocolo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Redirecionar a entrada de trafego correspondente à porta fornecida no host " +"interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Redirecionar o tráfego de entrada correspondente para o host interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Consulte o conjunto externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zonas de reflexão" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Requer suporte de hardware para NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Restringir o Mascaramento às sub-redes de destino dadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Restringir Mascaramento a sub-redes de origem fornecidas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Restringir a família de endereços" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Reescrever o endereço IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" +"Reescrever o tráfego compatível com o endereço IP de origem especificado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Reescrever tráfego compatível com a porta de origem especificado ou uma " +"faixa de portas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Reescrever porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Descargar Roteamento/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Reescrever para um IP de origem ou uma porta específica" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Sábado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Definir marca" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Defina o valor da marca dada nas ligações estabelecidas. o formato é valor[/" +"máscara]. Se uma máscara for especificada, então apenas os bits definidos na " +"máscara são modificados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Descarga de fluxo de software" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Endereço IP de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Endereço MAC de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Endereço de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Porta de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Zona de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Especifica se esta regra de tráfego deve ser ligada a um aparelho de rede " +"específico de entrada ou de saída." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Especifica se deve usar o endereço do IP externo ou interno para o tráfego " +"refletido." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Data de Início (aaaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Hora de início (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Data de Paragem (aaaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Tempo de Parada (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Método de armazenamento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Domingo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"A configuração de firewall existente precisa ser alterada para que o LuCI " +"funcione corretamente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"A firewall cria zonas sobre as interfaces de rede para controlar o fluxo do " +"tráfego." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"As opções abaixo controlam as políticas de encaminhamento entre esta zona " +"(%s) e outras zonas. Zonas de destino cobrem tráfego encaminhado " +"originando de %q. Zonas de origem correspondem ao " +"tráfego encaminhado de outras zonas alvo em %q. A regra de " +"encaminhamento é unidirecional, por exemplo, um encaminhamento de " +"lan para wan não implica uma permissão para avançar de wan para lan " +"também." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Esta secção define propriedades comuns de %q. As opções input e " +"output definem as políticas padrão para entrada e saída de tráfego " +"nessa zona, enquanto a opção forward descreve a política para " +"tráfego encaminhado entre redes diferentes dentro da zona. Redes " +"abrangidas especifica quais das redes disponíveis são membros desta " +"zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Quinta-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Restrições de Tempo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Tempo em UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Restrições de tempo estão ativadas para esta regra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Tempo limite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Para %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Para %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Para %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Auxiliar de rastreamento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Regras de Tráfego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"As Regras de Tráfego definem políticas para os pacotes que viajam entre " +"diferentes zonas, por exemplo, para rejeitar trafego entre certos hosts ou " +"para abrir portas WAN no router." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Terça-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Incapaz de gravar conteúdos: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unidade: segundos. Padrão 0 significa que a entrada é " +"adicionada permanentemente ao conjunto.
Max: 2147483 segundos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Auxiliar conntrack desconhecido ou não instalado \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Encaminhamento sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Regra sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Conjunto sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Zona sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Protocolo desconhecido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Ao pressionar \"Continuar\", as seções \"redirecionar\" com o alvo \"SNAT\" " +"serão convertidas para seções \"nat\" e o firewall será reiniciado para " +"aplicar e atualizar as novas configurações." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Usar endereço IP externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Usar endereço IP interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Use o ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Use esta opção para classificar o tráfego da zona por aparelhos de rede " +"brutos, não geridos por uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Use esta opção para classificar o tráfego da zona por sub-rede de origem ou " +"destino em vez de redes ou aparelhos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Marca de firewall válida necessária" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Quarta-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Dias úteis" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "Marca de firewall XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Marca XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "O seu aparelho não executa o firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "O seu aparelho executa o firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Encaminhamentos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zonas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonas das quais as regras de reflexão devem ser criadas. Se não for " +"definido, apenas a zona de destino é utilizada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "aceitar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "qualquer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "qualquer zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "qualquer/todos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "aplicar marca de firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "atribuir auxiliar conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automático" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap é ipv4 apenas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "dia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: endereço MAC de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: (sub)rede de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Porta de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Destino ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "não reescrever" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "não rastrear" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "descartar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 oferece suporte a referência e criação de conjuntos de IPs para " +"simplificar a correspondência de grandes listas de endereços sem a " +"necessidade de criar uma regra que coincida com cada item. Os intervalos das " +"portas em ipsets não são compatíveis com o firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "deporta-paraporta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "hora" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Endereço IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Para uso com tipos de dados que coincidam: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lista" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: endereço MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minuto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "rede: (sub)rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "porta: Porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "rejeitar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "segundo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Origem do ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Origem do endereço MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Origem (sub)rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Porta de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "este aparelho" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "esta nova zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "ilimitado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "não especificado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "até 65536 entradas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "marca de firewall válida" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Descarga baseada em software para roteamento/NAT" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Ativar a conversão de endereços e portas de rede (NAT ou NAPT) para o " +#~ "tráfego de saída nessa zona. Isto é normalmente ativado na zona wan." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +#~ "%{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/pt_BR/firewall.po b/luci-app-firewall/po/pt_BR/firewall.po new file mode 100644 index 000000000..a56ed3924 --- /dev/null +++ b/luci-app-firewall/po/pt_BR/firewall.po @@ -0,0 +1,1675 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-07-17 07:32+0000\n" +"Last-Translator: Janderson Vieira Santos \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 e " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP com tipos %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark." +"val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper." +"val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- Adicionar IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- Adicionar MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Aceite %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Prevenir a reescrita da fonte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Encaminhar para %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Derruba %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Atribuir DSCP classificação %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Atribuir auxiliar conntrack " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} marca do firewall " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Reescrever automaticamente o IP de " +"origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Não rastreie %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Rejeita %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Reescrever estaticamente para a origem " +"%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Um IP de reescrita deve ser especificado!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACEITAR - Desativar a reescrita do endereço" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Ação" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Comandos iptables adicionais para classificar o tráfego de destino " +"da zona, por exemplo, -p tcp --dport 443 para corresponder " +"apenas ao tráfego HTTPS de saída." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Comandos iptables adicionais para classificar o tráfego de origem " +"da zona, por exemplo, -p tcp --sport 443 para corresponder " +"apenas ao tráfego HTTPS de entrada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Família de endereços, o endereço IP interno deve corresponder" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Família de endereços, endereço de origem, endereço de destino, a reescrita " +"do endereço IP deve corresponder" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Configurações avançadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Permitir tráfego \"inválido\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Permite o encaminhamento da zona de origem:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Permite o encaminhamento para a zona de destino:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Qualquer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Qualquer dia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Aplique um XOR bitwise do valor dado e o valor da marca existente nas " +"ligações estabelecidas. O formato é o valor[/mask]. Se uma máscara for " +"especificada, então os bits definidos na máscara são zerados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Aplique a classe ou valor DSCP dado às conexões estabelecidas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Atribua o auxiliar de rastreamento de conexão especificado para o tráfego " +"combinado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Atribuição automática de assistentes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Atribuir automaticamente ajudantes de conntrack com base no protocolo de " +"tráfego e na porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Comentário" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Configurações do Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Ajudantes do Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "O conteúdo foi salvo." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Continuar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Contadores" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Dispositivos cobertos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Redes cobertas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Sub-redes cobertas" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Regras Personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"As regras personalizadas permitem executar comandos iptables arbitrários não " +"cobertos por esta ferramenta. Os comandos serão executados após cada " +"reinício do firewall, logo após a carga do conjunto de regras padrão." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Classificação DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Marca DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Marca DSCP necessária" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Endereço de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Porta de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Zona de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Nome do dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Não instale regras extras para rejeitar o tráfego encaminhado quando o " +"estado do conntrack for invalid. Isto pode ser necessário para " +"configurações complexas e de rotas assimétricas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Descartar pacotes inválidos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Habilitar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Habilite o Loopback do NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Habilite proteção contra SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Habilite o registro nesta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Ative o endereço de rede e a tradução da porta IPv4 (NAT4 ou NAPT4) para o " +"tráfego de saída nesta zona. Normalmente, isso é ativado na zona wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Ative o endereço de rede e a tradução da porta IPv6 (NAT6 ou NAPT6) para o " +"tráfego de saída nesta zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Ativado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" +"Ativa o rastreamento da contagem dos pacotes e dos bytes para o conjunto." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Esperando: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Escolhe explicitamente os assistentes de rastreamento de conexão permitidos " +"para o tráfego da zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Endereço IP externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Porta Externa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Argumentos extras" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Argumentos extra de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Argumentos extras para o iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Argumentos extras da fonte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Família" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Regras personalizadas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - Regras NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Encaminhamento de Portas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Regras de Tráfego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Firewall - Configurações de Zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migração de configuração do Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Encaminhar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Encaminhado %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Sexta-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Configurações gerais" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Conceder acesso à configuração do firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Aceleração do fluxo dos dados via hardware" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (intervalo)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Conjuntos de IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IPs/Redes" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IPs/Redes/MACs" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 e IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Apenas IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Mascaramento IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Apenas IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Dispositivo de entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Incluir arquivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Chegando %{ipv6?%{ipv4?IPv4 e IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"com tipos %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Tamanho inicial do hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Entrada" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Endereço IP interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Porta Interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Zona interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Encaminhamento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Marca DSCP inválida" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Valor limite inválido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Nome de conjunto inválido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Estouro limite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Limita as mensagens de registro" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Limitar as correspondências" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limitar a correspondência de %{limit.num} pacotes por " +"%{limit.unit}%{limit.burst? estouro %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Mascaramento limitado ativado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Limita a correspondência de tráfego à taxa especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP da fonte de Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Reescreve automaticamente para o IP da interface de saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Ajuste do MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Mascaramento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Correspondência DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Correspondência de tipo ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Dispositivo de correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" +"Encaminha o tráfego que obteve correspondência para um determinado endereço " +"de IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Encaminha o tráfego que obteve correspondência para uma determinada porta de " +"destino ou uma faixa de portas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" +"Encaminha o tráfego que obteve correspondência deste IP ou uma faixa de IPs." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Encaminha o tráfego que obteve correspondência originado de uma determinada " +"porta de origem ou faixa de portas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Auxiliar de correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Correspondência de tráfego de entrada direcionado à porta de destino ou " +"intervalo de portas especificado neste host" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Marca de correspondência" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Corresponder o tráfego usando uma conexão definida pelo auxiliar de " +"rastreamento." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Corresponder uma marca de firewall especifica ou uma variedade de diferentes " +"marcas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Corresponda o tráfego encaminhado usando um dispositivo de rede de saída " +"indicado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Corresponde ao tráfego que carrega a marcação DSCP especificada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Total de registros" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Comprimento máximo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Número inicial máximo de pacotes para combinar: este número é recarregado " +"por um cada vez que o limite especificado acima não é atingido, até este " +"número." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Segunda-Feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Dias do mês" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Regras NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"As regras da NAT permitem o controle fino sobre o IP de origem para usar com " +"o tráfego de saída ou tráfego de encaminhamento." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Máscara de rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" +"Ela não é totalmente compatível com QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Somente case o tráfego entrante direcionado para o endereço IP fornecido." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Somente case o tráfego entrante destes endereços MAC." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Somente case o tráfego entrante desta faixa de endereços IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Somente case o tráfego entrante vindo da porta de origem fornecida ou " +"intervalo de portas no equipamento cliente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Dispositivo de saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Zona de saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Saída" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Campo do pacote coincidente" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Campos do pacote que correspondem.
Sintaxe: direction_datatype. por exemplo: src_port, dest_net.
Modo de preparo: " +"src, dst. Tipos de dados: ip, port, mac, net, set. " +"
Os prefixos de direção são opcionais.
*Nota: o tipo de dados " +"set não é suportado no fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Passa argumentos adicionais para o iptables. Use com cuidado!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Passar comandos diretos ao iptables para regras de classificação de tráfego " +"de origem e destino, permite combinar pacotes baseados em outros critérios " +"que não sejam interfaces ou sub-redes. Estas opções devem ser usadas com " +"extremo cuidado, pois valores inválidos podem quebrar todo o conjunto de " +"regras do firewall expondo todos os serviços completamente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Caminho para o arquivo de CIDRs, sub-redes, IPs de host, etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Encaminhamentos de Porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"O encaminhamento de portas permite que computadores remotos na Internet " +"conectem a um computador ou serviço específico dentro da rede local privada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Faixa de portas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protocolo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Redireciona tráfego entrante para a porta especificada no computador interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Redireciona tráfego entrante para o computador interno especificado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Consulte o conjunto externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zonas de reflexão" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Requer suporte de NAT em hardware." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Restringe o mascaramento para uma subrede de destino específica" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Restringe o mascaramento para uma subrede de origem específica" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Restringe à uma família de endereços" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Reescreva o endereço IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" +"Reescreva o tráfego compatível com o endereço IP de origem especificado." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Reescrever tráfego compatível com a porta de origem especificado ou uma " +"faixa de portas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Reescrever porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Aceleração do roteamento/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Reescrever para um IP de origem ou uma porta específica" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Sábado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Definir marca" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Defina o valor da marca dada nas ligações estabelecidas. o formato é valor[/" +"mask]. Se uma máscara for especificada, então apenas os bits definidos na " +"máscara são modificados." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Aceleração do fluxo dos dados via software" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Endereço IP de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Endereço MAC de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Endereço de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Porta de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Zona de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Especifica se esta regra de tráfego deve ser ligada a um dispositivo de rede " +"específico de entrada ou de saída." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Especifica se deve usar o endereço de IP externo ou interno para o tráfego " +"refletido." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Dia inicial (aaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Hora de Início (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Dia final (aaaa-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Hora de Parada (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Método de armazenamento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Domingo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"A configuração de firewall existente precisa ser alterada para que o LuCI " +"funcione corretamente." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"O firewall cria zonas sobre as interfaces de rede para controlar o fluxo do " +"tráfego de rede." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"As opções abaixo controlam as políticas de encaminhamento entre esta zona " +"(%s) e outras zonas. Zonas de destino incluem tráfego encaminhado " +"originado de %q. Zonas de origem casam com tráfego " +"encaminhado de outras zonas apontando para %q. A regra de " +"encaminhamento é unidirecional, ex: um encaminhamento da LAN para " +"WAN não implica na permissão de encaminhar da WAN para LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Esta seção define as propriedades comuns de %q. As opções de entrada e saída definem as políticas padrão para o tráfego entrando e " +"saindo desta zona, enquanto a opção de encaminhamento descreve a " +"política para encaminhar o tráfego entre diferentes redes dentro da zona. " +"Redes Cobertas especificam que redes disponíveis são membros desta " +"zona." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Quita-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Restrições de tempo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Hora em UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "As restrições de tempo estão ativadas para esta regra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Tempo limite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Para %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Para %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Para %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Auxiliar de rastreamento" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Regras de tráfego" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Regras de tráfego definem políticas para a passagem de pacotes entre as " +"diferentes zonas. Por exemplo, rejeitar o tráfego entre certos equipamentos " +"ou abrir portas WAN no roteador." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Terça-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Não foi possível salvar os conteúdos: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unidade: segundos. Padrão 0 significa que a entrada é " +"adicionada permanentemente ao conjunto.
Max: 2147483 segundos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Auxiliar conntrack desconhecido ou não instalado \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Encaminhamento sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Regra sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Conjunto sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Zona sem nome" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Protocolo desconhecido" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Ao pressionar \"Continue\", as seções \"redirecionar\" com o alvo \"SNAT\" " +"serão convertidas para seções \"nat\" e o firewall será reiniciado para " +"aplicar e atualizar as novas configurações." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Usar endereço IP externo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Usar endereço IP interno" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Use o ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Use esta opção para classificar o tráfego bruto da zona por dispositivos de " +"rede não gerenciados pelauci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Use esta opção para classificar o tráfego da zona por sub-rede de origem ou " +"destino em vez de redes ou dispositivos." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Marca de firewall válida necessária" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Quarta-feira" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Dias da semana" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "Marca de firewall XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Marca XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "O seu dispositivo não roda o firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "O seu dispositivo roda o firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zona ⇒ Encaminhamentos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zonas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonas de onde devem ser criadas regras de reflexão. Se não for definido, " +"apenas a zona de destino é usada." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "aceitar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "qualquer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "qualquer zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "qualquer/tudo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "aplicar marca de firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "atribuir auxiliar conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automático" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap é ipv4 apenas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "dia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: endereço MAC de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: (sub)rede de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Porta de destino" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Destino ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "não reescrever" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "não rastrear" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "descartar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 oferece suporte a referência e criação de conjuntos de IPs para " +"simplificar a correspondência de grandes listas de endereços sem a " +"necessidade de criar uma regra que coincida com cada item. Os intervalos das " +"portas em ipsets não são compatíveis com o firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "deporta-paraporta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "hora" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Endereço IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Para uso com tipos de dados que coincidam: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "lista" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: endereço MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minuto" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "rede: (sub)rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "porta: Porta" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "rejeitar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "segundo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Origem do ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Origem do endereço MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Origem (sub)rede" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Porta de origem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "este dispositivo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "esta nova zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "ilimitado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "não especificado" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "até 65536 entradas." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "marca de firewall válida" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Aceleração do roteamento/NAT via software" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Ative o endereço de rede e a conversão da porta (NAT ou NAPT) para o " +#~ "tráfego de saída nesta zona. Normalmente, isso é ativado na zona wan." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper " +#~ "%{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/ro/firewall.po b/luci-app-firewall/po/ro/firewall.po new file mode 100644 index 000000000..85c9416d3 --- /dev/null +++ b/luci-app-firewall/po/ro/firewall.po @@ -0,0 +1,1673 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2023-09-18 15:45+0000\n" +"Last-Translator: David Rapaň \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Weblate 5.0.2\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 și " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP cu tipuri %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- adăugați IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- adăugați MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Acceptă %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Preveniți rescrierea sursei" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Forward la %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Picătură %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Assign DSCP clasificare %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Assign conntrack ajutător " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} marcaj firewall " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Automat rescrieți automat sursa IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Nu urmăriți %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Rejectare %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statically rewrite la sursă %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Trebuie specificat un IP de rescriere!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Dezactivează rescrierea adreselor" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Acțiune" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Argumente brute suplimentare iptables pentru a clasifica traficul " +"de destinație al zonei, de exemplu, -p tcp --dport 443 pentru a " +"se potrivi numai cu traficul HTTPS de ieșire." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Argumente brute suplimentare iptables pentru a clasifica traficul " +"sursă din zonă, de exemplu, -p tcp --sport 443 pentru a se " +"potrivi numai cu traficul HTTPS de intrare." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Familia de adrese, adresa IP internă trebuie să corespundă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "Familia de adrese, adresa IP internă trebuie să corespundă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Setări avansate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Permiteți traficul \"invalid\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Permite trecerea din zonele sursa:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Permite trecerea catre zonele sursa:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Oricare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Orice zi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Aplică un XOR în sensul biometric al valorii date și al valorii mărcii " +"existente pe conexiunile stabilite. Formatul este value[/mask]. Dacă se " +"specifică o mască, atunci acei biți setați în mască sunt eliminați." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Aplică clasa sau valoarea DSCP dată la conexiunile stabilite." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Alocarea ajutorului de urmărire a conexiunilor specificat pentru traficul " +"corespunzător." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Atribuirea automată a ajutorului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Atribuiți automat ajutoare de conntrack pe baza protocolului și portului de " +"trafic" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Comentariu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Setări Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Ajutoarele Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Conţinutul a fost salvat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Continuați" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Contoare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Dispozitive acoperite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Retele acoperite" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Subrețele acoperite" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Reguli suplimentare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Regulile personalizate vă permit să executați comenzi iptables arbitrare " +"care nu sunt altfel acoperite de cadrul firewall. Comenzile sunt executate " +"după fiecare repornire a firewall-ului, imediat după ce setul de reguli " +"implicite a fost încărcat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Clasificarea DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Marcaj DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Marcaj DSCP necesar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Adresa de destinație" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Portul de destinație" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Zonă de destinație" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Numele dispozitivului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Nu instalați reguli suplimentare pentru a respinge traficul redirecționat cu " +"starea conntrack invalid. Acest lucru poate fi necesar pentru " +"configurații complexe de rute asimetrice." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Descarcă pachetele invalide" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Activează" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Activează loopback NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Activează protecţia SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Activeaza log in aceasta zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Activați adresa de rețea și traducerea portului IPv4 (NAT4 sau NAPT4) pentru " +"traficul de ieșire din această zonă. Acest lucru este de obicei activat pe " +"wan zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Activați adresa de rețea și traducerea porturilor IPv6 (NAT6 sau NAPT6) " +"pentru traficul de ieșire din această zonă." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "activat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Activează urmărirea numărului de pachete și de octeți pentru set." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Se așteaptă: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Alege în mod explicit ajutoarele de urmărire a conexiunilor permise pentru " +"traficul din zonă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Adresă IP externă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Port extern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Argumente suplimentare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Argumente suplimentare pentru destinație" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Argumente suplimentare pentru iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Argumente sursă suplimentare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Familie" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Firewall - Reguli particularizate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Firewall - Seturi IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Firewall - Reguli NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Firewall - Port-uri forwardate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Firewall - Reguli ale traficului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Setari zona la firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migrarea configurației firewall-ului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "redirecționare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Redirecționate %{ipv6?%{ipv4?IPv4 și IPv6:IPv6}:IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}" +"}}%{mark?, mark %{mark.val}" +"}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Vineri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"De la %{src}%{src_dispozitiv?, interfață %{src_dispozitiv}}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}" +"}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"De la %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"De la %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Setări generale" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Acordarea accesului la configurația firewall-ului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Descărcarea fluxului hardware" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (interval)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Seturi IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP-uri/Rețele" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP-uri/Rețele/MAC-uri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 și IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Doar IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Mascare IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Doar IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Dispozitiv de intrare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Includere fișier" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Intrări %{ipv6?%{ipv4?IPv4 și IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Dimensiunea inițială a hash-ului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Intrare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Adresa IP interna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Port intern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Zonă internă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Marcaj DSCP invalid" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Valoare limită invalidă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Limitați explozia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Limitează mesaje în log" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Potrivirea limitelor" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Limitați potrivirea la %{limit.num} pachete pe %{limit.unit}" +"%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Activarea limitată a mascării" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Limitează potrivirea traficului la rata specificată." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP sursă Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Rescrierea automată către IP-ul interfeței de ieșire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Ajustare MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Translatare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Potrivire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Potrivire DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Potriveste pe tipul de ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Dispozitiv de potrivire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Potrivește traficul redirecționat către adresa IP dată." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Potrivește traficul redirecționat către portul de destinație sau intervalul " +"de porturi dat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Potrivește traficul redirecționat de la acest IP sau interval." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Potrivește traficul redirecționat care provine din portul sursă sau din " +"intervalul de porturi dat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Ajutor de potrivire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Potrivește traficul de intrare direcționat către portul de destinație sau " +"intervalul de porturi dat pe această gazdă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Marca de meci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Potrivește traficul care utilizează ajutorul de urmărire a conexiunilor " +"specificat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Se potrivește cu o anumită marcă de firewall sau cu o serie de mărci " +"diferite." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Potrivește traficul redirecționat utilizând dispozitivul de rețea de ieșire " +"specificat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Potrivește traficul care poartă marcajul DSCP specificat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Intrări max" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Lungime maximă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Numărul maxim inițial de pachete care trebuie să se potrivească: acest număr " +"se reîncarcă cu unu de fiecare dată când limita specificată mai sus nu este " +"atinsă, până la acest număr." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Luni" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Luna Zile" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Reguli NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Regulile NAT permit un control fin asupra IP-ului sursă care va fi utilizat " +"pentru traficul de ieșire sau de redirecționare." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Nume" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Mască de rețea" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Nu este complet compatibiă cu QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Se potrivește numai cu traficul de intrare direcționat către adresa IP dată." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Potriviți numai traficul de intrare de la aceste MAC-uri." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"Se potrivește numai cu traficul de intrare de la acest IP sau interval." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Se potrivește numai cu traficul de intrare care provine din portul sursă dat " +"sau din intervalul de porturi de pe gazda clientului" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Dispozitiv de ieșire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Zona de ieșire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Ieşire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Potrivire câmp pachete" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Câmpurile pachetului care se potrivesc.
Sintaxa: " +"direction_datatype. de exemplu: src_port, dest_net." +"
Direcții: src, dst. Tipuri de date: ip, port, mac, " +"net, set.
. Prefixele de direcție sunt opționale.
*Nota: " +"tipul de date set nu este acceptat în fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Transmite argumente suplimentare către iptables. Folosiți cu grijă!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Transmiterea argumentelor iptables brute către regulile de clasificare a " +"traficului la sursă și la destinație permite potrivirea pachetelor pe baza " +"altor criterii decât interfețele sau subrețelele. Aceste opțiuni trebuie " +"utilizate cu mare atenție, deoarece valorile invalide ar putea face ca setul " +"de reguli de firewall să fie rupt, expunând complet toate serviciile." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" +"Calea de acces la fișierul cu CIDR-uri, subrețele, IP-uri gazdă etc.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Port Redirecționări" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Redirecționarea porturilor permite computerelor de la distanță de pe " +"internet să se conecteze la un anumit computer sau serviciu din cadrul unei " +"rețele locale private." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "interval de porturi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protocol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Redirecționează traficul de intrare corespunzător către portul dat pe gazda " +"internă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" +"Redirecționează traficul de intrare corespunzător către gazda internă " +"specificată" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Consultați Setul extern" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Zone de reflexie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Necesită suport hardware NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Restrângerea masquerading-ului la anumite subrețele de destinație" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Restrângerea masquerading-ului la anumite subrețele sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Restricționarea la adresa familiei" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Rescrieți adresa IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Răspândește traficul potrivit la adresa IP sursă specificată." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Rescrie traficul potrivit către portul sursă sau intervalul de porturi " +"specificat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Port de rescriere" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Rutarea/încărcarea NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Rescrierea către un anumit IP sau port sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Sâmbătă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Marca de setare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Stabilește valoarea dată a marcajului la conexiunile stabilite. Formatul " +"este value[/mask]. Dacă este specificată o mască, atunci sunt modificați " +"numai acei biți setați în mască." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Descărcarea fluxului de software" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Sursă adresă IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Sursă adresă MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Adresă sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Port sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Zona sursa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Specifică dacă se leagă această regulă de trafic de un anumit dispozitiv de " +"intrare sau de ieșire din rețea." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Specifică dacă se utilizează adresa IP externă sau internă pentru traficul " +"reflectat." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Data de începere (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Ora de începere (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Data de oprire (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Timp de oprire (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Metoda de stocare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Duminică" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Configurația existentă a firewall-ului trebuie să fie modificată pentru ca " +"LuCI să funcționeze corect." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Firewall-ul creează zone peste interfețele de rețea pentru a controla fluxul " +"de trafic de rețea." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Opțiunile de mai jos controlează politicile de redirecționare între această " +"zonă (%s) și alte zone. Zonele de destinație acoperă traficul " +"redirecționat provenit din %q. Zonele sursă se " +"potrivesc cu traficul redirecționat din alte zone destinate la %q. Regula de redirecționare este unidirecțională, de exemplu, " +"o redirecționare de la lan la wan nu implicăo permisiune de " +"redirecționare de la wan la lan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Această secțiune definește proprietățile comune ale lui %q. Opțiunile " +"input și output stabilesc politicile implicite pentru " +"traficul care intră și iese din această zonă, în timp ce opțiunea " +"forward descrie politica pentru traficul redirecționat între " +"diferite rețele din cadrul zonei. Rețele acoperite specifică ce " +"rețele disponibile sunt membre ale acestei zone." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Joi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Restricţii de timp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Timp în UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Restricțiile de timp sunt activate pentru această regulă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Pauză" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Pentru %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Pentru %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Către %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Ajutor pentru urmărire" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Reguli de circulație" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Regulile de trafic definesc politicile pentru pachetele care călătoresc " +"între diferite zone, de exemplu pentru a respinge traficul între anumite " +"gazde sau pentru a deschide porturile WAN pe router." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Marţi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Nu se poate salva conținutul: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Unitate: secunde. Implicit 0 înseamnă că intrarea este adăugată " +"permanent la set.
Max: 2147483 secunde." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Ajutor conntrack necunoscut sau neinstalat \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Fără nume NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Înainte fără nume" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Regula fără nume" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Set fără nume" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Zona fără nume" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Protocol nerecunoscut" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"La apăsarea butonului \"Continue\", secțiunile \"redirect\" cu țintă " +"\"SNAT\" vor fi convertite în secțiuni \"nat\", iar firewall-ul va fi " +"repornit pentru a aplica configurația actualizată." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Utilizați adresa IP externă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Utilizați adresa IP internă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Utilizați ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Utilizați această opțiune pentru a clasifica traficul de zonă prin " +"dispozitive de rețea brute, neuci gestionate." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Utilizați această opțiune pentru a clasifica traficul din zonă în funcție de " +"subnetul sursă sau destinație în loc de rețele sau dispozitive." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Este necesară o marcă de firewall validă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Miercuri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Zilele săptămânii" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR marca firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Marcajul XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Dispozitivul nu rulează firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Dispozitivul rulează firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zonă ⇒ Redirecționări" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Zonele din care se creează reguli de reflecție. Dacă nu este setată, se " +"utilizează numai zona de destinație." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "acceptă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "oricare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "orice zona" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "orice/toate" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "aplică marcajul firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "atribuirea ajutorului conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "automat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap este doar ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "zi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP-ul destinației" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Destinație adresa MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Destinație (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port:Destinatie port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Destinație ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "nu rescrieți" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "nu urmăriți" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "picătură" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 acceptă corelarea și crearea de seturi IP pentru a simplifica " +"potrivirea listelor de adrese mari, fără a fi nevoie să creați o regulă " +"pentru fiecare element pentru a se potrivi. Intervalele de porturi din " +"ipsets nu sunt acceptate de firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "de la port la port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "oră" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Adresă IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "IP[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Pentru utilizare cu tipurile de date Match: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "listă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: Adresă MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minut" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "respingeți" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "secundă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset *" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Sursa ipset *" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Adresă MAC sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: (sub)rețea sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Port sursă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "acest dispozitiv" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "această nouă zonă" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "nelimitat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "nespecificat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "până la 65536 intrări." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "marca de firewall validă" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Descărcarea bazată pe software pentru rutare/NAT" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Activați traducerea adreselor de rețea și a porturilor (NAT sau NAPT) " +#~ "pentru traficul de ieșire din această zonă. Acest lucru este activat de " +#~ "obicei pe wan zonă." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Redirecționat IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Intrând IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" diff --git a/luci-app-firewall/po/ru/firewall.po b/luci-app-firewall/po/ru/firewall.po new file mode 100644 index 000000000..b5330629f --- /dev/null +++ b/luci-app-firewall/po/ru/firewall.po @@ -0,0 +1,1678 @@ +msgid "" +msgstr "" +"Project-Id-Version: LuCI: firewall\n" +"POT-Creation-Date: 2013-09-05 16:02+0200\n" +"PO-Revision-Date: 2024-10-30 02:45+0000\n" +"Last-Translator: sergio \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.8.2-dev\n" +"Project-Info: Это технический перевод, не дословный. Главное-удобный русский " +"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Перенаправление:Входящий}:Исходящий} %{ipv6?%{ipv4?IPv4 и IPv6:IPv6}:IPv4}%{proto?, протокол " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP с типами %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, метка " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:" +"%{dscp.val}}}%{helper?, помощник %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- добавить IP-адрес --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- добавить MAC-адрес --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Разрешить %{src?%{dest?перенаправляемый:" +"входящий}:исходящий} трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Предотвращать перезапись источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Перенаправлять на %{dest}%{dest_ip? IP-" +"адрес %{dest_ip}}%{dest_port? порт %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Отбрасывать %{src?%{dest?перенаправляемый:" +"входящий}:исходящий} трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Назначить DSCP классификатор " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Назначить помощника отслеживания " +"соединений %{set_helper}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Назначить метку:XOR метки} " +"брандмауэра %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Автоматически перезаписывать IP-адрес " +"источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Не отслеживать %{src?%{dest?" +"перенаправляемый:входящий}:исходящий} трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Отклонять %{src?%{dest?перенаправляемый:" +"входящий}:исходящий} трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Статически переписывать %{snat_ip?IP-адрес " +"источника на %{snat_ip}} %{snat_port?порт источника на " +"%{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "IP-адрес для перезаписи должен быть указан!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT — отключить перезапись адреса" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Действие" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Дополнительные аргументы iptables для классификации трафика зоны " +"назначения, например -p tcp --dport 443 для соответствия только " +"исходящему HTTPS-трафику." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Дополнительные аргументы iptables для классификации трафика зоны " +"источника, например -p tcp --sport 443 для соответствия только " +"входящему HTTPS-трафику." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Внутренний IP-адрес должен соответствовать выбранной версии IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "Адреса источника, назначения и перезаписи должны быть одной версии IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Расширеные настройки" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Разрешить «недействительный» трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Разрешить перенаправление из 'зон источников':" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Разрешить перенаправление в 'зоны назначения':" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Любой" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Любой день" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Применить побитовую операцию XOR заданного значения и существующего значения " +"метки для уже установленных соединений. Формат — значение[/маска]. Если " +"задана маска, то биты, заданные в маске, обнуляются." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" +"Применить заданный класс DSCP или значение к установленным соединениям." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Назначить указанного помощника отслеживания соединений для соответствующего " +"трафика." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Автоматическое назначение помощников" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Автоматическое назначение помощников отслеживания соединений (conntrack) на " +"основе протокола и порта трафика" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Комментарий" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Отслеживание соединений (conntrack)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Помощники отслеживания соединений" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Содержимое сохранено." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Продолжить" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Счетчики" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Охватываемые устройства" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Охватываемые сети" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Охватываемые подсети" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Пользовательские правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Пользовательские правила позволяют выполнять произвольные команды iptables, " +"которые не охвачены рамками межсетевого экрана. Команды выполняются после " +"каждой перезагрузки межсетевого экрана, сразу после загрузки набора правил " +"по умолчанию." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP классификация" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP метка" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Требуется DSCP метка" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Адрес назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Порт назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Зона назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Имя устройства" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Не устанавливать дополнительные правила для отклонения перенаправляемого " +"трафика с состоянием недействительный (invalid). Это может " +"потребоваться для сложных настроек асимметричной маршрутизации." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Отбрасывать некорректные пакеты" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Включить" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Включить NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Включить защиту от SYN-flood атак" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Включить журналирование в этой зоне" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Включите трансляцию сетевых адресов и портов IPv4 (NAT4 или NAPT4) для " +"исходящего трафика в этой зоне. Обычно это включается в зоне wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Включите трансляцию сетевых адресов и портов IPv6 (NAT6 или NAPT6) для " +"исходящего трафика в этой зоне." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Включен" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Включает отслеживание количества пакетов и байтов для набора." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Ожидание: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Явно определяет допустимые варианты помощников (helpers) отслеживания " +"соединений (connection tracking) трафика в зоне" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Внешний IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Внешний порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Дополнительные аргументы" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Дополнительные аргументы для назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Дополнительные аргументы iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Дополнительные аргументы для источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Семейство" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Межсетевой экран" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Межсетевой экран - Пользовательские правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Брандмауэр - наборы IP-адресов" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Межсетевой экран - Правила NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Межсетевой экран - Перенаправление портов" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Межсетевой экран - Правила для трафика" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Межсетевой экран - Настройка зон" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Миграция конфигурации межсетевого экрана" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "Тип разгрузки потока" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Перенаправление" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Перенаправление %{ipv6?%{ipv4?IPv4 и IPv6:IPv6}:IPv4}%{proto?, протокол %{proto#%{next?, }%{item.name}" +"}}%{mark?, пометка %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Пятница" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Из %{src}%{src_device?, интерфейс %{src_device}}%{src_ip?, IP-" +"адрес %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Из %{src}%{src_device?, интерфейс %{src_device}}%{src_ip?, IP-" +"адрес %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC-адрес " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Из %{src}%{src_ip?, IP-адрес %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC-адрес %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Основные Настройки" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Разрешить конфигурировать брандмауер" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "Аппаратная разгрузка для маршрутизации с/без NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Аппаратная разгрузка потока" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (диапазон)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Наборы IP-адресов" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP-адреса/сети" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP-адреса/сети/MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 и IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Только IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "Маскарадинг IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Только IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Входящее устройство" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Файл включения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Входящий %{ipv6?%{ipv4?IPv4 и IPv6:IPv6}:" +"IPv4}%{proto?, протокол %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"с типами %{item.types#%{next?, }%{item}}:%{item." +"name}}}}%{mark?, пометка %{mark.val}}%{helper?, помощник %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Начальный размер хэша" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Входящий трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Внутренний IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Внутренний порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Внутренняя зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Внутризональная пересылка" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Неверная DSCP метка" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Неверное значение ограничения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Недопустимое имя набора" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Ограничение барста (burst)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Ограничить журнал сообщений" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Соответствие по ограничениям" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Ограничение до %{limit.num} пакетов в %{limit.unit}%{limit.burst? барст (burst) %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Включены ограничения маскарадинга" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Ограничивает сопоставление трафика указанной скорости." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP-адрес источника петли (Loopback)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"MASQUERADE — автоматически переписывать на IP-адрес исходящего интерфейса" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Ограничение MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Маскарадинг" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Соответствие" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Соответствие DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Соответствие ICMP типу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Соответствие устройству" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" +"Соответствие перенаправляемого трафика, направленного на заданный IP-адрес." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Соответствие перенаправляемого трафика, направленного на заданный порт " +"назначения или диапазон портов." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" +"Соответствие перенаправляемого трафика от данного IP-адреса или диапазона." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Соответствие перенаправляемого трафика, исходящего от заданного порта " +"источника или диапазона портов." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Соответствие помощнику" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Порт или диапазон портов, входящие подключения на который будут " +"перенаправляться на внутренний порт внутреннего IP-адреса (см. ниже)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Соответствие метки" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Сопоставление трафика с помощью указанного помощника отслеживания соединений." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Соответствие определённой метке брандмауэра или диапазона различных меток." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Соответствие перенаправляемого трафика, использующего указанное исходящее " +"сетевое устройство." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Сопоставляет трафик с указанной DSCP-маркировкой." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Максимальное количество записей" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Максимальная длина" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Максимальное начальное количество совпадающих пакетов: это число будет " +"пополняться на один каждый раз, когда лимит, указанный выше, не будет " +"достигнут, вплоть до этого числа." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Понедельник" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Дни месяца" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Правила NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Правила NAT позволяют точно контролировать IP-адрес источника в исходящем " +"или перенаправляемом трафике." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Название" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Маска сети" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "Отсутствует" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Не полностью совместим с QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" +"Применять правило только для входящих подключений на указанный IP-адрес." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Применять правило только для входящего трафика от этих MAC-адресов." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"Применять правило только для входящего трафика от этого IP-адреса или " +"диапазона адресов." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Применять правило только для входящего трафика от указанного порта или " +"диапазона портов клиентского хоста" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Исходящее устройство" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Исходящая зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Исходящий трафик" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Соответствие поля пакета" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Поля пакета для сопоставления.
Синтаксис: direction_datatype. " +"например: src_port, dest_net.
Направления: src, dst. Типы данных: ip, port, mac, net, set.
Префиксы " +"направления необязательны.
*Примечание: тип данных set не " +"поддерживается в fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Передаёт дополнительные аргументы таблице iptables. Используйте с " +"осторожностью!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Передача аргументов iptables в правилах классификации входящего и исходящего " +"трафика позволяет сопоставлять пакеты, основанные на других критериях, " +"нежели чем интерфейсы или подсети. Эти опции следует использовать с особой " +"осторожностью, так как неверные значения могут привести к нарушению работы " +"правил межсетевого экрана, полностью открывая доступ ко всем службам системы." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Путь к файлу с CIDR, подсетями, IP-адресами хостов и т.д.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Перенаправление портов" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Перенаправленные портов позволяет удалённым компьютерам из Интернета " +"соединяться с компьютером или службой внутри частной локальной сети." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Диапазон портов" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Перенаправлять трафик на указанный порт или диапазон портов внутреннего IP-" +"адреса" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Перенаправлять трафик на указанный IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Обращение к внешнему набору" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Зоны отражения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Требуется аппаратная поддержка NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Использовать маскарадинг только для указанных подсетей-получателей" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Использовать маскарадинг только для указанных подсетей-отправителей" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Использовать протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "IP-адрес для перезаписи" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Перезаписать соответствующий трафик на указанный IP-адрес источника." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Перезаписать соответствующий трафик на указанный порт источника или диапазон " +"портов." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Порт для перезаписи" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Маршрутизация/NAT offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT — перезаписать на указанный IP-адрес источника или порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Суббота" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Установить метку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Значение метки для уже установленных соединений. Формат — значение[/маска]. " +"Если указана маска, то изменяются только те биты, которые установлены в " +"маске." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "Программная разгрузка для маршрутизации/NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Программный flow offloading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "IP-адрес источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "MAC-адрес источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Адрес источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Порт источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Зона источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Определяет, привязывать ли это правило трафика к конкретному входящему или " +"исходящему сетевому устройству." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Определяет, использовать внешний или внутренний IP-адрес для отраженного " +"трафика." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Дата начала (год-мес-день)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Время начала (чч:мм:сс)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Дата окончания (год-мес-день)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Время окончания (чч:мм:сс)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Метод хранения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Воскресенье" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Для правильной работы LuCI необходимо изменить существующую конфигурацию " +"межсетевого экрана." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "Межсетевой экран создает зоны в вашей сети для контроля трафика." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Данные настройки управляют политиками перенаправления трафика между этой " +"(%s) и другими зонами. Трафиком 'зон-назначения' является " +"перенаправленный трафик 'исходящий из %q'. Трафиком " +"'зон-источников' является трафик 'направленый в %q'. Перенаправление является 'однонаправленным', то есть " +"перенаправление из lan в wan 'не' допускает перенаправление трафика " +"из wan в lan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Страница содержит общие свойства %q. Режимы 'Входящий трафик' и " +"'Исходящий трафик' устанавливают политики по умолчанию для трафика, " +"поступающего и покидающего эту зону, в то время как режим " +"'Перенаправление' описывает политику перенаправления трафика между " +"различными сетями внутри зоны. 'Использовать сети' указывает, какие " +"доступные сети являются членами этой зоны." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Четверг" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Временные ограничения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Время UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Для правила включены временные ограничения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Тайм-аут" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"В %{dest}%{dest_device?, интерфейс %{dest_device}}%{dest_ip?, IP-" +"адрес %{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, порт " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"В %{dest}%{dest_device?, через интерфейс %{dest_device}}%{dest_ip?, IP-адрес %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"В %{dest}%{dest_ip?, IP-адрес %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Помощник отслеживания" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Правила для трафика" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Правила для трафика определяют политику прохождения пакетов между разными " +"зонами, например, запрет трафика между некоторыми хостами или открытие WAN-" +"портов маршрутизатора." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Вторник" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Невозможно сохранить содержимое: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Единица измерения: секунды. По умолчанию 0 означает, что запись " +"постоянно добавляется в набор.
Максимум: 2147483 секунд." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Неизвестный или не установленный помощник «‎%s»" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT без имени" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Перенаправление без имени" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Правило без имени" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Безымянный набор" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Зона без имени" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Нераспознанный протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"После нажатия кнопки «Продолжить», разделы правил перенаправления «redirect» " +"типа «SNAT» будут сконвертированы в разделы «nat» и межсетевой экран будет " +"перезапущен для применения и обновления конфигурации." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Использовать внешний IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Использовать внутренний IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Использовать ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Используйте эту опцию для классификации трафика зоны по сетевым устройствам, " +"управляемым не через uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Используйте эту опцию для классификации трафика зоны по источнику или " +"подсети назначения вместо сети или устройств." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Требуется верная метка брандмауэра" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Среда" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Дни недели" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR метка брандмауэра" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR метка" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "firewall4 не запущен на вашем устройстве." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "firewall4 запущен на вашем устройстве." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Зона ⇒ Перенаправления" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Зоны" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Зоны, из которых будут создаваться правила отражения. Если значение не " +"задано, то используется только зона назначения." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "принимать" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "любой" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "любая зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "любой/все" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "применить метку брандмауэра" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "назначить помощника отслеживания соединений" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "автоматически" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "битовая карта" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "Битовая карта только для IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "день" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP-адрес назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: MAC-адрес назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Сеть назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Порт назначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: ipset назначения*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "не перезаписывать" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "не отслеживать" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "не обрабатывать" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 поддерживает ссылки и создание наборов IP-адресов для упрощения " +"согласования больших списков адресов без необходимости создавать по одному " +"правилу на каждый элемент для согласования. Диапазоны портов в наборах " +"ипсетов не поддерживаются firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "портисточника-портназначения" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "хэш" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "час" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Для использования с типами данных Match: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "список" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC-адрес" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "минута" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: Сеть" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "порт: Порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "отклонить" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "секунда" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "набор: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Исходный ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP-адрес источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: MAC-адрес источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: (Под)сеть источника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Исходный порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "это устройство" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "эта новая зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "без ограничений" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "не определено" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "до 65536 записей." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "верная метка брандмауэра" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Программная реализация offloading для маршрутизации/NAT" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Транслировать сетевые адреса и порты (NAT или NAPT) для исходящего из " +#~ "этой зоны трафика. Обычно это включено для зоны wan." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Перенаправление IPv4%{proto?, протокол %{proto#%{next?, }%{item.name}" +#~ "}}%{mark?, метка %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Входящий IPv4%{proto?, протокол %{proto#%{next?, }%{item.types?%{item.name}ICMP с типами %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, метка %{mark.val}}%{helper?, помощник %{helper.inv?%{helper.val}:" +#~ "%{helper.val}}}" diff --git a/luci-app-firewall/po/si/firewall.po b/luci-app-firewall/po/si/firewall.po new file mode 100644 index 000000000..091093c60 --- /dev/null +++ b/luci-app-firewall/po/si/firewall.po @@ -0,0 +1,1431 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2021-03-01 07:55+0000\n" +"Last-Translator: HelaBasa \n" +"Language-Team: Sinhala \n" +"Language: si\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "ඉරිදා" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "බ්‍රහස්පතින්දා" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "අඟහරුවාදා" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "නම් නොකළ නීතිය" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "බදාදා" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "සතියේ දින" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "ඕනෑම" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "විනාඩිය" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "තත්පරය" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "මෙම උපාංගය" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "නිශ්චිතව දක්වා නැත" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/sk/firewall.po b/luci-app-firewall/po/sk/firewall.po new file mode 100644 index 000000000..120d52c17 --- /dev/null +++ b/luci-app-firewall/po/sk/firewall.po @@ -0,0 +1,1472 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2023-07-10 15:50+0000\n" +"Last-Translator: MaycoH \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 5.0-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 a " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP s typmi %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP " +"%{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- pridať IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- pridať MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Prijať %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Zabrániť prepísaniu zdroja" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Presmerovať na %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Vynechať %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Priradiť klasifikáciu DSCP %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Priradiť súhlas pomocníka " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} značka brány " +"firewall %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Automaticky prepisovať zdrojovú " +"adresu IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Nesledovať %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Odmietnuť %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Musí byť určená adresa IP na prepísanie!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Zakázať prepis adresy" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Akcia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Rodina adries, Interná IP adresa sa musia zhodovať" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Rodina adries, zdrojová adresa, cieľová adresa, prepísaná IP adresa sa musia " +"zhodovať" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Pokročilé nastavenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Umožniť „neplatný“ prenos" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Umožniť presmerovanie zo zdrojových zón:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Umožniť presmerovanie do cieľových zón:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Nezáleží" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Akýkoľvek deň" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Obsah bol uložený." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Pokračovať" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Pokryté zariadenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Pokryté siete" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Pokryté podsiete" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Vlastné pravidlá" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Klasifikácia DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Značka DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Vyžaduje sa značka DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Cieľová adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Cieľový port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Cieľová zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Názov zariadenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Zahodiť neplatné pakety" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Povoliť" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Povoliť slučku NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Povoliť ochranu pred útokom SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Povoliť zaznamenávanie tejto zóny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Očakáva sa: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Vonkajšia adresa IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Vonkajší port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Argumenty navyše" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Brána Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Brána Firewall - Vlastné pravidlá" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Brána Firewall - Pravidlá NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Brána Firewall - Presmerovanie portov" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Brána Firewall - Pravidlá prenosu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Brána Firewall - Nastavenia zón" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Migrácia konfigurácie brány Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Presmerovanie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Piatok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Všeobecné nastavenia" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Udeliť prístup ku konfigurácii brány firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Hardvérové odľahčenie toku" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (rozsah)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP sety" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP/siete" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP/siete/MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 a IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Iba IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Iba IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Prichádzajúce zariadenie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Vstup" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Vnútorná adresa IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Vnútorný port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Vnútorná zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Neplatná značka DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Neplatná hodnota obmedzenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Obmedziť správy záznamu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Obmedzenie prenosu podľa určenej frekvencie." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Zdrojová adresa IP slučky" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Maškaráda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Zhoda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Zhoda zariadenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Pondelok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Dni v mesiaci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Pravidlá NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Názov" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Nie je plne kompatibilná so službami QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Odchádzajúce zariadenie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Výstup" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Presmerovania portov" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Presmerovanie portov (port forwarding) umožňuje vzdialeným počítačom na " +"internete pripojenie k určitému počítaču alebo službe v rámci súkromnej " +"siete LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Vyžaduje hardvérovú podporu NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Obmedziť maškarádu na zadané cieľové podsiete" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Obmedziť maškarádu na zadané zdrojové podsiete" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Obmedziť na rodinu adries" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Prepísať adresu IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Prepísanie zhodného prenosu do určenej zdrojovej adresy IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Prepísanie zhodného prenosu do určeného zdrojového portu alebo rozsahu " +"portov." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Prepísať port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Odľahčenie smerovania/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Prepísanie do určenej zdrojovej adresy IP alebo portu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Sobota" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Softvérové odľahčenie toku" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Zdrojová adresa IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Zdrojová adresa MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Zdrojová adresa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Zdrojový port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Zdrojová zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Dátum spustenia (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Čas spustenia (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Dátum zastavenia (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Čas zastavenia (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Nedeľa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Existujúca konfigurácia brány firewall musí byť zmenená, aby mohlo rozhranie " +"LuCI fungovať správne." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Brána firewall vytvorí zóny medzi vašimi sieťovými rozhraniami na ovládanie " +"toku sieťového prenosu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Štvrtok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Časové obmedzenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Čas v UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Pravidlá prenosu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Utorok" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Nie je možné uložiť obsah: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "Nepomenované NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Nepomenované presmerovanie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Nepomenované pravidlo" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Nepomenovaná zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Nerozpoznaný protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Použiť vonkajšiu adresu IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Použiť vnútornú adresu IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Streda" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Dni v týždni" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "Značka XOR brány firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Značka XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zóna ⇒ Presmerovania" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zóny" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "prijať" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "nezáleží" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "akákoľvek zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "deň" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "neprepísať" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "nesledovať" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "zahodiť" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "hodinu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minútu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "zamietnuť" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "sekundu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "toto zariadenie" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "táto nová zóna" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "bez obmedzenia" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "neurčené" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Softvérové odľahčenie smerovania/NAT" diff --git a/luci-app-firewall/po/sr/firewall.po b/luci-app-firewall/po/sr/firewall.po new file mode 100644 index 000000000..bedc9f0f4 --- /dev/null +++ b/luci-app-firewall/po/sr/firewall.po @@ -0,0 +1,1431 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2023-11-30 14:34+0000\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.3-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/sv/firewall.po b/luci-app-firewall/po/sv/firewall.po new file mode 100644 index 000000000..36c2ffbf7 --- /dev/null +++ b/luci-app-firewall/po/sv/firewall.po @@ -0,0 +1,1487 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2024-10-23 12:34+0000\n" +"Last-Translator: Kristoffer Grundström \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.8.2-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- lägg till IP-adress --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- lägg till MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Acceptera %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Förhindra omskrivning av källan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Vidarebefordra till %{dest}%{dest_ip? IP-" +"adress %{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Släpp %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Tilldela DSCP classification " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Tilldela conntrack-hjälpare " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Skriv om källans IP-adress automatiskt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Spåra inte %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Neka %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "En IP som kan skrivas om måste specifieras!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Inaktivera adressomskrivning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Åtgärd" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Ytterligare oformaterade iptables-argument för att klassifiera " +"destinationszonens trafik, t.ex. -p tcp --dport 443 för att " +"bara matcha utgående HTTP-trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Ytterligare oformaterade iptables-argument för att klassifiera " +"källzonens trafik, t.ex. -p tcp --dport 443 för att bara matcha " +"inkommande HTTP-trafik." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adressfamilj, intern IP-adress måste överensstämma" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adressfamilj, källadress, destinationsadress, omskrivnings IP-adress måste " +"överensstämma" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Avancerade inställningar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Tillåt \"ogiltig\" trafik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Tillåt vidarebefordring från källzonerna:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Till vidarebefordring till destinationszonerna::" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Något" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Vilken dag som helst" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" +"Applicera den givna DSCP-klassificeringen eller värde till etablerade " +"anslutningar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Applicera automatiskt conntrack-hjälpare baserat på trafikprotokoll och port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Kommentar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Inställningar för Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack-hjälpare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Innehållet har sparats." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Fortsätt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Täckta enheter" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Nätverk som omfattas" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Subnät som omfattas" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Anpassade regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Skräddarsydda regler tillåter dig att exekvera arbiträra iptables-kommandon " +"som annars inte täcks av brandväggsramverket. Kommandona är exekverade efter " +"varje omstart av brandväggen, direkt efter när standardreglerna har laddats." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP-klassificering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP-märkning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP-märkning obligatorisk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Destinationens adress" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Destinationsport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Destinationens zon" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Enhetens namn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Installera inte extra regler för att blockerade vidarebefordrad trafik med " +"conntrack-tillståndet invalid. Detta kan behövas för komplexa, " +"asymmetriska ruttuppsättningar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Släpp ogiltiga paket" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Aktivera" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Aktivera NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Aktivera loggning i den här zonen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Aktivera IPv4 nätverksadress och portöversättning (NAT4 eller NAPT4) för " +"utåtgående trafik på denna zon. Detta är vanligtvist aktiverat på wan-zonen." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Aktivera IPv6 nätverksadress och portöversättning (NAT6 eller NAPT6) för " +"utåtgående trafik på denna zon." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Aktiverat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Förväntade: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Extern IP-adress" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Extern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Extra argument" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Brandvägg" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Brandvägg - Anpassade regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Brandvägg - NAT-regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Brandvägg - Vidarebefordring av port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Brandvägg - Trafikregler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Brandvägg - Zoninställningar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Vidarebefordra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Fredag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Från %{src}%{src_device?, gränssnitt %{src_device}}%{src_ip?, IP-" +"adress %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Generella inställningar" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Tillåt åtkomst till brandväggskonfigurationen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 och IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Endast IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Endast IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Inmatning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Intern IP-adress" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Intern port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Intern zon" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Ogiltigt gränsvärde" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Begränsa loggmeddelanden" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Maskering" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Matcha" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Matcha DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Matchar ICMP-typ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Matcha enhet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Matcha inkommande trafik dirigerad till den angivna destinationsporten eller " +"portens räckvidd på den här värden" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Måndag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Dagar i månaden" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT-regler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Namn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Inte fullt kompatibel med QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Matcha endast inkommande trafik från de här MAC-adresserna." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" +"Matcha endast inkommande trafik från den här IP-adressen eller räckvidden." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Utmatning" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Vidarebefordringar av port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokoll" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Kräver hårdvarustöd för NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Begränsa till adressfamilj" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Skriv om IP-adress" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Skriv om port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Skriv om till specifik IP-källa eller port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Lördag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "IP-adress för källa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "MAC-adress för källa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Adress för källkod" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Käll-port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Startdatum (åååå-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Starttid (tt.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Stopptid (åååå-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Stopptid (tt.mm.ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Söndag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Den befintliga brandväggskonfigurationen behöver ändras för att LuCi ska " +"fungera som det ska." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Torsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Tidsbegränsningar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Tid enligt UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Trafikregler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Tisdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT utan namn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Regel utan namn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Zon utan namn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Använd en extern IP-adress" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Använd en intern IP-adress" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Onsdag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Veckodagar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Zon ⇒ Vidarebefordringar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Zoner" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "acceptera" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "något" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "alla zoner" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "tilldela conntrack-hjälpare" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "dag" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "skriv inte om" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "spåra inte" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "släpp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "timme" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "minut" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "neka" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "sekund" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "den här enheten" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "den här nya zonen" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "obegränsad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "ospecificerad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Vidarebefordrade IPv4%{proto?, protocol %{proto#%{next?, }%{item." +#~ "name}}}%{mark?, mark %{mark.val}}" diff --git a/luci-app-firewall/po/templates/firewall.pot b/luci-app-firewall/po/templates/firewall.pot new file mode 100644 index 000000000..756e81ffd --- /dev/null +++ b/luci-app-firewall/po/templates/firewall.pot @@ -0,0 +1,1418 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/tr/firewall.po b/luci-app-firewall/po/tr/firewall.po new file mode 100644 index 000000000..a29a38ec7 --- /dev/null +++ b/luci-app-firewall/po/tr/firewall.po @@ -0,0 +1,1661 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2024-03-31 19:53+0000\n" +"Last-Translator: Oğuz Han \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.5-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Yönlendirilen:Gelen}:Giden} %{ipv6?%{ipv4?IPv4 ve " +"IPv6:IPv6}:IPv4}%{proto?, protokol " +"%{proto#%{next?, }%{item.types?%{item." +"name}Türlerle ICMP %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp." +"val}:%{dscp.val}}}%{helper?, yardımcı %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "IP ekle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "MAC ekle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"KABUL ET %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" +"Kaynağın yeniden yazılmasını engelle" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Yönlendir to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Reddet %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"DSCP tanımla classification %{set_dscp}" +"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Bağlantı atama yardımcı " +"%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Ata:XOR} güvenlik duvarı işareti " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Kaynak IP'siniOtomatik olarak yeniden yaz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Takip etme %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"REDDET %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Statik olarak yeniden yaz kaynağa " +"%{snat_ip?IP %{snat_ip}} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Yeniden yazmak için bir IP belirtilmek zorunda!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "KABUL ET - Adres yeniden yazmayı devre dışı bırak" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Eylem" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Bölge hedef trafiğini sınıflandırmak için ek ham iptables bağımsız " +"değişkenleri, ör. Yalnızca giden HTTPS trafiğini eşleştirmek için -p " +"tcp --dport 443." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Bölge kaynak trafiğini sınıflandırmak için ek ham iptables bağımsız " +"değişkenleri, ör. Yalnızca gelen HTTPS trafiğini eşleştirmek için -p " +"tcp --sport 443." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Adres ailesi, Dahili IP adresi eşleşmelidir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" +"Adres ailesi, kaynak adresi, hedef adresi, yeniden yazılan IP adresi " +"eşleşmelidir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Gelişmiş Ayarlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "\"Geçersiz\" trafiğe izin ver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Kaynak bölgelerden gelen yönlendirmeye izin ver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr " Hedef bölgelerden gelen yönlendirmeye izin ver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Herhangi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Herhangi bir gün" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Verilen değerin bitsel XOR değerini ve kurulan bağlantılarda mevcut işaret " +"değerini uygulayın. Biçim değerdir [/mask]. Bir maske belirtilirse, maskede " +"ayarlanan bu bitler sıfırlanır." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Verilen DSCP sınıfını veya değerini kurulan bağlantılara uygulayın." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "Belirtilen bağlantı izleme yardımcısını eşleşen trafiğe atayın." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Otomatik yardımcı atama" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Trafik protokolü ve bağlantı noktasına göre bağlantı yardımcılarını otomatik " +"olarak atayın" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Yorum" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Conntrack Ayarları" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack yardımcıları" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "İçerik kaydedildi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Devam et" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Sayaçlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Kapsanan cihazlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Kapsanan ağlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Kapsanan alt ağlar" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Özel Ayarlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Özel kurallar, güvenlik duvarı çerçevesi tarafından başka şekilde " +"kapsanmayan keyfi iptables komutlarını yürütmenize olanak tanır. Komutlar, " +"her güvenlik duvarı yeniden başlatıldıktan sonra, varsayılan kural seti " +"yüklendikten hemen sonra yürütülür." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP sınıflandırması" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP işareti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP işareti gerekli" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Hedef adres" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Hedef bağlantı noktası" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Hedef bölge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Cihaz adı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Bağlantı durumu invalid olan iletilen trafiği reddetmek için " +"fazladan kurallar yüklemeyin. Bu, karmaşık asimetrik yol kurulumları için " +"gerekli olabilir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Geçersiz paketleri düşür" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Etkinleştir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "NAT Döngü sınamasını etkinleştir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "SYN-flood korumasını etkinleştir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Bu bölgede günlük kaydetmeyi etkinleştir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Bu bölgedeki giden trafik için ağ adresini ve bağlantı noktası çevirisi " +"IPv4'ü (NAT4 veya NAPT4) etkinleştirin. Bu genellikle wan " +"bölgesinde etkinleştirilir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Bu bölgedeki giden trafik için ağ adresini ve bağlantı noktası çevirisi " +"IPv6'yı (NAT6 veya NAPT6) etkinleştir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Etkinleştirildi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Küme için paket ve bayt sayısı takibini etkinleştirir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Beklenen: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Bölge trafiği için izin verilen bağlantı izleme yardımcılarını açıkça seçer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Harici IP adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Harici port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Ekstra argümanlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Ekstra hedef argümanlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Ekstra iptables argümanları" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Ekstra kaynak argümanlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Aile" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Güvenlik Duvarı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Güvenlik duvarı - Özel Kurallar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Güvenlik Duvarı - IP setleri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Güvenlik duvarı - NAT Kuralları" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Güvelik duvarı - Port Yönlendirme" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Güvenlik duvarı - Trafik Kuralları" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Güvenlik duvarı - Bölge Ayarları" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Güvenlik duvarı yapılandırma geçişi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Yönlendir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"İletilen %{ipv6?%{ipv4?IPv4 ve IPv6:IPv6}:" +"IPv4}%{proto? , protokol %{proto#%{sonraki?, >%{item.name}}%{mark?, mark %{mark.val}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Cuma" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Nereden %{src}%{src_device?, arayüz %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Nereden %{src}%{src_device?, arayüz %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Nereden %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Genel Ayarlar" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Güvenlik duvarı yapılandırmasına erişim ver" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Donanım akış boşaltma" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (aralık)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP Setleri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP'ler/Ağlar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP'ler/Ağlar/MAC'ler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 ve IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Yalnızca IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 Maskeleme" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Yalnızca IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Gelen cihaz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Dosyayı İçer" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Gelen %{ipv6?%{ipv4?IPv4 ve IPv6:IPv6}:" +"IPv4}%{proto? , protokol %{proto#%{sonraki?, }%{item.types?%{item.name>% " +"türleriyle ICMP {item.types#%{sonraki?, >%{item:" +"%{item.name}}}%{ mark?, mark %{mark.val}%{helper?, " +"helper %{helper.inv?%{helper.val dışındaki herhangi bir yardımcıyla eşleştir:%{helper.val} }}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "İlk Hash Boyutu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Giriş" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Dahili IP adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "İç bağlantı noktası" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "İç bölge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "Bölge içi ileri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Geçersiz DSCP işareti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Geçersiz sınır değeri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Geçersiz küme adı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Sınır patlaması" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Günlük mesajlarını sınırla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Eşlemeyi sınırla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Eşleşmeyi bununla sınırla %{limit.num} packets per %{limit." +"unit}%{limit.burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Sınırlı maskeleme etkin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Belirtilen oranla eşleşen trafiği sınırlar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Geri döngü kaynak IP'si" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Giden arayüz IP'sine otomatik olarak yeniden yaz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS bağlama" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Maskeleme" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Eşleştir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "DSCP ile eşleştir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "ICMP tipiyle eşleş" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Cihazı eşleştir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Verilen IP adresine yönlendirilen trafiği eşleştirin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Verilen hedef, bağlantı noktası veya bağlantı noktası aralığına " +"yönlendirilen iletilen trafiği eşleştirin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Bu IP veya aralıktan yönlendirilen trafiği eşleştirin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Verilen kaynak bağlantı noktasından veya bağlantı noktası aralığından gelen " +"iletilen trafiği eşleştirin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Yardımcıyı eşleştir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Bu ana bilgisayardaki belirli hedef bağlantı noktasına veya bağlantı noktası " +"aralığına yönlendirilen gelen trafiği eşleştirin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "İşaretleri eşleştir" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Belirtilen bağlantı izleme yardımcısını kullanarak trafiği eşleştirin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Belirli bir güvenlik duvarı işaretiyle veya bir dizi farklı işaretle eşleşir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "Belirtilen giden ağ cihazını kullanarak iletilen trafiği eşleştirir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Belirtilen DSCP işaretini taşıyan trafikle eşleşir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Maks Girişler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Azami Uzunluk" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Eşleşecek maksimum ilk paket sayısı: Bu sayı, bu sayıya kadar yukarıda " +"belirtilen sınıra her ulaşılmadığında bir kez yeniden doldurulur." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Pazartesi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Ayın Günleri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT Kuralları" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"NAT kuralları, giden veya iletilen trafik için kullanmak üzere kaynak IP " +"üzerinde ayrıntılı denetime izin verir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Ad" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmask" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "QoS/SQM ile tam uyumlu değildir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Yalnızca verilen IP adresine yönlendirilen gelen trafiği eşleştirin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Yalnızca bu MAC'lardan gelen trafiği eşleştirin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Yalnızca bu IP veya aralıktan gelen trafiği eşleştirin." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Yalnızca istemci ana bilgisayardaki belirli kaynak bağlantı noktasından veya " +"bağlantı noktası aralığından gelen trafiği eşleştirin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Giden cihaz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Giden bölge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Çıkış" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Paket Alan Eşleşmesi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Eşleşecek paket alanları.
Sözdizimi: direction_datatype. " +"örneğin: src_port, dest_net.
Yol tarifleri: src, " +"dst. Veri türleri: ip, port, mac, net, set.
Yön " +"önekleri isteğe bağlıdır.
*Not: set veri türü fw4'te " +"desteklenmez." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "İptables'a ek argümanlar iletir. Dikkatli kullanın!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Ham iptables argümanlarını kaynak ve hedef trafik sınıflandırma kurallarına " +"geçirmek, paketleri arayüzler veya alt ağlar dışında başka kriterlere göre " +"eşleştirmeye izin verir. Geçersiz değerler güvenlik duvarı kural setini " +"bozabileceğinden ve tüm hizmetleri tamamen açığa çıkarabileceğinden, bu " +"seçenekler son derece dikkatli kullanılmalıdır." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" +"CIDR'lerin, alt ağların, ana bilgisayar IP'lerinin vb. dosyasının yolu.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Port Yönlendirmeleri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Bağlantı noktası yönlendirme, İnternet üzerindeki uzak bilgisayarların özel " +"LAN içindeki belirli bir bilgisayara veya hizmete bağlanmasına izin verir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Bağlantı noktası aralığı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Gelen trafiği dahili ana bilgisayardaki belirli bağlantı noktasına " +"yönlendirin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Gelen trafiği belirtilen dahili ana bilgisayara yönlendirin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Harici Sete Bakın" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "Yansıma bölgeleri" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Donanımsal NAT desteği gerektirir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Maskelendirmeyi verilen hedef alt ağlarla sınırla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Maskelemeyi verilen kaynak alt ağlarla kısıtla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Adres ailesiyle sınırla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "IP adresini yeniden yaz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Eşleşen trafiği belirtilen kaynak IP adresine yeniden yazın." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Eşleşen trafiği belirtilen kaynak bağlantı noktasına veya bağlantı noktası " +"aralığına yeniden yazın." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Bağlantı noktasını yeniden yaz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Yönlendirme / NAT Aktarımı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Belirli bir kaynak IP'sine veya bağlantı noktasına yeniden yaz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Cumartesi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "İşaret ayarla" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Kurulan bağlantılarda verilen işaret değerini ayarlayın. Biçim değerdir [/" +"mask]. Bir maske belirtilirse, sadece maskede ayarlanan bitler değiştirilir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Yazılım tabanlı akış boşaltma" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Kaynak IP Adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Kaynak MAC adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Kaynak adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Kaynak portu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Kaynak bölgesi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Bu trafik kuralının belirli bir gelen veya giden ağ cihazına bağlanıp " +"bağlanmayacağını belirtir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Yansıtılan trafik için harici veya dahili IP adresinin kullanılıp " +"kullanılmayacağını belirtir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Başlangıç Tarihi (yyyy-aa-gg)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Başlangıç Zamanı (sa.dd.sn)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Bitiş Tarihi (yyyy-aa-gg)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Durdurma Zamanı (sa.dd.sn)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Depolama Yöntemi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Pazar" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"LuCI'nin düzgün çalışması için mevcut güvenlik duvarı yapılandırmasının " +"değiştirilmesi gerekir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Güvenlik duvarı, ağ trafiği akışını kontrol etmek için ağ arayüzleriniz " +"üzerinde bölgeler oluşturur." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Aşağıdaki seçenekler, bu bölge (%s) ile diğer bölgeler arasındaki " +"yönlendirme politikalarını kontrol eder. Hedef bölgeler " +"yönlendirilen trafiği eşleştirin hedeflenen %q. Kaynak " +"bölgeler diğer bölgelerden gelen trafiği eşleştirin hedeflenen " +"%q. İletim kuralı tek yönlüdür,Örneğin. lan'dan wan'a " +"yönlendirme, wan'dan lan'a yönlendirme izni anlamına gelmez." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Bu bölüm,% q öğesinin ortak özelliklerini tanımlar. giriş ve " +"çıkış seçenekleri, bu bölgeye giren ve çıkan trafik için varsayılan " +"politikaları ayarlarken, yönlendir seçeneği farklı ağlar arasında " +"yönlendirilen trafik için politikayı açıklar bölge içinde. Kapsanan ağla " +", hangi kullanılabilir ağların bu bölgenin üyesi olduğunu belirtir." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Perşembe" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Zaman Kısıtlamaları" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "UTC Zamanı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Bu kural için zaman kısıtlamaları etkinleştirildi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Zaman aşımı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Buraya %{dest}%{dest_device?, arayüz %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Buraya %{dest}%{dest_device?, arayüz aracılığıyla %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Buraya %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "İzleme yardımcısı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Trafik kuralları" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Trafik kuralları, örneğin belirli ana bilgisayarlar arasındaki trafiği " +"reddetmek veya yönlendiricide WAN bağlantı noktalarını açmak gibi farklı " +"bölgeler arasında seyahat eden paketler için politikalar tanımlar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Salı" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "İçerik kaydedilemiyor: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Birim: saniye. Varsayılan 0, girişin sete kalıcı olarak " +"eklendiği anlamına gelir.
Maks: 2147483 saniye." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Bilinmeyen veya yüklenmemiş bağlantı yolu yardımcısı \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "İsimsiz NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "İsimsiz yönlendirme" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "İsimsiz kural" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Adsız küme" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "İsimsiz bölge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Bilinmeyen protokol" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"\"Devam\" düğmesine basıldığında, \"SNAT\" hedefli \"yeniden yönlendirme\" " +"bölümleri \"nat\" bölümlerine dönüştürülecek ve güncellenmiş yapılandırmayı " +"uygulamak için güvenlik duvarı yeniden başlatılacaktır." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Harici bir IP adresi kullan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Dahili bir IP adresi kullan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "ipset'i kullan" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Bölge trafiğini ham, uci yönetilmeyen ağ cihazlarına göre " +"sınıflandırmak için bu seçeneği kullanın." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Bölge trafiğini ağlar veya cihazlar yerine kaynak veya hedef alt ağa göre " +"sınıflandırmak için bu seçeneği kullanın." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Geçerli güvenlik duvarı işareti gerekli" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Çarşamba" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Hafta içi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR güvenlik duvarı işareti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR işareti" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Cihazınız firewall4'ü çalıştırmıyor." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Cihazınız firewall4'ü çalıştırıyor." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Bölge ⇒ Yönlendirmeler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Bölgeler" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" +"Yansıma kurallarının oluşturulacağı bölgeler. Ayarlanmadığı takdirde " +"yalnızca hedef bölge kullanılır." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "kabul et" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "herhangi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "herhangi bir bölge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "herhangi biri/hepsi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "güvenlik duvarı işaretini uygula" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "bağlantı yardımcısı atama" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "otomatik" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap yalnızca ipv4'tür" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "gün" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: Hedef IP'si" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Hedef MAC adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Hedef (alt)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Hedef Bağlantı Noktası" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: Hedef ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "yeniden yazma" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "izleme" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "düşür" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"Firewall4, eşleşecek öğe başına bir kural oluşturmaya gerek kalmadan büyük " +"adres listelerinin eşleştirilmesini kolaylaştırmak için IP kümelerine " +"referans vermeyi ve oluşturmayı destekler. ipset'lerdeki bağlantı noktası " +"aralıkları güvenlik duvarı4 tarafından desteklenmez.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "hash" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "saat" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Eşleştirme veri türleriyle kullanım için: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "liste" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "dakika" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (alt)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "reddet" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "ikinci" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: Kaynak ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: Kaynak IP'si" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Kaynak MAC adresi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Kaynak (alt)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Kaynak Bağlantı Noktası" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "bu cihaz" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "bu yeni bölge" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "sınırsız" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "belirtilmemiş" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "65536 girişe kadar." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "geçerli güvenlik duvarı işareti" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Yazılım tabanlı boşaltma, yönlendirme/NAT için" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "Bu bölgede giden trafik için ağ adresi ve bağlantı noktası çevirisini " +#~ "(NAT veya NAPT) etkinleştir. Bu genellikle wan bölgesinde " +#~ "etkinleştirilir." + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Yönlendirilen IPv4 %{proto?, protocol %{proto#%{next?, }%{item.name}" +#~ "}}%{mark?, işaretle %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Gelen IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}Türlerle ICMP %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, yardımcı %{helper.inv?%{helper." +#~ "val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/uk/firewall.po b/luci-app-firewall/po/uk/firewall.po new file mode 100644 index 000000000..fd83e1770 --- /dev/null +++ b/luci-app-firewall/po/uk/firewall.po @@ -0,0 +1,1631 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"PO-Revision-Date: 2024-10-17 17:10+0000\n" +"Last-Translator: Andrew \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 5.8-rc\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Переспрямовування:Вхідний}:Вихідний} %{ipv6?%{ipv4?IPv4 та IPv6:IPv6}:IPv4}%{proto?, протокол " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP із типами %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, позначка " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}}}%{helper?, помічник %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- додати IP-адресу --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- додати MAC-адресу --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Приймати %{src?%{dest?переспрямований:" +"вхідний}:вихідний} трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Запобігати перезапису джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Переспрямовувати на %{dest}%{dest_ip? IP-" +"адресу %{dest_ip}}%{dest_port? порт %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Відхиляти %{src?%{dest?переспрямований:" +"вхідний}:вихідний} трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Призначити DSCP класифікатор " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Призначити помічника відслідковування " +"з'єднань %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Призначити мітку:XOR мітки} " +"брандмауера %{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" +"Автоматично перезаписувати IP-адресу " +"джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Не відслідковувати %{src?%{dest?" +"переспрямований:вхідний}:вихідний} трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Відхиляти %{src?%{dest?переспрямований:" +"вхідний}:вихідний} трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Статично перезаписувати %{snat_ip?IP-адресу " +"джерела на %{snat_ip}} %{snat_port?порт джерела на " +"%{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Потрібно вказати IP-адресу для перезапису!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT — Вимкнути перезапис адреси" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Дія" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Додаткові аргументи raw iptables для класифікації трафіку " +"призначення зони, наприклад, -p tcp --dport 443, щоб зіставляти " +"лише вихідний трафік HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Додаткові аргументи raw iptables для класифікації трафіку джерела " +"зони, наприклад, -p tcp --sport 443, щоб зіставляти лише " +"вхідний трафік HTTPS." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Розширені налаштування" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Дозволити \"неправильний\" трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Дозволити переспрямовування від зон джерела:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Дозволити переспрямовування до зон призначення:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Будь-який" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Будь-який день" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Застосувати побітове XOR заданого та наявного значень мітки для вже " +"встановлених з'єднань. Формат — значення[/маска]. Якщо маску вказано, то " +"біти, встановлені в масці, обнуляються." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Застосувати заданий клас або значення DSCP до встановлених з'єднань." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" +"Призначити вказаного помічника відслідковування з'єднань для відповідного " +"трафіку." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Автоматичне призначення помічника" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Автоматично призначати помічників відслідковування з'єднань (Conntrack) на підставі протоколу та " +"порту трафіку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" +"Параметри відслідковування з'єднань (Conntrack)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" +"Помічники відслідковування з'єднань (Conntrack)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Вміст збережено." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Продовжити" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Охоплені пристрої" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Охоплені мережі" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Охоплені підмережі" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Настроювані правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Настроювані правила дозволяють виконувати довільні команди iptables, які в іншому випадку не охоплено в межах брандмауера. Команди " +"виконуються після кожного перезавантаження брандмауера, відразу після " +"завантаження типового набору правил." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "класифікація DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Позначка DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Потрібна позначка DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Адреса призначення" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Порт призначення" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Зона призначення" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Назва пристрою" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Не встановлювати додаткові правила для відхилення переспрямованого трафіку " +"зі станом відслідковування з'єднань invalid. Це може знадобитися " +"для складних налаштувань асиметричного маршруту." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Відхиляти помилкові пакети" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Увімкнути" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Увімкнути NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Увімкнути захист від SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Увімкнути реєстрування у цій зоні" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Увімкнено" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Очікується: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"В явному вигляді дозволені помічники відслідковування з'єднань для трафіку " +"зони" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Зовнішня IP-адреса" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "Зовнішній порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Додаткові аргументи" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Додаткові аргументи для призначення" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Додаткові аргументи iptables" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Додаткові аргументи для джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Брандмауер" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Брандмауер — Настроювані правила" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Брандмауер — Правила NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Брандмауер — Переспрямовування портів" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Брандмауер — Правила трафіку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Брандмауер — Параметри зон" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Переміщення конфігурації брандмауера" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Переспрямовування" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "П'ятниця" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Із %{src}%{src_device?, інтерфейс %{src_device}}%{src_ip?, IP-" +"адреса %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт " +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Із %{src}%{src_device?, інтерфейс %{src_device}}%{src_ip?, IP-" +"адреса %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC-адреса " +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Із %{src}%{src_ip?, IP-адреса %{src_ip#%{next?, }%{item.ival}}}%{src_port?, порт %{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC-адреса %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Загальні налаштування" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Надати доступ до конфігурування брандмауера" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Апаратні засоби розвантаження потоку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 та IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Лише IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Лише IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Вхідний пристрій" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Вхідний трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Внутрішня IP-адреса" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Внутрішній порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Внутрішня зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Неприпустима позначка DHCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Неприпустиме значення обмеження" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Обмеження блоку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Обмеження повідомлень журналу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Обмеження зіставляння" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Обмеження зіставляння до %{limit.num} пакетів на %{limit." +"unit}%{limit.burst? блок %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Увімкнено обмежене маскування" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Обмеження зіставляння трафіку із вказаною швидкістю." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "IP-адреса джерела зворотної петлі" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" +"MASQUERADE - Автоматично переписувати на IP-адресу вихідного інтерфейсу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "Обмежування MSS" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Підміна" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Зіставляти" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Зіставляти DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Зіставляти ICMP типу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Зіставляти пристрою" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" +"Зіставляння переспрямованого трафіку, спрямованого на вказану IP-адресу." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Зіставляння переспрямованого трафіку, спрямованого на вказаний порт " +"призначення або діапазон портів." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Зіставляння переспрямованого трафіку від цієї IP-адреси або діапазону." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Зіставляння переспрямованого трафіку, що походить із заданого порту джерела " +"або діапазону портів." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Зіставляти помічнику" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Зіставляти вхідний трафік, спрямований на заданий порт призначення або " +"діапазон портів цього вузла" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Зіставляти позначці" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" +"Зіставляти трафік за допомогою вказаного помічника відслідковування з'єднань." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" +"Зіставляти вказаній позначці брандмауера або діапазону різних позначок." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" +"Зіставляння переспрямованого трафіку за допомогою вказаного вихідного " +"мережевого пристрою." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Зіставляти трафік із вказаною позначкою DSCP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Максимальна початкова кількість пакетів, що зіставляються: це число " +"збільшується на одиницю щоразу, коли вказане вище обмеження не досягнуто, аж " +"до цього числа." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Понеділок" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Дні місяця" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Правила NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Правила NAT дозволяють тонко контролювати IP-адресу джерела, що " +"використовується для вихідного чи переспрямованого трафіку." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Назва" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Не повністю сумісно з QoS / SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Зіставляти тільки вхідний трафік, спрямований на вказану IP-адресу." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Зіставляти тільки вхідний трафік від цих MAC-адрес." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Зіставляти тільки вхідний трафік від цього IP чи діапазону." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Зіставляти тільки вхідний трафік, що виникає на заданому порту джерела або " +"діапазоні портів вузла клієнта" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Вихідний пристрій" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Вихідна зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Вихідний трафік" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" +"Передавання додаткових аргументів для IPTables. Використовуйте з обережністю!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Передавання аргументів raw iptables до правил класифікації вихідного трафіку " +"та трафіку призначення дозволяє зіставляти пакети на підставі інших " +"критеріїв, ніж інтерфейси чи підмережі. Ці параметри слід використовувати з " +"особливою обережністю, оскільки невірні значення можуть призвести до " +"порушення набору правил брандмауера, повністю відкриваючи всі служби." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Переспрямовування портів" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Переспрямовування портів дозволяє віддаленим комп'ютерам з Інтернету " +"підключатися до певного комп'ютера або служби у приватній мережі." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" +"Переспрямувати відповідний вхідний трафік на заданий порт внутрішнього вузла" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Переспрямувати відповідний вхідний трафік на заданий внутрішній вузол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Необхідна апаратна підтримка NAT." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Обмежити підміну заданими підмережами призначення" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Обмежити підміну заданими підмережами джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Обмежити сімейство протоколів" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "IP-адреса для перезапису" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Перезаписати відповідний трафік на вказану IP-адресу джерела." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" +"Перезаписати відповідний трафік на вказаний порт джерела або діапазон портів." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Порт для перезапису" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Розвантаження маршрутизації/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Перезаписати на вказану IP-адресу джерела або порт" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Субота" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Установити позначку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Встановіть задане значення позначки для встановлених з'єднаннях. Формат — " +"значення[/маска]. Якщо вказано маску, то змінюються лише ті біти, які " +"встановлені в масці." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Програмне розвантаження потоку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "IP-адреса джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "MAC-адреса джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Адреса джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Порт джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Зона джерела" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Визначає, чи слід прив'язувати це правило трафіку до певного вхідного або " +"вихідного мережевого пристрою." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Визначає, чи використовувати зовнішню або внутрішню IP-адресу для відбитого " +"трафіку." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Дата початку (рррр-мм-дд)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Час початку (гг:хх:сс)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Дата зупинки (рррр-мм-дд)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Час зупинки (гг:хх:сс)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Неділя" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Для належного функціонування LuCI потрібно змінити існуючу конфігурацію " +"брандмауера." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"Брандмауер створює зони поверх ваших мережевих інтерфейсів для управління " +"потоком мережевого трафіку." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Опції, наведені нижче, керують політиками переспрямовування між цією (%s) та " +"іншими зонами. Зони призначення покриваються переспрямованим " +"трафіком, що виходить з %q. Зони джерела " +"покриваються трафіком з інших зон, переспрямованим на %q. " +"Правило переспрямовування є односпрямованим, тобто, спрямовування " +"від LAN до WAN не означає, що є також дозвіл спрямовувати від WAN " +"до LAN." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Цей розділ визначає загальні властивості %q. Параметри вхідний і " +"вихідний задають типову політику для трафіку на вході й виході з " +"цієї зони, а параметр переспрямовування описує політику " +"спрямовування трафіку між різними мережами в межах зони. Пункт Покриті " +"мережі визначає, які доступні мережі є членами цієї зони." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Четвер" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Часові обмеження" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Час в UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Для цього правила ввімкнено обмеження часу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Часове обмеження" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"До %{dest}%{dest_device?, інтерфейс %{dest_device}}%{dest_ip?, IP-" +"адреса %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"До %{dest}%{dest_device?, через інтерфейс %{dest_device}}%{dest_ip?, IP-адреса %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"До %{dest}%{dest_ip?, IP-адреса %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, порт %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Помічник відслідковування" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Правила трафіку" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Правила трафіку визначають політику для пакетів, що пересилаються між " +"різними зонами, наприклад, відхиляти трафік між певними вузлами або відкрити " +"порти WAN на маршрутизаторі." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Вівторок" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Не вдалося зберегти вміст: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" +"Невідомий або не інстальований помічник відслідковування з'єднань \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT без назви" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Переспрямовування без назви" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Правило без назви" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Зона без назви" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Нерозпізнаний протокол" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Після натискання кнопки \"Продовжити\" розділи \"redirect\" з цільовою " +"\"SNAT\" буде перетворено на розділи \"nat\", і брандмауер буде перезапущено " +"для застосування оновленої конфігурації." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Використовувати зовнішню IP-адресу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Використовувати внутрішню IP-адресу" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Використовуйте цей параметр для класифікації трафіку зон за мережевими " +"пристроями raw, які не управляються через uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Використовуйте цей параметр для класифікації трафіку зон за підмережею " +"джерела чи призначення замість мереж або пристроїв." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Потрібна дійсна позначка брандмауера" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Середа" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Дні тижня" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "XOR позначки брандмауера" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "XOR позначки" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Зона ⇒ Переспрямовування" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Зони" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "приймати" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "будь-який" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "будь-якої зони" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "застосувати позначку брандмауера" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "призначити помічника відслідковування з'єднань" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "день" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "не переписувати" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "не відстежувати" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "опускати" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "година" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "хвилина" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "відхиляти" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "секунду" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "цього пристрою" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "ця нова зона" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "необмежено" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "невизначено" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "дійсна позначка брандмауера" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Програмне розвантаження для маршрутизації/NAT" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "Переспрямовування IPv4%{proto?, протокол %{proto#%{next?, }%{item." +#~ "name}}}%{mark?, позначка %{mark.val}}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "Вхідний IPv4%{proto?, протокол %{proto#%{next?, }%{item.types?%{item.name}ICMP із типами %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, позначка %{mark.val}}%{helper?, помічник %{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/ur/firewall.po b/luci-app-firewall/po/ur/firewall.po new file mode 100644 index 000000000..96451deb5 --- /dev/null +++ b/luci-app-firewall/po/ur/firewall.po @@ -0,0 +1,1430 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2021-01-07 17:03+0000\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: ur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.4.1-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/vi/firewall.po b/luci-app-firewall/po/vi/firewall.po new file mode 100644 index 000000000..58c63f472 --- /dev/null +++ b/luci-app-firewall/po/vi/firewall.po @@ -0,0 +1,1594 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-07-13 20:44+0000\n" +"Last-Translator: phannhanhn201 \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.7-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?Được chuyển tiếp:Đến}:Ra} %{ipv6?%{ipv4?IPv4 và " +"IPv6:IPv6}:IPv4}%{proto?, giao thức " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP với các loại %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp.val}:%{dscp.val}" +"}}%{helper?, helper %{helper.inv?%{helper.val}:" +"%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- thêm IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- thêm MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"Chấp nhận %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "Ngăn chặn viết lại nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"Chuyển hướng to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? cổng%{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"Bỏ %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"Gắn DSCP phân loại %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"Gán conntrack trợ giúp%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Gán:XOR} đánh dấu trường " +"lửa%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "Tự động viết lại IP nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"Không theo dõi %{src?%{dest?forward:" +"input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"Từ chối %{src?%{dest?tiến về:đầu vào}:đầu " +"ra}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"Viết lại tĩnh thành nguồn %{snat_ip?IP " +"%{snat_ip}} %{snat_port?cổng %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "Phải chỉ định địa chỉ IP viết lại!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "ACCEPT - Vô hiệu hóa viết lại địa chỉ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "Hành động" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"Các đối số thô iptables bổ sung để phân loại lưu lượng đích vùng, " +"ví dụ: -p tcp --dport 443 để chỉ khớp lưu lượng HTTPS đi ra." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"Các đối số thô iptables bổ sung để phân loại lưu lượng nguồn vùng, " +"ví dụ: -p tcp --sport 443 để chỉ khớp lưu lượng HTTPS đến." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "Họ địa chỉ, địa chỉ IP nội bộ phải khớp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "Họ địa chỉ, địa chỉ nguồn, địa chỉ đích, địa chỉ IP viết lại phải khớp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "Cài đặt Nâng cao" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "Cho phép lưu lượng \"không hợp lệ\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "Cho phép tiến về từ vùng nguồn:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "Cho phép tiến về đến vùng đích:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "Bất kỳ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "Bất kỳ ngày nào" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"Áp dụng phép XOR bit cho giá trị đã cho và giá trị đánh dấu hiện có trên các " +"kết nối đã thiết lập. Định dạng là value[/mask]. Nếu có mặt nạ được chỉ " +"định, thì các bit được thiết lập trong mặt nạ sẽ bị gán giá trị 0." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "Áp dụng lớp hoặc giá trị DSCP đã cho cho các kết nối đã thiết lập." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "Gán trình theo dõi kết nối đã chỉ định cho lưu lượng khớp." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "Gán tự động trình theo dõi kết nối" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" +"Tự động gán trình theo dõi kết nối dựa trên giao thức và cổng lưu lượng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "Bình luận" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Cài đặt Conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Trình theo dõi kết nối" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "Nội dung đã được lưu." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "Tiếp tục" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "Bộ đếm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "Thiết bị được bao phủ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "Mạng được bao phủ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "Mạng con được bao phủ" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "Quy tắc Tùy chỉnh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"Quy tắc tùy chỉnh cho phép bạn thực thi các lệnh iptables tùy ý mà không " +"được bao phủ bởi khung tường lửa. Các lệnh được thực thi sau mỗi lần khởi " +"động lại tường lửa, ngay sau khi tập luật mặc định đã được tải." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "Phân loại DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "Đánh dấu DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "Đánh dấu DSCP bắt buộc" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "Địa chỉ đích" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "Cổng đích" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "Vùng điểm đến" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "Tên thiết bị" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"Không cài đặt các quy tắc bổ sung để từ chối giao thông chuyển tiếp có trạng " +"thái conntrack invalid. Điều này có thể cần thiết cho các thiết lập " +"tuyến đường không đối xứng phức tạp." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "Bỏ qua nhưng gói không hợp lý" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "Bật lên" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "Bật NAT Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "Kích hoạt bảo vệ SYN-flood" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "Bật ghi nhật ký trên vùng này" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"Bật chuyển đổi địa chỉ mạng và cổng IPv4 (NAT4 hoặc NAPT4) cho giao thông ra " +"ngoài trên vùng này. Thông thường, điều này được kích hoạt trên vùng " +"wan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" +"Bật chuyển đổi địa chỉ mạng và cổng IPv6 (NAT6 hoặc NAPT6) cho giao thông ra " +"ngoài trên vùng này." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "Kích Hoạt" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "Bật theo dõi số gói tin và số byte cho bộ sưu tập." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "Đang chờ: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" +"Chọn rõ ràng các trình hỗ trợ theo dõi kết nối được phép cho giao thông vùng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "Địa chỉ IP bên ngoài" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "External port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "Các tham số bổ sung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "Các tham số đích bổ sung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "Các tham số iptables bổ sung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "Các tham số nguồn bổ sung" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "Gia đình" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "Firewall" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "Tường lửa - Quy tắc Tùy chỉnh" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "Tường lửa - Bộ IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "Tường lửa - Quy tắc NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "Tường lửa - Chuyển tiếp Cổng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "Tường lửa - Quy tắc Giao thông" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "Tường lửa - Cài đặt Vùng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "Di cư cấu hình tường lửa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "Forward" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Chuyển tiếp %{ipv6?%{ipv4?IPv4IPv6:IPv6}:IPv4}%{proto?, giao thức %{proto#%{next?, }%{item.name}" +"}}%{mark?, đánh dấu %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "Thứ 6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"Từ %{src}%{src_device?, giao diện %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, cổng %{src_port#%{next?, }" +"%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"Từ %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"Từ %{src}%{src_ip?, Địa chỉ IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, cổng %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "Các cài đặt chung" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "Cấp quyền truy cập vào cấu hình tường lửa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "Xả luồng phần cứng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (phạm vi)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "Các bộ IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP/Mạng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP/Mạng/MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 và IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "Chỉ IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "Chỉ IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "Thiết bị đầu vào" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "Bao gồm Tệp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Đầu vào %{ipv6?%{ipv4?IPv4IPv6:IPv6}:" +"IPv4}%{proto?, giao thức %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"với các loại %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, đánh dấu %{mark.val}}%{helper?, trợ giúp " +"%{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "Kích thước băm Ban đầu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "Input" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "Địa chỉ IP nội bộ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "Cổng nội bộ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "Vùng nội bộ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "Đánh dấu DSCP không hợp lệ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "Giá trị giới hạn không hợp lệ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "Tên thiết lập không hợp lệ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "Số lượng tắt đột ngột" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "Giới hạn tin nhắn nhật ký" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "Khớp giới hạn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"Giới hạn khớp %{limit.num} gói tin mỗi %{limit.unit}%{limit.burst? với cú pháp %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "Bật masquerading có giới hạn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "Giới hạn khớp lưu lượng với tốc độ được chỉ định." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "Địa chỉ IP nguồn Loopback" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - Tự động viết lại thành địa chỉ IP giao diện ra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS Clamping" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "Masquerading" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "Khớp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "Khớp DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "Khớp loại ICMP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "Khớp thiết bị" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "Khớp lưu lượng chuyển tiếp được chỉ định đến địa chỉ IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" +"Khớp lưu lượng chuyển tiếp được chỉ định đến cổng đích hoặc khoảng cổng." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "Khớp lưu lượng chuyển tiếp từ địa chỉ IP này hoặc khoảng IP." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" +"Khớp lưu lượng chuyển tiếp xuất phát từ cổng nguồn hoặc khoảng cổng được chỉ " +"định." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "Khớp trợ giúp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" +"Khớp lưu lượng đến đích được chỉ định đến cổng đích hoặc khoảng cổng trên " +"máy chủ này" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "Khớp nhãn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "Khớp lưu lượng sử dụng trình hỗ trợ theo dõi kết nối đã chỉ định." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "Khớp nhãn tường lửa cụ thể hoặc một dải nhãn khác nhau." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "Khớp lưu lượng chuyển tiếp sử dụng thiết bị mạng đầu cuối đã chỉ định." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "Khớp lưu lượng mang nhãn DSCP đã chỉ định." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "Số lượng tối đa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "Độ dài tối đa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"Số lượng gói ban đầu tối đa để khớp: số này sẽ được nạp lại một lần mỗi khi " +"không đạt đến giới hạn được chỉ định ở trên, lên tới số này." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "Thứ 2" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "Tháng Ngày" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "Quy tắc NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" +"Các quy tắc NAT cho phép kiểm soát chi tiết địa chỉ IP nguồn được sử dụng " +"cho lưu lượng đi ra hoặc chuyển tiếp." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "Tên" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "Netmask" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "Không hoàn toàn tương thích với QoS/SQM." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "Chỉ khớp lưu lượng đến địa chỉ IP cụ thể." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "Chỉ khớp lưu lượng đến từ các địa chỉ MAC này." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "Chỉ khớp lưu lượng đến từ địa chỉ IP hoặc dải cụ thể này." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" +"Chỉ khớp lưu lượng đến từ cổng nguồn hoặc dải cổng cụ thể trên máy khách" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "Thiết bị đầu cuối ra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "Vùng đầu cuối ra" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "Output" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "Khớp trường gói tin" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"Các trường gói tin để khớp.
Cú pháp: hướng_loạitruong. Ví dụ: " +"src_port, dest_net.
Hướng: src, dst. Loại dữ " +"liệu: ip, port, mac, net, set.
Tiền tố hướng là tùy chọn." +"
*Ghi chú: loại dữ liệu set không được hỗ trợ trong fw4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "Truyền các đối số bổ sung cho iptables. Sử dụng cẩn thận!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"Việc truyền các đối số iptables nguyên thủy vào các quy tắc phân loại lưu " +"lượng nguồn và đích cho phép khớp các gói dựa trên các tiêu chí khác với " +"giao diện hoặc mạng con. Các tùy chọn này nên được sử dụng cẩn thận vì các " +"giá trị không hợp lệ có thể làm hỏng tập luật tường lửa, hoàn toàn tiết lộ " +"tất cả các dịch vụ." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "Đường dẫn đến tệp chứa CIDR, mạng con, IP máy chủ, v.v.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "Chuyển tiếp cổng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" +"Chuyển tiếp cổng cho phép các máy tính từ xa trên Internet kết nối tới một " +"máy tính cụ thể hoặc dịch vụ trong mạng LAN riêng." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "Dải cổng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "Giao thức" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "Chuyển hướng lưu lượng đến cổng được chỉ định trên máy chủ nội bộ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "Chuyển hướng lưu lượng đến máy chủ nội bộ được chỉ định" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "Tham chiếu tới tập hợp ngoại vi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "Yêu cầu hỗ trợ NAT phần cứng." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "Hạn chế Masquerading cho các mạng con đích được chỉ định" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "Hạn chế Masquerading cho các mạng con nguồn được chỉ định" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "Giới hạn địa chỉ gia đình" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "Ghi đè địa chỉ IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "Ghi đè lưu lượng khớp với địa chỉ IP nguồn được chỉ định." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "Ghi đè lưu lượng khớp với cổng nguồn hoặc dải cổng được chỉ định." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "Ghi đè cổng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "Bật tính năng Offloading cho định tuyến/NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - Ghi đè lên địa chỉ IP hoặc cổng nguồn cụ thể" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "Thứ 7" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "Đặt đánh dấu" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"Đặt giá trị đánh dấu được chỉ định cho các kết nối đã thiết lập. Định dạng " +"là value[/mask]. Nếu có chỉ định mặt nạ, chỉ những bit được đặt trong mặt nạ " +"mới được thay đổi." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "Xả luồng dựa trên phần mềm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "Đỉa chỉ MAC nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "Địa chỉ MAC nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "Đỉa chỉ nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "Source port" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "Source zone" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" +"Xác định xem có liên kết luật lưu lượng này với thiết bị mạng đầu vào hoặc " +"đầu ra cụ thể hay không." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" +"Xác định xem có sử dụng địa chỉ IP ngoại vi hoặc nội bộ cho lưu lượng phản " +"chiếu hay không." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "Ngày bắt đầu (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "Thời gian bắt đầu (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "Ngày kết thúc (yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "Thời gian kết thúc (hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "Phương pháp lưu trữ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "Chủ Nhật" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" +"Cấu hình tường lửa hiện có cần được thay đổi để LuCI hoạt động đúng cách." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" +"The firewall tạo zones trên giao diện mạng lưới để điều triển sự dòng lưu " +"thông của mạng." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"Các tùy chọn dưới đây kiểm soát chính sách chuyển tiếp giữa vùng này (%s) và " +"các vùng khác. Vùng đích áp dụng cho lưu lượng được chuyển tiếp " +"xuất phát từ %q. Vùng nguồn khớp lưu lượng được " +"chuyển tiếp từ các vùng khác đích đến %q. Quy tắc chuyển " +"tiếp là một chiều, ví dụ: một chuyển tiếp từ lan đến wan không bao gồm quyền chuyển tiếp từ wan đến lan." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"Phần này xác định các thuộc tính chung của %q. Các tùy chọn input " +"và output đặt chính sách mặc định cho lưu lượng nhập và xuất khỏi " +"vùng này trong khi tùy chọn forward mô tả chính sách cho lưu lượng " +"chuyển tiếp giữa các mạng khác nhau trong vùng. Mạng bao gồm chỉ " +"định các mạng có sẵn là thành viên của vùng này." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "Thứ 5" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "Hạn chế Thời gian" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "Thời gian theo UTC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "Hạn chế thời gian được bật cho quy tắc này" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "Quá thời gian" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}
}}" +msgstr "" +"Đến %{dest}%{dest_device?, giao diện %{dest_device}}%{dest_ip?, " +"IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, cổng %{dest_port#%{next?, }" +"%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Đến %{dest}%{dest_device?, qua giao diện %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, cổng " +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"Đến %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, cổng %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "Bộ trợ giúp theo dõi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "Quy tắc Lưu lượng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"Quy tắc giao thông xác định các chính sách cho các gói tin đi giữa các vùng " +"khác nhau, ví dụ như từ chối giao thông giữa các máy chủ nhất định hoặc mở " +"cổng WAN trên bộ định tuyến." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "Thứ 3" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "Không thể lưu nội dung: %s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"Đơn vị: giây. Mặc định 0 có nghĩa là mục được thêm vào bộ vĩnh " +"viễn.
Tối đa: 2147483 giây." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "Trợ giúp conntrack không xác định hoặc chưa cài đặt \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "NAT không có tên" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "Chuyển tiếp không có tên" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "Quy tắc không có tên" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "Bộ không có tên" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "Vùng không có tên" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "Giao thức không được nhận dạng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"Khi nhấn \"Tiếp tục\", các phần \"chuyển hướng\" với mục tiêu \"SNAT\" sẽ " +"được chuyển đổi thành các phần \"nat\" và tường lửa sẽ được khởi động lại để " +"áp dụng cấu hình đã cập nhật." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "Sử dụng địa chỉ IP bên ngoài" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "Sử dụng địa chỉ IP nội bộ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "Sử dụng ipset" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" +"Sử dụng tùy chọn này để phân loại lưu lượng vùng theo thiết bị mạng thô, " +"không được quản lý bởi uci." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" +"Sử dụng tùy chọn này để phân loại lưu lượng vùng theo mạng con nguồn hoặc " +"đích thay vì mạng hoặc thiết bị." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "Yêu cầu dấu tường lửa hợp lệ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "Thứ 4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "Ngày trong tuần" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "Dấu tường lửa XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "Dấu XOR" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "Thiết bị của bạn không chạy firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "Thiết bị của bạn chạy firewall4." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "Vùng ⇒ Chuyển tiếp" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "Các vùng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "chấp nhận" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "Bất kì" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "bất kỳ vùng nào" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "bất kỳ/tất cả" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "áp dụng dấu tường lửa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "gán trợ giúp conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "Tự động hóa" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bản đồ bit" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bản đồ bit chỉ dành cho ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "ngày" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: IP đích" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: Địa chỉ MAC đích" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: Mạng (con) đích" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: Cổng đích" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "*dest_set: ipset đích*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "không viết lại" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "không theo dõi" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "drop" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 hỗ trợ tham chiếu và tạo các bộ IP để đơn giản hóa việc khớp các " +"danh sách địa chỉ lớn mà không cần tạo một quy tắc cho mỗi mục để khớp. Phạm " +"vi cổng trong ipsets không được hỗ trợ bởi firewall4.
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "từ cổng đến cổng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "băm" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "giờ" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: Địa chỉ IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" +"ip[/cidr]
Để sử dụng với các kiểu dữ liệu Khớp: *_ip." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "danh sách" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: Địa chỉ MAC" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "*macaddr|ip[/cidr]*
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "*phút*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (sub)net" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: Cổng" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "Không chấp nhận" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "giây" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ipset*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: ipset nguồn*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: IP nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: Địa chỉ MAC nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: Mạng (con) nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: Cổng nguồn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "thiết bị này" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "vùng mới này" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "không giới hạn" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "không xác định" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "lên đến 65536 mục." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "dấu tường lửa hợp lệ" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "Bật tính năng Offloading dựa trên phần mềm cho định tuyến/NAT" diff --git a/luci-app-firewall/po/yua/firewall.po b/luci-app-firewall/po/yua/firewall.po new file mode 100644 index 000000000..1dc338868 --- /dev/null +++ b/luci-app-firewall/po/yua/firewall.po @@ -0,0 +1,1430 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-03-30 17:00+0200\n" +"PO-Revision-Date: 2024-08-26 11:25+0000\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: yua\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.7.1-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "" diff --git a/luci-app-firewall/po/zh_Hans/firewall.po b/luci-app-firewall/po/zh_Hans/firewall.po new file mode 100644 index 000000000..f7b5a5cb3 --- /dev/null +++ b/luci-app-firewall/po/zh_Hans/firewall.po @@ -0,0 +1,1583 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"PO-Revision-Date: 2024-10-26 14:12+0000\n" +"Last-Translator: try496 \n" +"Language-Team: Chinese (Simplified Han script) \n" +"Language: zh_Hans\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.8.2-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?转发:入站}:出站} %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:IPv4}%{proto?, 协议 " +"%{proto#%{next?, }%{item.types?%{item." +"name}具有类型 %{item.types#%{next?, }%{item}" +"} 的 ICMP:%{item.name}}}}%{mark?, 标记 " +"%{mark.val}}%{dscp?, DSCP %{dscp.inv?%{dscp." +"val}:%{dscp.val}}}%{helper?, 助手 %{helper.inv?%{helper.val}" +":%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- 添加 IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- 添加 MAC --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "接受 %{src?%{dest?转发:入站}:出站}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "防止重写源" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"转发 至 %{dest}%{dest_ip? IP %{dest_ip}" +"}%{dest_port? 端口 %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "丢弃 %{src?%{dest?转发:入站}:出站}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "分配 DSCP 分类 %{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"分配 conntrack 助手 %{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?分配:异或} 防火墙标记 " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "自动重写 源 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"不跟踪 %{src?%{dest?转发:入站}:出站}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "拒绝 %{src?%{dest?转发:入站}:出站}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"静态重写 到源 %{snat_ip?IP %{snat_ip}} %{snat_port?端口 %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +msgid "A rewrite IP must be specified!" +msgstr "必须指定重写 IP!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +msgid "ACCEPT - Disable address rewriting" +msgstr "接受 - 禁用地址重写" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +msgid "Action" +msgstr "操作" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"用于对区域目标流量进行分类的额外 iptables 参数。如:-p tcp --" +"dport 443 表示仅匹配出站 HTTPS 流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"用于对区域源流量进行分类的额外 iptables 参数。如:-p tcp --" +"sport 443 表示仅匹配入站 HTTPS 流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "地址族、内部 IP 族必须相匹配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "地址族、源地址、目标地址、重写 IP 地址必须相匹配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +msgid "Advanced Settings" +msgstr "高级设置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "允许“无效”流量" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "允许来自源区域的转发:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "允许转发到目标区域:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "任何" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +msgid "Any day" +msgstr "每天" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"在已建立的连接上对给定值和现有标记值进行按位异或。格式为 值[/掩码]。如果指定" +"了掩码,则掩码中设置的位将归零。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "将给定的 DSCP 类或值应用于已建立的连接。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "将指定的连接跟踪助手分配给匹配的流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "自动助手分配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "根据流量协议和端口自动分配连接跟踪助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +msgid "Comment" +msgstr "注释" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "连接跟踪设置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "连接跟踪助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "内容已保存。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "继续" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Counters" +msgstr "计数器" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "涵盖的设备" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "涵盖的网络" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "涵盖的子网" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "自定义规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"自定义规则允许您执行不属于防火墙框架的任意 iptables 命令。每次重启防火墙时," +"这些命令在默认的规则运行后立即执行。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +msgid "DSCP classification" +msgstr "DSCP 类别" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP 标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "需要 DSCP 标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Destination address" +msgstr "目标地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "Destination port" +msgstr "目标端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +msgid "Destination zone" +msgstr "目标区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "Device name" +msgstr "设备名" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"不安装额外的规则以拒绝连接跟踪状态为无效的转发流量。对复杂的非对称路" +"由这可能是必需的设置。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "丢弃无效数据包" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +msgid "Enable" +msgstr "启用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +msgid "Enable NAT Loopback" +msgstr "启用 NAT 环回" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "启用 SYN-flood 防御" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "启用此区域的日志记录" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"为此区域的出站流量开启网络地址和端口转换 IPv4 (NAT4 或 NAPT4)。 wan区域通常开启此功能。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "为此区域出站流量开启网络地址和端口转换 IPv6 (NAT6 或 NAPT6)。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +msgid "Enabled" +msgstr "已启用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +msgid "Enables packet and byte count tracking for the set." +msgstr "为该集合开启数据包和字节计数追踪。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "请输入:%s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "为区域流量明确选择允许的连接跟踪助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "External IP address" +msgstr "外部 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "External port" +msgstr "外部端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Extra arguments" +msgstr "额外参数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "额外的目标参数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "额外的 iptables 参数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "额外的源参数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "Family" +msgstr "族" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "防火墙" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "防火墙 - 自定义规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "防火墙 - IP 集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "防火墙 - NAT 规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "防火墙 - 端口转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "防火墙 - 通信规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "防火墙 - 区域设置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "防火墙配置迁移" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "流量卸载类型" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Friday" +msgstr "星期五" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"来自 %{src}%{src_device?, 接口 %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, 端口 %{src_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"来自 %{src}%{src_device?, 接口 %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, 端口 %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"来自 %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, 端口 " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +msgid "General Settings" +msgstr "常规设置" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "授予访问防火墙配置的权限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "基于硬件的路由卸载,支持或不支持NAT。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "硬件流量卸载" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "IP (range)" +msgstr "IP (范围)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP 集" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "IPs/Networks" +msgstr "IP/网络" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "IPs/Networks/MACs" +msgstr "IP/网络/MAC 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +msgid "IPv4 and IPv6" +msgstr "IPv4 和 IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +msgid "IPv4 only" +msgstr "仅 IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "IPv6 伪装" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +msgid "IPv6 only" +msgstr "仅 IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +msgid "Inbound device" +msgstr "入站设备" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Include File" +msgstr "包括文件" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +msgid "Initial Hash Size" +msgstr "初始哈希大小" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "入站数据" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Internal IP address" +msgstr "内部 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "Internal port" +msgstr "内部端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +msgid "Internal zone" +msgstr "内部区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "区域内转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "无效的 DSCP 标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "无效的限制值" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +msgid "Invalid set name" +msgstr "无效的集合名" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "限制突发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "限制日志信息" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "限制匹配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"限制匹配到 %{limit.num} 包每 %{limit.unit}%{limit." +"burst? 突发 %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "已启用有限伪装" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "将流量匹配限制为指定的速率。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "Loopback source IP" +msgstr "环回源 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE - 自动重写源地址为出站接口 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS 钳制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "IP 动态伪装" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +msgid "Match" +msgstr "匹配规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "匹配 DSCP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +msgid "Match ICMP type" +msgstr "匹配 ICMP 类型" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +msgid "Match device" +msgstr "匹配设备" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "匹配指向给定 IP 地址的转发流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "匹配指向给定目标端口或端口范围的转发流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +msgid "Match forwarded traffic from this IP or range." +msgstr "匹配来自此 IP 或范围的转发流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "匹配来自给定源端口或端口范围的转发流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match helper" +msgstr "匹配助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "匹配指向此主机上指定目标端口或目标端口范围的入站流量" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "匹配标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +msgid "Match traffic using the specified connection tracking helper." +msgstr "使用指定的连接跟踪助手匹配流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "匹配特定的防火墙标记或防火墙标记范围。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "匹配使用指定的出站网络设备转发的流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "匹配带有指定 DSCP 标记的流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +msgid "Max Entries" +msgstr "最大条目数" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "Max Length" +msgstr "最大长度" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "要匹配的最大初始数据包数:未达到上述指定限制时,每次加一直到达到此数。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Monday" +msgstr "星期一" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +msgid "Month Days" +msgstr "日期" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT 规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "NAT 规则允许对源 IP 进行精细控制,以用于出站或转发流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +msgid "Name" +msgstr "名称" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +msgid "Netmask" +msgstr "网络掩码" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "无" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "与 QoS/SQM 不完全兼容。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "仅匹配指定目的 IP 地址的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +msgid "Only match incoming traffic from these MACs." +msgstr "仅匹配来自这些 MAC 的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +msgid "Only match incoming traffic from this IP or range." +msgstr "仅匹配来自此 IP 或 IP 范围的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "仅匹配源自客户端主机上给定源端口或源端口范围的入站流量" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Outbound device" +msgstr "出站设备" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +msgid "Outbound zone" +msgstr "出站区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "出站数据" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "Packet Field Match" +msgstr "数据包字段匹配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"要进行匹配的数据包字段。
语法:direction_datatype。如:" +"src_port, dest_net
方向:src, dst。数据类" +"型:ip, port, mac, net, set
方向前缀可选。
*注意:" +"datatypeset在 fw4 中不受支持。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "传递到 iptables 的额外参数。小心使用!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"通过将 iptables 参数传递给源和目标流量的分类规则,可以根据接口或子网以外的其" +"他条件来匹配数据包。使用这些选项应格外小心,因为无效值可能会破坏防火墙规则集" +"而对外暴露所有服务。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "CIDRs、subnets、host IP 等文件的路径。
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "端口转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "端口转发允许互联网上的远程计算机连接到内部网络中的特定计算机或服务。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "Port range" +msgstr "端口范围" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +msgid "Protocol" +msgstr "协议" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "重定向匹配的入站流量到内部主机的端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "重定向匹配的入站流量到指定的内部主机" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +msgid "Refer To External Set" +msgstr "参考外部集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "Reflection zones" +msgstr "反射区" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "需要硬件 NAT 支持。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "要限制 IP 动态伪装的目标子网" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "要限制 IP 动态伪装的源子网" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +msgid "Restrict to address family" +msgstr "地址族限制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite IP address" +msgstr "重写 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "将匹配的流量重写到指定的源 IP 地址。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "将匹配的流量重写到指定的源端口或端口范围。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite port" +msgstr "重写端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "路由/NAT 卸载" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - 重写为特定的源 IP 或端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +msgid "Saturday" +msgstr "星期六" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "设置标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"在已建立的连接上设置给定的标记值。格式为:值[/掩码]。如果指定了掩码,则仅修改" +"掩码中设置的位。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "基于软件的路由/NAT卸载。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "软件流量卸载" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Source IP address" +msgstr "源 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +msgid "Source MAC address" +msgstr "源 MAC 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Source address" +msgstr "源地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "Source port" +msgstr "源端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +msgid "Source zone" +msgstr "源区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "指定是否将此流量规则绑定到特定的入站或出站网络设备。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "指定反射流量使用外部或内部 IP 地址。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +msgid "Start Date (yyyy-mm-dd)" +msgstr "开始日期(yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +msgid "Start Time (hh:mm:ss)" +msgstr "开始时间(hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "停止日期(yyyy-mm-dd)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +msgid "Stop Time (hh:mm:ss)" +msgstr "停止时间(hh:mm:ss)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "Storage Method" +msgstr "存储方式" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Sunday" +msgstr "星期日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "需要更改现有的防火墙配置,以使 LuCI 正常运行。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "防火墙通过在网络接口上创建区域来控制网络流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"以下选项控制此区域(%s)和其它区域间的转发策略。目标区域接收" +"源自 %q 的转发流量。源区域匹配的转发流量来自目标为 " +"%q 的其它区域。转发规则的作用是单向的,例如:转发从 lan 到 " +"wan 的流量并意味着允许反向转发从 wan 到 lan 的流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"本节定义 %q 的通用属性。入站数据出站数据选项用于设置此区" +"域入站和出站流量的默认策略,转发选项描述该区域内不同网络之间的流量转" +"发策略。涵盖的网络指定从属于这个区域的网络。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Thursday" +msgstr "星期四" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +msgid "Time Restrictions" +msgstr "时间限制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +msgid "Time in UTC" +msgstr "UTC 时间" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +msgid "Time restrictions are enabled for this rule" +msgstr "对该规则启用了时间限制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "Timeout" +msgstr "超时" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"到 %{dest}%{dest_device?, 接口 %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, 端口 %{dest_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"到 %{dest}%{dest_device?, 通过接口 %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, 端口 %{dest_port#%{next?, }" +"%{item." +"ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"到 %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, 端口 %{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +msgid "Tracking helper" +msgstr "跟踪助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "通信规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "" +"通信规则定义了不同区域间的数据包传输策略,例如:拒绝一些主机之间的通信、开放" +"路由器 WAN 上的端口。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Tuesday" +msgstr "星期二" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "无法保存内容:%s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"单位:秒。默认值0表示该条目被永久添加到该集合。
最大值:" +"2147483 秒。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "未知或未安装的连接跟踪助手 \"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +msgid "Unnamed NAT" +msgstr "未命名 NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +msgid "Unnamed forward" +msgstr "未命名转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +msgid "Unnamed rule" +msgstr "未命名规则" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +msgid "Unnamed set" +msgstr "未命名的集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "未命名区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "无法识别的协议" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"按下“继续”后,目标“SNAT”的“redirect”部分将转换为“nat”部分,防火墙将重新启动以" +"应用更新的配置。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +msgid "Use external IP address" +msgstr "使用外部 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use internal IP address" +msgstr "使用内部 IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +msgid "Use ipset" +msgstr "使用 ip 集" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "此选项可对原始的、非 uci 托管的网络设备进行区域流量分类。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "此选项可对源或目标子网而非网络或设备进行区域流量分类。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "需要有效的防火墙标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Wednesday" +msgstr "星期三" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +msgid "Week Days" +msgstr "星期" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "XOR firewall mark" +msgstr "异或防火墙标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "异或标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "你的设备不运行 firewall4。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "你的设备运行 firewall4。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "区域 ⇒ 转发" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "应创建反射规则的区域。如果未设置,则仅使用目标区域。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +msgid "accept" +msgstr "接受" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +msgid "any" +msgstr "任意" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "所有区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +msgid "any/all" +msgstr "任意/全部" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "apply firewall mark" +msgstr "应用防火墙标记" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "assign conntrack helper" +msgstr "分配连接跟踪助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +msgid "automatic" +msgstr "自动" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +msgid "bitmap is ipv4 only" +msgstr "bitmap 仅支持 ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: 目标 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: 目标 MAC 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: 目标 (子)网" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_port: Destination Port" +msgstr "dest_port: 目标端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: 目标 ip集*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +msgid "do not rewrite" +msgstr "不重写" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "don't track" +msgstr "不跟踪" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +msgid "drop" +msgstr "丢弃" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4 支持引用和创建 IP 集合,这样就无需为每个条目创建一条规则进行匹配," +"达到简化大型地址列表匹配的目的。firewall4 不支持 IP 集合中的 端口范围。
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "hash" +msgstr "哈希" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "小时" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "ip: IP addr" +msgstr "ip: IP 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
用于 Match 数据类型: *_ip。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +msgid "list" +msgstr "列表" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "mac: MAC addr" +msgstr "mac: MAC 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "分钟" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +msgid "net: (sub)net" +msgstr "net: (子)网" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "port: Port" +msgstr "port: 端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +msgid "reject" +msgstr "拒绝" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "秒" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "set: ipset*" +msgstr "set: ip集*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "src_Set: Source ipset*" +msgstr "src_Set: 源 ip集*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_ip: Source IP" +msgstr "src_ip: 源 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: 源 MAC 地址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +msgid "src_net: Source (sub)net" +msgstr "src_net: 源(子)网" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_port: Source Port" +msgstr "src_port: 源端口" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "此设备" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "此新区域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "无限制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "unspecified" +msgstr "未指定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +msgid "up to 65536 entries." +msgstr "最多 65536 个条目。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "有效的防火墙标记" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "基于软件的 路由/NAT 分载" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "为此区域上的出站流量开启网络地址和端口翻译(NAT 或 NAPT)。该选项在" +#~ "wan区域上通常处于开启状态。" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "转发的 IPv4%{proto?, 协议 %{proto#%{next?, }%{item.name}}}%{mark?, 标记 %{mark.val}" +#~ "}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "入站 IPv4%{proto?, 协议 %{proto#%{next?, }%{item.types?%{item.name}具有类型 " +#~ "%{item.types#%{next?, }%{item}} 的 ICMP:" +#~ "%{item.name}}}}%{mark?, 标记 %{mark.val}}%{helper?, 助手 %{helper.inv?%{helper.val}:%{helper.val}}}" diff --git a/luci-app-firewall/po/zh_Hant/firewall.po b/luci-app-firewall/po/zh_Hant/firewall.po new file mode 100644 index 000000000..824c3825a --- /dev/null +++ b/luci-app-firewall/po/zh_Hant/firewall.po @@ -0,0 +1,1826 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2024-11-29 19:50+0000\n" +"Last-Translator: Yuan Lau \n" +"Language-Team: Chinese (Traditional Han script) \n" +"Language: zh_Hant\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 5.9-dev\n" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:48 +msgid "" +"%{src?%{dest?Forwarded:Incoming}:Outgoing} %{ipv6?%{ipv4?IPv4 and " +"IPv6:IPv6}:IPv4}%{proto?, protocol " +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP with types %{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?, mark " +"%{mark.val}}%{dscp?, DSCP %{dscp." +"inv?%{dscp.val}:%{dscp.val}}}%{helper?, helper " +"%{helper.inv?%{helper.val}:%{helper." +"val}}}" +msgstr "" +"%{src?%{dest?已轉發:傳入}:傳出}%{ipv6?%{ipv4?IPv4IPv6:IPv6}:IPv4}%{proto?,協定:" +"%{proto#%{next?, }%{item.types?%{item." +"name}ICMP包含型別:%{item.types#%{next?, }" +"%{item}}:%{item.name}}}}%{mark?,標記:" +"%{mark.val}}%{dscp?,DSCP:%{dscp.inv?" +"%{dscp.val}:%{dscp.val}}}%{helper?,幫手:%{helper." +"inv?%{helper.val}:%{helper.val}" +"}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +msgid "-- add IP --" +msgstr "-- 新增 IP --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:521 +msgid "-- add MAC --" +msgstr "-- 新增 MAC 位置 --" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:199 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:198 +msgid "0" +msgstr "0" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:181 +msgid "1024" +msgstr "1024" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:118 +msgid "" +"Accept %{src?%{dest?forward:input}:output}" +msgstr "" +"接受 %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:93 +msgid "Prevent source rewrite" +msgstr "避免來源重置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:85 +msgid "" +"Forward to %{dest}%{dest_ip? IP " +"%{dest_ip}}%{dest_port? port %{dest_port}}" +msgstr "" +"轉發 到 %{dest}%{dest_ip? IP %{dest_ip}" +"}%{dest_port? port %{dest_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:115 +msgid "" +"Drop %{src?%{dest?forward:input}:output}" +msgstr "" +"丟棄 %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:133 +msgid "" +"Assign DSCP classification %{set_dscp}" +"" +msgstr "" +"指定DSCP(區別服務代碼點)分類 " +"%{set_dscp}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:127 +msgid "" +"Assign conntrack helper " +"%{set_helper}" +msgstr "" +"指定連線追蹤助手%{set_helper}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:130 +msgid "" +"%{set_mark?Assign:XOR} firewall mark " +"%{set_mark?:%{set_xmark}}" +msgstr "" +"%{set_mark?Assign:XOR} 防火牆標記 " +"%{set_mark?:%{set_xmark}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:90 +msgid "Automatically rewrite source IP" +msgstr "自動重置 來源IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:124 +msgid "" +"Do not track %{src?%{dest?forward:input}:" +"output}" +msgstr "" +"勿追蹤 %{src?%{dest?forward:input}:" +"output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:121 +msgid "" +"Reject %{src?%{dest?forward:input}:output}" +msgstr "" +"拒絕 %{src?%{dest?forward:input}:output}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:87 +msgid "" +"Statically rewrite to source %{snat_ip?IP " +"%{snat_ip}} %{snat_port?port %{snat_port}}" +msgstr "" +"靜態重寫 到來源 %{snat_ip?IP %{snat_ip}" +"} %{snat_port?port %{snat_port}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:306 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:305 +msgid "A rewrite IP must be specified!" +msgstr "必須指定重置IP!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +msgid "ACCEPT - Disable address rewriting" +msgstr "接受 - 禁用位址重置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:225 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:411 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:287 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:223 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:224 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:410 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:203 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:286 +msgid "Action" +msgstr "操作" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "" +"Additional raw iptables arguments to classify zone destination " +"traffic, e.g. -p tcp --dport 443 to only match outbound HTTPS " +"traffic." +msgstr "" +"允許原生 iptables 對區域目標流量進行分類的參數, 譬如... -p " +"tcp --dport 443 只針對相符輸出的HTTPS流量." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "" +"Additional raw iptables arguments to classify zone source traffic, " +"e.g. -p tcp --sport 443 to only match inbound HTTPS traffic." +msgstr "" +"允許原生 iptables 參數對區域來源流量進行分類, 譬如... -p tcp " +"--sport 443 只針對相符輸入的HTTPS流量." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:107 +msgid "Address family, Internal IP address must match" +msgstr "族" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:135 +msgid "" +"Address family, source address, destination address, rewrite IP address must " +"match" +msgstr "位址族、來源位址、目的位址、重寫IP位址必須匹配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:162 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +msgid "Advanced Settings" +msgstr "進階設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "Allow \"invalid\" traffic" +msgstr "允許「無效」流量" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:385 +msgid "Allow forward from source zones:" +msgstr "允許從來源區域轉發:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:344 +msgid "Allow forward to destination zones:" +msgstr "允許轉發到目標區:" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:551 +msgid "Any" +msgstr "任何" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:495 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:368 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:478 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:494 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:351 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:367 +msgid "Any day" +msgstr "任一天" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:317 +msgid "" +"Apply a bitwise XOR of the given value and the existing mark value on " +"established connections. Format is value[/mask]. If a mask is specified then " +"those bits set in the mask are zeroed out." +msgstr "" +"在給定的連接上對給定值和現有標記值進行按位XOR。格式為value [/mask]。如果指定" +"了遮罩,則將遮罩中設置的那些位元清零。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Apply the given DSCP class or value to established connections." +msgstr "啟用付予的DSCP(區別服務代碼點)來建立連線." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:438 +msgid "Assign the specified connection tracking helper to matched traffic." +msgstr "指定特定的連線追蹤幫手來匹配流量." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "Automatic helper assignment" +msgstr "自動分派助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:286 +msgid "" +"Automatically assign conntrack helpers based on traffic protocol and port" +msgstr "根據流量和埠號自動分派conntrack" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:61 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:60 +msgid "Comment" +msgstr "註解" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:115 +msgid "Conntrack Settings" +msgstr "Conntrack設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Conntrack helpers" +msgstr "Conntrack助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:16 +msgid "Contents have been saved." +msgstr "內容已儲存。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:700 +msgid "Continue" +msgstr "繼續" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:203 +msgid "Counters" +msgstr "計數器" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "Covered devices" +msgstr "已涵蓋裝置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:183 +msgid "Covered networks" +msgstr "已涵蓋網路" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "Covered subnets" +msgstr "已涵蓋子網路" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:62 +msgid "Custom Rules" +msgstr "自訂規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:26 +msgid "" +"Custom rules allow you to execute arbitrary iptables commands which are not " +"otherwise covered by the firewall framework. The commands are executed after " +"each firewall restart, right after the default ruleset has been loaded." +msgstr "" +"自訂規則允許您執行不屬於防火牆框架的任意 iptables 指令。每次重啟防火牆時,在" +"預設的規則執行後這些指令將立即執行。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:421 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +msgid "DSCP classification" +msgstr "DSCP(區別服務代碼點)分類" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "DSCP mark" +msgstr "DSCP(區別服務代碼點)標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:297 +msgid "DSCP mark required" +msgstr "DSCP(區別服務代碼點)必須標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:402 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:401 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:269 +msgid "Destination address" +msgstr "目標位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:404 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:403 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:277 +msgid "Destination port" +msgstr "目的通訊埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:396 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:395 +msgid "Destination zone" +msgstr "目標區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:268 +msgid "Device name" +msgstr "裝置名稱" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:283 +msgid "" +"Do not install extra rules to reject forwarded traffic with conntrack state " +"invalid. This may be required for complex asymmetric route setups." +msgstr "" +"不設定額外拒絕轉發conntrack狀態無效的流量規則。對於複雜的不對稱路由" +"設定可能是必需的。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:59 +msgid "Drop invalid packets" +msgstr "丟棄無效封包" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:232 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:231 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:230 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:209 +msgid "Enable" +msgstr "啟用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:306 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:305 +msgid "Enable NAT Loopback" +msgstr "啟用NAT環回" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:45 +msgid "Enable SYN-flood protection" +msgstr "啟用SYN洪水保護" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:296 +msgid "Enable logging on this zone" +msgstr "啟用此區域的日誌記錄" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:168 +msgid "" +"Enable network address and port translation IPv4 (NAT4 or NAPT4) for " +"outbound traffic on this zone. This is typically enabled on the wan " +"zone." +msgstr "" +"為此區域的IPv4出站流量開啟網路位址和端口轉換(NAT4或NAPT4)。 wan區域" +"通常開啟此功能。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:243 +msgid "" +"Enable network address and port translation IPv6 (NAT6 or NAPT6) for " +"outbound traffic on this zone." +msgstr "為此區域的IPv6出站流量開啟網路位址和端口轉換(NAT6或NAPT6)。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:210 +msgid "Enabled" +msgstr "啟用" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:205 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:204 +msgid "Enables packet and byte count tracking for the set." +msgstr "為該集合開啟封包和字節計數追蹤。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "Expecting: %s" +msgstr "請輸入:%s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:290 +msgid "Explicitly choses allowed connection tracking helpers for zone traffic" +msgstr "針對區域流量明確選擇已允許的連接追蹤幫手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:273 +msgid "External IP address" +msgstr "外部IP位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:278 +msgid "External port" +msgstr "外部埠號" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:469 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:341 +msgid "Extra arguments" +msgstr "額外引數" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:322 +msgid "Extra destination arguments" +msgstr "額外目標引數" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:116 +msgid "Extra iptables arguments" +msgstr "額外iptables引數" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:312 +msgid "Extra source arguments" +msgstr "額外來源引數" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:66 +msgid "Family" +msgstr "族" + +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:3 +msgid "Firewall" +msgstr "防火牆" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:25 +msgid "Firewall - Custom Rules" +msgstr "防火牆 - 自訂規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:20 +msgid "Firewall - IP sets" +msgstr "防火牆 - IP 集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:172 +msgid "Firewall - NAT Rules" +msgstr "防火牆 - NAT規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:152 +msgid "Firewall - Port Forwards" +msgstr "防火牆 - 通訊埠轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:173 +msgid "Firewall - Traffic Rules" +msgstr "防火牆 - 流量規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:38 +msgid "Firewall - Zone Settings" +msgstr "防火牆 - 區域設定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:693 +msgid "Firewall configuration migration" +msgstr "防火牆設定移轉" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:82 +msgid "Flow offloading type" +msgstr "流量卸載類型" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:64 +msgid "Forward" +msgstr "轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:34 +msgid "" +"Forwarded %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}" +"}" +msgstr "" +"轉發 %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, 協定 %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark.val}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +msgid "Friday" +msgstr "星期五" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:45 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"來自:%{src}%{src_device?,介面:%{src_device}}%{src_ip?,IP:" +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?,埠:" +"%{src_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:64 +msgid "" +"From %{src}%{src_device?, interface %{src_device}}%{src_ip?, IP " +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }" +"%{item." +"ival}}}%{src_mac?, MAC %{src_mac#%{next?, }%{item.ival}" +"}}" +msgstr "" +"來自:%{src}%{src_device?,介面:%{src_device}}%{src_ip?,IP:" +"%{src_ip#%{next?, }%{item.ival}}}%{src_port?,埠:port " +"%{src_port#%{next?, }%{item.ival}}}%{src_mac?,MAC:%{src_mac#%{next?, }" +"%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:52 +msgid "" +"From %{src}%{src_ip?, IP %{src_ip#%{next?, }%{item.ival}}}%{src_port?, port %{src_port#%{next?, }%{item.ival}}}%{src_mac?, " +"MAC %{src_mac#%{next?, }%{item.ival}}}" +msgstr "" +"來自:%{src}%{src_ip?,IP:%{src_ip#%{next?, }%{item.ival}}}%{src_port?,埠:%{src_port#%{next?, }%{item.ival}}}%{src_mac?,MAC:" +"%{src_mac#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:161 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:113 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:17 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:160 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:181 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:180 +msgid "General Settings" +msgstr "一般設定" + +#: applications/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json:3 +msgid "Grant access to firewall configuration" +msgstr "授予存取防火牆設定的權限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware based offloading for routing with/without NAT." +msgstr "基於硬體的路由卸載,有無NAT均可。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Hardware flow offloading" +msgstr "硬體流量卸載" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:143 +msgid "IP (range)" +msgstr "IP (範圍)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:32 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:53 +msgid "IP Sets" +msgstr "IP 集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:151 +msgid "IPs/Networks" +msgstr "IP/網路" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:106 +msgid "IPs/Networks/MACs" +msgstr "IP/網路/MAC 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:67 +msgid "IPv4" +msgstr "IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:190 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:279 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:218 +msgid "IPv4 and IPv6" +msgstr "IPv4和IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:257 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:219 +msgid "IPv4 only" +msgstr "僅IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:68 +msgid "IPv6" +msgstr "IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:242 +msgid "IPv6 Masquerading" +msgstr "NAT6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:258 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:192 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:281 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:220 +msgid "IPv6 only" +msgstr "僅IPv6" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +msgid "Inbound device" +msgstr "輸入設備" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:186 +msgid "Include File" +msgstr "包括文件" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:40 +msgid "" +"Incoming %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" +msgstr "" +"傳入 %{ipv6?%{ipv4?IPv4 and IPv6:IPv6}:" +"IPv4}%{proto?, 協定 %{proto#%{next?, }%{item.types?%{item.name}ICMP " +"with types %{item.types#%{next?, }%{item}}:" +"%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:180 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:179 +msgid "Initial Hash Size" +msgstr "初始雜湊大小" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:151 +msgid "Input" +msgstr "入站資料" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:291 +msgid "Internal IP address" +msgstr "內部 IP 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:296 +msgid "Internal port" +msgstr "內部埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:287 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:286 +msgid "Internal zone" +msgstr "內部區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:153 +msgid "Intra zone forward" +msgstr "區內轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:305 +msgid "Invalid DSCP mark" +msgstr "不正確的差異服務的程式碼點 DSCP標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:373 +msgid "Invalid limit value" +msgstr "不正確的限制值" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:47 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:46 +msgid "Invalid set name" +msgstr "集合名無效" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:383 +msgid "Limit burst" +msgstr "限制爆潰" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:299 +msgid "Limit log messages" +msgstr "限制日誌資訊量" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:349 +msgid "Limit matching" +msgstr "限制相符" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:79 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:74 +msgid "" +"Limit matching to %{limit.num} packets per %{limit.unit}%{limit.burst? burst %{limit.burst}}" +msgstr "" +"限制相符到 %{limit.num} 封包數每 %{limit.unit}%{limit." +"burst? burst %{limit.burst}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:175 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:250 +msgid "Limited masquerading enabled" +msgstr "已啟用有限NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:350 +msgid "Limits traffic matching to the specified rate." +msgstr "限制流量相符到指定速率." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:310 +msgid "Loopback source IP" +msgstr "回送來源IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:291 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +msgid "MASQUERADE - Automatically rewrite to outbound interface IP" +msgstr "MASQUERADE偽裝 - 自動重置到輸出界面的IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:180 +msgid "MSS clamping" +msgstr "MSS 鉗制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:167 +msgid "Masquerading" +msgstr "NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:214 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:212 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:213 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:192 +msgid "Match" +msgstr "相符規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:263 +msgid "Match DSCP" +msgstr "相符 DSCP(區別服務代碼點)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:293 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:292 +msgid "Match ICMP type" +msgstr "相符 ICMP 型別" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:249 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:248 +msgid "Match device" +msgstr "相符裝置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:271 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:270 +msgid "Match forwarded traffic directed at the given IP address." +msgstr "相符轉發的流量指向給予的IP位址." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:279 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:278 +msgid "" +"Match forwarded traffic directed at the given destination port or port range." +msgstr "相符轉發的流量指向給予的目標埠或範圍埠." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:254 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +msgid "Match forwarded traffic from this IP or range." +msgstr "從這個IP或範圍相符轉發的流量." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:262 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +msgid "" +"Match forwarded traffic originating from the given source port or port range." +msgstr "相符轉發的流量源自給定的來源埠或範圍埠." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:325 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +msgid "Match helper" +msgstr "相符助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:280 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:279 +msgid "" +"Match incoming traffic directed at the given destination port or port range " +"on this host" +msgstr "相符指向此主機上指定目標埠或目標埠範圍的入站流量" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Match mark" +msgstr "相符標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:326 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:446 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:325 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:445 +msgid "Match traffic using the specified connection tracking helper." +msgstr "相符流量使用特定的連線追蹤。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:319 +msgid "Matches a specific firewall mark or a range of different marks." +msgstr "相符特定的FW防火牆標記或者不同的範圍標記." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:332 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +msgid "Matches forwarded traffic using the specified outbound network device." +msgstr "相符正使用特定輸出網路設備的轉發流量." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:264 +msgid "Matches traffic carrying the specified DSCP marking." +msgstr "相符附帶特定之DSCP(區別服務代碼點)標記的流量." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:112 +msgid "Max Entries" +msgstr "最大條目數" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:171 +msgid "Max Length" +msgstr "最大長度" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:384 +msgid "" +"Maximum initial number of packets to match: this number gets recharged by " +"one every time the limit specified above is not reached, up to this number." +msgstr "" +"相符的最大初始封包數量; 每次未達到上述指定的限制時,此數量將逐一地充實,直到此" +"數量為止." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +msgid "Monday" +msgstr "星期一" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:491 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:364 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:490 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:363 +msgid "Month Days" +msgstr "每月天數" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:175 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:44 +msgid "NAT Rules" +msgstr "NAT規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:173 +msgid "" +"NAT rules allow fine grained control over the source IP to use for outbound " +"or forwarded traffic." +msgstr "NAT規則允許對來源IP進行精細控制以便用於輸出或是轉發流量." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:42 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:52 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:129 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:182 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:41 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:51 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:209 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:188 +msgid "Name" +msgstr "名稱" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:166 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:165 +msgid "Netmask" +msgstr "網路遮罩" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:83 +msgid "None" +msgstr "無" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Not fully compatible with QoS/SQM." +msgstr "與 QoS/SQM 不完全相容。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:275 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:274 +msgid "Only match incoming traffic directed at the given IP address." +msgstr "僅相符指定目的IP位址的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:256 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +msgid "Only match incoming traffic from these MACs." +msgstr "僅相符來自這些MAC的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +msgid "Only match incoming traffic from this IP or range." +msgstr "僅相符來自此IP或IP範圍的入站流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +msgid "" +"Only match incoming traffic originating from the given source port or port " +"range on the client host" +msgstr "僅相符源自客戶端主機上給定來源埠或來源埠範圍的入站流量" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:331 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:252 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:330 +msgid "Outbound device" +msgstr "輸出設備" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:246 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:245 +msgid "Outbound zone" +msgstr "輸出區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:63 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:152 +msgid "Output" +msgstr "出站資料" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:74 +msgid "Packet Field Match" +msgstr "封包字段匹配" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:76 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:75 +msgid "" +"Packet fields to match upon.
Syntax: direction_datatype. e.g.: " +"src_port, dest_net.
Directions: src, dst. " +"Datatypes: ip, port, mac, net, set.
Direction prefixes are " +"optional.
*Note: datatype set is unsupported in fw4." +msgstr "" +"要進行匹配的封包字段。
語法:direction_datatype。如:" +"src_port, dest_net
方向:src, dst。數據類" +"型:ip, port, mac, net, set
方向首碼可選。
*注意:" +"datatype set 在fw4中不受支持。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:350 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:471 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:343 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:349 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:470 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:342 +msgid "Passes additional arguments to iptables. Use with care!" +msgstr "傳遞附加引數到 iptables,小心使用!" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:309 +msgid "" +"Passing raw iptables arguments to source and destination traffic " +"classification rules allows to match packets based on other criteria than " +"interfaces or subnets. These options should be used with extreme care as " +"invalid values could render the firewall ruleset broken, completely exposing " +"all services." +msgstr "" +"透過將原始 iptables 參數傳遞給來源和目的流量分類規則,可以根據介面或子網路以" +"外的其他條件來相符封包. 這些選項應格外小心, 因為無效值可能會使防火牆規則集損" +"壞, 從而對外完全暴露所有服務." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:187 +msgid "Path to file of CIDRs, subnets, host IPs, etc.
" +msgstr "CIDRs、subnets、host IP 等文件的路徑。
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:155 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:26 +msgid "Port Forwards" +msgstr "埠轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:153 +msgid "" +"Port forwarding allows remote computers on the Internet to connect to a " +"specific computer or service within the private LAN." +msgstr "通訊埠轉發允許Internet上的遠端電腦連線到內部網路中的特定電腦或服務。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:157 +msgid "Port range" +msgstr "埠範圍" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:237 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:289 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:242 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:236 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:288 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:241 +msgid "Protocol" +msgstr "協定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:298 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:297 +msgid "" +"Redirect matched incoming traffic to the given port on the internal host" +msgstr "重新導向相符的入站流量到內部主機給予的埠號" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:293 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:292 +msgid "Redirect matched incoming traffic to the specified internal host" +msgstr "重新導向相符的入站流量到指定的內部主機" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:122 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:121 +msgid "Refer To External Set" +msgstr "參考外部集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:319 +msgid "Reflection zones" +msgstr "回應區" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:85 +msgid "Requires hardware NAT support." +msgstr "需要硬體NAT支援。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:272 +msgid "Restrict Masquerading to given destination subnets" +msgstr "限制NAT的目標子網路" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:261 +msgid "Restrict Masquerading to given source subnets" +msgstr "限制NAT的來源子網路" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:188 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:277 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:216 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:187 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:276 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:215 +msgid "Restrict to address family" +msgstr "限制到位址群" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:296 +msgid "Rewrite IP address" +msgstr "重置IP位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:298 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:297 +msgid "Rewrite matched traffic to the specified source IP address." +msgstr "重置已相符流量到特定的來源IP位址。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:312 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +msgid "Rewrite matched traffic to the specified source port or port range." +msgstr "重置已相符流量到特定的來源埠或範圍埠." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:311 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:310 +msgid "Rewrite port" +msgstr "重置埠號" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:76 +msgid "Routing/NAT Offloading" +msgstr "路由/NAT卸載" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:290 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:289 +msgid "SNAT - Rewrite to specific source IP or port" +msgstr "SNAT - 重置到特定的來源IP或埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:359 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:485 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:358 +msgid "Saturday" +msgstr "星期六" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "Set mark" +msgstr "設定標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:318 +msgid "" +"Set the given mark value on established connections. Format is value[/mask]. " +"If a mask is specified then only those bits set in the mask are modified." +msgstr "" +"在建立的連接上設置給定的標記值. 格式為value [/ mask]. 如果指定了子網路遮罩," +"則僅修改子網路遮罩中設置的那些位元." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software based offloading for routing/NAT." +msgstr "基於軟體的路由/NAT卸載。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:84 +msgid "Software flow offloading" +msgstr "軟體式流量卸載" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:260 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:259 +msgid "Source IP address" +msgstr "來源IP位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:255 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:254 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:385 +msgid "Source MAC address" +msgstr "來源MAC位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:253 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:386 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:252 +msgid "Source address" +msgstr "來源位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:389 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:261 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:264 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:388 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:260 +msgid "Source port" +msgstr "來源埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:241 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:372 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:240 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:371 +msgid "Source zone" +msgstr "來源區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:269 +msgid "" +"Specifies whether to tie this traffic rule to a specific inbound or outbound " +"network device." +msgstr "指定是否將此流量規則綁定到特定的輸入或輸出的網路設備." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:311 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:310 +msgid "" +"Specifies whether to use the external or the internal IP address for " +"reflected traffic." +msgstr "指定是使用外部IP地址還是內部IP地址來映射流量." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:510 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:383 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:509 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:382 +msgid "Start Date (yyyy-mm-dd)" +msgstr "開始日期(西元年-月-日)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:502 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:375 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:501 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:374 +msgid "Start Time (hh:mm:ss)" +msgstr "啟動時間 (小時.分鐘.秒)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:514 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:387 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:513 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:386 +msgid "Stop Date (yyyy-mm-dd)" +msgstr "停止日期(西元年-月-日)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:506 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:379 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:505 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:378 +msgid "Stop Time (hh:mm:ss)" +msgstr "停止時間 (小時.分鐘.秒)" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:129 +msgid "Storage Method" +msgstr "儲存方式" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:480 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:353 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:479 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:352 +msgid "Sunday" +msgstr "星期日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:694 +msgid "" +"The existing firewall configuration needs to be changed for LuCI to function " +"properly." +msgstr "已存在的防火牆設定需要被變更以便 LuCI發揮正常功效." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:39 +msgid "" +"The firewall creates zones over your network interfaces to control network " +"traffic flow." +msgstr "防火牆透過在網路介面上建立區域來控制網路流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:227 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:340 +msgid "" +"The options below control the forwarding policies between this zone (%s) and " +"other zones. Destination zones cover forwarded traffic " +"originating from %q. Source zones match forwarded " +"traffic from other zones targeted at %q. The forwarding " +"rule is unidirectional, e.g. a forward from lan to wan does " +"not imply a permission to forward from wan to lan as well." +msgstr "" +"以下選項可以控制區域(%s)和其它區域間的轉發規則;目標區域接收" +"源自%q 的轉發流量,來源區域相符來自其他區域的" +"目標為%q 的轉發流量。轉發規則的作用是單向的,例如:" +"一條允許從LAN到WAN的轉發規則並不隱含有允許相反方向從WAN到LAN的流量轉" +"發。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:125 +msgid "" +"This section defines common properties of %q. The input and " +"output options set the default policies for traffic entering and " +"leaving this zone while the forward option describes the policy for " +"forwarded traffic between different networks within the zone. Covered " +"networks specifies which available networks are members of this zone." +msgstr "" +"本節定義%q的通用屬性,入站資料出站資料選項用於設定此區域" +"入站和出站流量的預設策略,轉發選項描述該區域內不同網路之間的流量轉發" +"策略。覆蓋網路指定從屬於這個區域的網路。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:484 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:357 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +msgid "Thursday" +msgstr "星期四" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:183 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:182 +msgid "Time Restrictions" +msgstr "時間限制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:518 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:517 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:390 +msgid "Time in UTC" +msgstr "UTC 時間" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:244 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:243 +msgid "Time restrictions are enabled for this rule" +msgstr "對該規則啟用了時間限制" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:195 +msgid "Timeout" +msgstr "逾時" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:77 +msgid "" +"To %{dest}%{dest_device?, interface %{dest_device}}%{dest_ip?, IP " +"%{dest_ip#%{next?, }%{item.ival}
}}%{dest_port?, port %{dest_port#%{next?, }" +"%{item." +"ival}}}" +msgstr "" +"到:%{dest}%{dest_device?,介面:%{dest_device}}%{dest_ip?,IP:" +"%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?,埠:" +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:55 +msgid "" +"To %{dest}%{dest_device?, via interface %{dest_device}}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port " +"%{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"到:%{dest}%{dest_device?,透過介面:%{dest_device}}%{dest_ip?," +"IP:%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?,埠:" +"%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:61 +msgid "" +"To %{dest}%{dest_ip?, IP %{dest_ip#%{next?, }%{item.ival}}}%{dest_port?, port %{dest_port#%{next?, }%{item.ival}}}" +msgstr "" +"到:%{dest}%{dest_ip?,IP:%{dest_ip#%{next?, }%{item.ival}}}%{dest_port?,埠:%{dest_port#%{next?, }%{item.ival}}}" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:439 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:438 +msgid "Tracking helper" +msgstr "追蹤小幫手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:176 +#: applications/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json:35 +msgid "Traffic Rules" +msgstr "流量規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets travelling between different " +"zones, for example to reject traffic between certain hosts or to open WAN " +"ports on the router." +msgstr "通訊規則定義了不同區域間的資料包傳輸策略,例如:拒絕一些主機之間的通訊,開放" +"路由器WAN上的埠。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:481 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:354 +msgid "Tuesday" +msgstr "星期二" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/custom.js:19 +msgid "Unable to save contents: %s" +msgstr "無法儲存內容:%s" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:197 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:196 +msgid "" +"Unit: seconds. Default 0 means the entry is added permanently " +"to the set.
Max: 2147483 seconds." +msgstr "" +"單位:秒。默認值0表示該條目被永久添加到該集合。
最大值:" +"2147483 秒。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:341 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:461 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:340 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:460 +msgid "Unknown or not installed conntrack helper \"%s\"" +msgstr "未知或未安裝的連線跟蹤助手\"%s\"" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:186 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:190 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:185 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:189 +msgid "Unnamed NAT" +msgstr "未命名NAT" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:169 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:184 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:168 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:183 +msgid "Unnamed forward" +msgstr "未命名轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:191 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:211 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:190 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:210 +msgid "Unnamed rule" +msgstr "未命名規則" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:57 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:56 +msgid "Unnamed set" +msgstr "未命名集合" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:130 +msgid "Unnamed zone" +msgstr "未命名區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:597 +msgid "Unrecognized protocol" +msgstr "無法識別的協定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:695 +msgid "" +"Upon pressing \"Continue\", \"redirect\" sections with target \"SNAT\" will " +"be converted to \"nat\" sections and the firewall will be restarted to apply " +"the updated configuration." +msgstr "" +"一旦按下\"繼續\"後, 附帶目標為\" SNAT\"的\"重導向\"欄位將轉換為\" nat\"欄位," +"防火牆將重新啟動以套用更新的設定值." + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +msgid "Use external IP address" +msgstr "使用外部IP位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:314 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:313 +msgid "Use internal IP address" +msgstr "使用內部IP位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:247 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:378 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:322 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:246 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:377 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:321 +msgid "Use ipset" +msgstr "使用IP集" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:231 +msgid "" +"Use this option to classify zone traffic by raw, non-uci managed " +"network devices." +msgstr "使用此選項可以對原生、非uci管理的網路裝置分類區域流量。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:236 +msgid "" +"Use this option to classify zone traffic by source or destination subnet " +"instead of networks or devices." +msgstr "使用此選項可以按來源或目的子網路(而不是網路或裝置)對區域流量進行分類。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:331 +msgid "Valid firewall mark required" +msgstr "需要有效的防火牆標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:483 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:356 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:482 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:355 +msgid "Wednesday" +msgstr "星期三" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:475 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:348 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:474 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:347 +msgid "Week Days" +msgstr "每週日數" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:420 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +msgid "XOR firewall mark" +msgstr "按位元互斥XOR防火牆標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:316 +msgid "XOR mark" +msgstr "按位元互斥XOR標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:28 +msgid "Your device does not run firewall4." +msgstr "你的設備沒有使用 firewall4。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:26 +msgid "Your device runs firewall4." +msgstr "你的設備使用firewall4。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:143 +msgid "Zone ⇒ Forwardings" +msgstr "區域 ⇒ 轉發" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:101 +msgid "Zones" +msgstr "區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:320 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:319 +msgid "" +"Zones from which reflection rules shall be created. If unset, only the " +"destination zone is used." +msgstr "創建回應規則的區域。若未設置,將僅使用目標區域。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:159 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +msgid "accept" +msgstr "接受" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:268 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:463 +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:486 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:270 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:301 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:328 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:392 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:407 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:441 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:448 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:266 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:282 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:269 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:300 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:327 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:391 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:406 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:440 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:447 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:265 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:281 +msgid "any" +msgstr "任何" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:46 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "any zone" +msgstr "所有區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:298 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:297 +msgid "any/all" +msgstr "任意/全部" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:419 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +msgid "apply firewall mark" +msgstr "套用防火牆標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:418 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +msgid "assign conntrack helper" +msgstr "指定連線跟蹤助手" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:194 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:222 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:193 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:221 +msgid "automatic" +msgstr "自動" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:130 +msgid "bitmap" +msgstr "bitmap" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:137 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:136 +msgid "bitmap is ipv4 only" +msgstr "bitmap僅支援 IPv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "day" +msgstr "日" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +msgid "dest_ip: Destination IP" +msgstr "dest_ip: 目標 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +msgid "dest_mac: Destination MAC addr" +msgstr "dest_mac: 目標 MAC 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:96 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:95 +msgid "dest_net: Destination (sub)net" +msgstr "dest_net: 目標(子)網" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:94 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:93 +msgid "dest_port: Destination Port" +msgstr "dest_port:目標埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:98 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:97 +msgid "dest_set: Destination ipset*" +msgstr "dest_set: 目標 ip集合*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:315 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:314 +msgid "do not rewrite" +msgstr "不重置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:417 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +msgid "don't track" +msgstr "不跟蹤" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:414 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:69 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:158 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:413 +msgid "drop" +msgstr "丟棄" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:21 +msgid "" +"firewall4 supports referencing and creating IP sets to simplify matching of " +"large address lists without the need to create one rule per item to match. " +"Port ranges in ipsets are unsupported by firewall4.
" +msgstr "" +"firewall4支援引用和創建IP集,這樣無需為每個條目創建一條規則進行匹配,達到簡化" +"大型位址列表匹配的目的。firewall4不支援IP集中的埠範圍。
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:159 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:158 +msgid "fromport-toport" +msgstr "fromport-toport" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:131 +msgid "hash" +msgstr "雜湊" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "hour" +msgstr "小時" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:80 +msgid "ip: IP addr" +msgstr "ip: IP 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:153 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:152 +msgid "ip[/cidr]
" +msgstr "ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:145 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:144 +msgid "ip[/cidr]
For use with Match datatypes: *_ip." +msgstr "ip[/cidr]
用於匹配資料類型:*_ip。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:70 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:69 +msgid "ipv4" +msgstr "ipv4" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:133 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:132 +msgid "list" +msgstr "清單" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +msgid "mac: MAC addr" +msgstr "mac: MAC 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:108 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:107 +msgid "macaddr|ip[/cidr]
" +msgstr "macaddr|ip[/cidr]
" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "minute" +msgstr "分鐘" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:84 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:83 +msgid "net: (sub)net" +msgstr "net:(子)網" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:82 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:81 +msgid "port: Port" +msgstr "port: 埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:416 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:68 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:157 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:415 +msgid "reject" +msgstr "拒絕" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:72 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:67 +msgid "second" +msgstr "秒" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:85 +msgid "set: ipset*" +msgstr "set: ip集合*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:92 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:91 +msgid "src_Set: Source ipset*" +msgstr "src_Set: 源 ip集合*" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:86 +msgid "src_ip: Source IP" +msgstr "src_ip: 源 IP" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +msgid "src_mac: Source MAC addr" +msgstr "src_mac: 源 MAC 位址" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:90 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:89 +msgid "src_net: Source (sub)net" +msgstr "src_net: 源(子)網" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:88 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:87 +msgid "src_port: Source Port" +msgstr "src_port: 源 埠" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:53 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:62 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js:86 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:65 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:78 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/snats.js:56 +msgid "this device" +msgstr "此裝置" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:124 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:226 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:339 +msgid "this new zone" +msgstr "新區域" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:354 +msgid "unlimited" +msgstr "無限" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:251 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:250 +msgid "unspecified" +msgstr "未規定" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:114 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:173 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:113 +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/ipsets.js:172 +msgid "up to 65536 entries." +msgstr "最多 65536 個條目。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/tools/firewall.js:339 +msgid "valid firewall mark" +msgstr "有效正確的防火牆標記" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js:77 +msgid "Experimental feature. Not fully compatible with QoS/SQM." +msgstr "實驗性功能。與QoS/SQM不完全相容。" + +#: applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js:174 +msgid "" +"Traffic rules define policies for packets traveling between different zones, " +"for example to reject traffic between certain hosts or to open WAN ports on " +"the router." +msgstr "通訊規則定義了不同區域間的資料包傳輸策略,例如:拒絕一些主機之間的通訊,開放" +"路由器WAN上的埠。" + +#~ msgid "Software based offloading for routing/NAT" +#~ msgstr "軟體式的 路由/NAT 卸載" + +#~ msgid "" +#~ "Enable network address and port translation (NAT or NAPT) for outbound " +#~ "traffic on this zone. This is typically enabled on the wan zone." +#~ msgstr "" +#~ "為此區域上的出站流量啟用網路位址和連接埠轉換 (NAT 或 NAPT)。該選項在" +#~ "wan區域上通常處於啟用狀態。" + +#~ msgid "" +#~ "Forwarded IPv4%{proto?, protocol %{proto#%{next?, }%{item.name}}}%{mark?, mark %{mark." +#~ "val}}" +#~ msgstr "" +#~ "已轉發 IPv4%{proto?,協定:%{proto#%{next?, }%{item.name}}}%{mark?,標記:%{mark.val}" +#~ "}" + +#~ msgid "" +#~ "Incoming IPv4%{proto?, protocol %{proto#%{next?, }%{item.types?%{item.name}ICMP with types %{item.types#%{next?, }%{item}}:%{item.name}}}}%{mark?, mark %{mark.val}}%{helper?, helper %{helper.inv?%{helper.val}:%{helper.val}" +#~ "}}" +#~ msgstr "" +#~ "傳入 IPv4%{proto?,協定:%{proto#%{next?, }%{item.types?%{item.name}ICMP 包含類" +#~ "型:%{item.types#%{next?, }%{item}}:%{item." +#~ "name}}}}%{mark?,標記:%{mark.val}}%{helper?,幫手:%{helper.inv?%{helper." +#~ "val}:%{helper.val}}}" diff --git a/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json b/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json new file mode 100644 index 000000000..f024dcfe2 --- /dev/null +++ b/luci-app-firewall/root/usr/share/luci/menu.d/luci-app-firewall.json @@ -0,0 +1,72 @@ +{ + "admin/network/firewall": { + "title": "Firewall", + "order": 60, + "action": { + "type": "alias", + "path": "admin/network/firewall/zones" + }, + "depends": { + "acl": [ "luci-app-firewall" ], + "fs": { "/sbin/fw3": "executable" }, + "uci": { "firewall": true } + } + }, + + "admin/network/firewall/zones": { + "title": "General Settings", + "order": 10, + "action": { + "type": "view", + "path": "firewall/zones" + } + }, + + "admin/network/firewall/forwards": { + "title": "Port Forwards", + "order": 20, + "action": { + "type": "view", + "path": "firewall/forwards" + } + }, + + "admin/network/firewall/rules": { + "title": "Traffic Rules", + "order": 30, + "action": { + "type": "view", + "path": "firewall/rules" + } + }, + + "admin/network/firewall/snats": { + "title": "NAT Rules", + "order": 40, + "action": { + "type": "view", + "path": "firewall/snats" + } + }, + + "admin/network/firewall/ipsets": { + "title": "IP Sets", + "order": 45, + "action": { + "type": "view", + "path": "firewall/ipsets" + } + }, + + "admin/network/firewall/custom": { + "title": "Custom Rules", + "order": 50, + "action": { + "type": "view", + "path": "firewall/custom" + }, + "depends": { + "fs": { "/usr/share/fw3/helpers.conf": "file" } + } + } +} diff --git a/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json b/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json new file mode 100644 index 000000000..17d1fbab1 --- /dev/null +++ b/luci-app-firewall/root/usr/share/rpcd/acl.d/luci-app-firewall.json @@ -0,0 +1,24 @@ +{ + "luci-app-firewall": { + "description": "Grant access to firewall configuration", + "read": { + "file": { + "/etc/firewall.user": [ "read" ] + }, + "ubus": { + "file": [ "read" ], + "luci": [ "getConntrackHelpers" ] + }, + "uci": [ "firewall" ] + }, + "write": { + "file": { + "/etc/firewall.user": [ "write" ] + }, + "ubus": { + "file": [ "write" ] + }, + "uci": [ "firewall" ] + } + } +} diff --git a/luci-app-firewall/root/usr/share/ucitrack/luci-app-firewall.json b/luci-app-firewall/root/usr/share/ucitrack/luci-app-firewall.json new file mode 100644 index 000000000..4d1d9f919 --- /dev/null +++ b/luci-app-firewall/root/usr/share/ucitrack/luci-app-firewall.json @@ -0,0 +1,9 @@ +{ + "config": "firewall", + "init": "firewall", + "affects": [ + "luci-splash", + "qos", + "miniupnpd" + ] +} diff --git a/luci-app-glorytun-tcp/Makefile b/luci-app-glorytun-tcp/Makefile new file mode 100644 index 000000000..80d97c856 --- /dev/null +++ b/luci-app-glorytun-tcp/Makefile @@ -0,0 +1,16 @@ +# +# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) +# +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI Interface to Glorytun TCP +LUCI_DEPENDS:=+glorytun + +PKG_LICENSE:=GPLv3 + +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js b/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js new file mode 100644 index 000000000..d5e20158e --- /dev/null +++ b/luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js @@ -0,0 +1,84 @@ +'use strict'; +'require rpc'; +'require form'; +'require fs'; +'require uci'; +'require tools.widgets as widgets'; + +var callHostHints; + +return L.view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + load: function() { + return this.callHostHints(); + }, + + render: function(hosts) { + var m, s, o; + + m = new form.Map('glorytun', _('Glorytun TCP')); + + s = m.section(form.GridSection, 'glorytun', _('Instances')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + + o = s.taboption('general', form.Flag, 'enable', _('Enabled')); + o.rmempty = false; + + o = s.taboption('general',form.Value, 'label', _('Label')); + o.rmempty = true; + + o = s.taboption('general', form.ListValue, 'mode', _('Mode')); + o.value('',_('Client')); + o.value('listener',_('Server')); + o.modalonly = true; + + o = s.taboption('general', form.Value, 'host', _('Host')); + o.rmempty = false; + + o = s.taboption('general', form.Value, 'port', _('Port')); + o.rmempty = false; + + o = s.taboption('general', form.Value, 'key', _('Key')); + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('general', form.Value, 'dev', _('Interface name')); + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('general', form.Value, 'localip', _('Local IP')); + o.datatype = 'or(ip4addr,ip6addr)'; + o.rmempty = false; + + o = s.taboption('general', form.Value, 'remoteip', _('Remote IP')); + o.datatype = 'or(ip4addr,ip6addr)'; + o.rmempty = false; + + o = s.taboption('advanced', form.Flag, 'mptcp', _('MPTCP')); + o.modalonly = true; + + o = s.taboption('advanced', form.Flag, 'chacha20', _('chacha'), _('Force fallback cipher')); + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'timeout', _('Timeout')); + o.default = '10000'; + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('advanced', form.Flag, 'multiqueue', _('Multiqueue')); + o.rmempty = false; + o.modalonly = true; + + return m.render(); + } +}); diff --git a/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po b/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po new file mode 100644 index 000000000..977d4d7e7 --- /dev/null +++ b/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 +msgid "Advanced Settings" +msgstr "Configuration avancée" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:41 +msgid "Client" +msgstr "Client" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:34 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 +msgid "Force fallback cipher" +msgstr "Forcer le chiffrement de secours" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:31 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:24 +#: luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json:3 +msgid "Glorytun TCP" +msgstr "Glorytun TCP" + +#: luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json:3 +msgid "Grant access to glorytun TCP" +msgstr "Accorder l'accès à Glorytun TCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +msgid "Host" +msgstr "Hôte" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:26 +msgid "Instances" +msgstr "Instances" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:55 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:51 +msgid "Key" +msgstr "Clef" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:59 +msgid "Local IP" +msgstr "Adresse IP locale" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:67 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:40 +msgid "Mode" +msgstr "Mode" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:78 +msgid "Multiqueue" +msgstr "Multiqueue" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +msgid "Port" +msgstr "Port" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:63 +msgid "Remote IP" +msgstr "IP Distante" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +msgid "Server" +msgstr "Serveur" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:73 +msgid "Timeout" +msgstr "Hors Délais" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 +msgid "chacha" +msgstr "Chacha" diff --git a/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po~ b/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po~ new file mode 100644 index 000000000..b8618b9f4 --- /dev/null +++ b/luci-app-glorytun-tcp/po/fr/glorytun-tcp.po~ @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 +msgid "Advanced Settings" +msgstr "Configuration avancée" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:38 +msgid "Client" +msgstr "Client" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:34 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +msgid "Force fallback cipher" +msgstr "Forcer le chiffrement de secours" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:31 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:24 +#: luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json:3 +msgid "Glorytun TCP" +msgstr "Glorytun TCP" + +#: luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json:3 +msgid "Grant access to glorytun TCP" +msgstr "Accorder l'accès à Glorytun TCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +msgid "Host" +msgstr "Hôte" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:26 +msgid "Instances" +msgstr "Instances" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:52 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +msgid "Key" +msgstr "Clef" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:82 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:56 +msgid "Local IP" +msgstr "Adresse IP locale" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:64 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +msgid "Mode" +msgstr "Mode" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:77 +msgid "Multiqueue" +msgstr "Multiqueue" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +msgid "Port" +msgstr "Port" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:60 +msgid "Remote IP" +msgstr "IP Distante" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:39 +msgid "Server" +msgstr "Serveur" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:72 +msgid "Timeout" +msgstr "Temporisation" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +msgid "chacha" +msgstr "Chacha" diff --git a/luci-app-glorytun-tcp/po/ru/glorytun-tcp.po b/luci-app-glorytun-tcp/po/ru/glorytun-tcp.po new file mode 100644 index 000000000..5996b38c4 --- /dev/null +++ b/luci-app-glorytun-tcp/po/ru/glorytun-tcp.po @@ -0,0 +1,97 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 +msgid "Advanced Settings" +msgstr "Дополнительные настройки" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:41 +msgid "Client" +msgstr "Клиент" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:34 +msgid "Enabled" +msgstr "Установлено" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 +msgid "Force fallback cipher" +msgstr "Принудительное резервное шифрование" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:31 +msgid "General Settings" +msgstr "Основные настройки" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:24 +#: luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json:3 +msgid "Glorytun TCP" +msgstr "Glorytun TCP" + +#: luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json:3 +msgid "Grant access to glorytun TCP" +msgstr "Полный доступ к glorytun TCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +msgid "Host" +msgstr "Хост" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:26 +msgid "Instances" +msgstr "Экземпляры" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:55 +msgid "Interface name" +msgstr "Имя интерфейса" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:51 +msgid "Key" +msgstr "Ключ" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +msgid "Label" +msgstr "Метка" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:59 +msgid "Local IP" +msgstr "Локальный IP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:67 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:40 +msgid "Mode" +msgstr "Режим" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:78 +msgid "Multiqueue" +msgstr "Мультиочередь" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +msgid "Port" +msgstr "Порт" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:63 +msgid "Remote IP" +msgstr "Удаленный IP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +msgid "Server" +msgstr "Сервер" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:73 +msgid "Timeout" +msgstr "Таймаут" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 +msgid "chacha" +msgstr "Chacha" diff --git a/luci-app-glorytun-tcp/po/templates/glorytun-tcp.pot b/luci-app-glorytun-tcp/po/templates/glorytun-tcp.pot new file mode 100644 index 000000000..9cd0f6d60 --- /dev/null +++ b/luci-app-glorytun-tcp/po/templates/glorytun-tcp.pot @@ -0,0 +1,87 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 +msgid "Advanced Settings" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:41 +msgid "Client" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:34 +msgid "Enabled" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 +msgid "Force fallback cipher" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:31 +msgid "General Settings" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:24 +#: luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json:3 +msgid "Glorytun TCP" +msgstr "" + +#: luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json:3 +msgid "Grant access to glorytun TCP" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +msgid "Host" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:26 +msgid "Instances" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:55 +msgid "Interface name" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:51 +msgid "Key" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +msgid "Label" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:59 +msgid "Local IP" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:67 +msgid "MPTCP" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:40 +msgid "Mode" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:78 +msgid "Multiqueue" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +msgid "Port" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:63 +msgid "Remote IP" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +msgid "Server" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:73 +msgid "Timeout" +msgstr "" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 +msgid "chacha" +msgstr "" diff --git a/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po b/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po new file mode 100644 index 000000000..522561c56 --- /dev/null +++ b/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-05 11:40+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 +msgid "Advanced Settings" +msgstr "高级设置" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:41 +msgid "Client" +msgstr "客户端" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:34 +msgid "Enabled" +msgstr "启用" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 +msgid "Force fallback cipher" +msgstr "强制回退密码" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:31 +msgid "General Settings" +msgstr "通用设置" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:24 +#: luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json:3 +msgid "Glorytun TCP" +msgstr "glorytun TCP" + +#: luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json:3 +msgid "Grant access to glorytun TCP" +msgstr "授予访问glorytun TCP的权限" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +msgid "Host" +msgstr "主机" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:26 +msgid "Instances" +msgstr "实例" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:55 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:51 +msgid "Key" +msgstr "秘钥" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +msgid "Label" +msgstr "标签" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:59 +msgid "Local IP" +msgstr "本地IP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:67 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:40 +msgid "Mode" +msgstr "模式" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:78 +msgid "Multiqueue" +msgstr "多队列" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +msgid "Port" +msgstr "端口" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:63 +msgid "Remote IP" +msgstr "远程IP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +msgid "Server" +msgstr "服务器" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:73 +msgid "Timeout" +msgstr "超时" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:70 +msgid "chacha" +msgstr "chacha密码" diff --git a/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po~ b/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po~ new file mode 100644 index 000000000..1db94cdb9 --- /dev/null +++ b/luci-app-glorytun-tcp/po/zh_Hans/glorytun-tcp.po~ @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:21+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:32 +msgid "Advanced Settings" +msgstr "高级设置" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:38 +msgid "Client" +msgstr "客户端" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:34 +msgid "Enabled" +msgstr "开启" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +msgid "Force fallback cipher" +msgstr "强制回退密码" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:31 +msgid "General Settings" +msgstr "通用设置" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:24 +#: luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json:3 +msgid "Glorytun TCP" +msgstr "glorytun TCP" + +#: luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json:3 +msgid "Grant access to glorytun TCP" +msgstr "授予访问glorytun TCP的权限" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:42 +msgid "Host" +msgstr "主机" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:26 +msgid "Instances" +msgstr "实例" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:52 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:48 +msgid "Key" +msgstr "秘钥" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:82 +msgid "Label" +msgstr "标签" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:56 +msgid "Local IP" +msgstr "本地IP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:64 +msgid "MPTCP" +msgstr "聚合" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:37 +msgid "Mode" +msgstr "模式" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:77 +msgid "Multiqueue" +msgstr "多队列" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:45 +msgid "Port" +msgstr "端口" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:60 +msgid "Remote IP" +msgstr "远程IP" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:39 +msgid "Server" +msgstr "服务器" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:72 +msgid "Timeout" +msgstr "超时" + +#: luci-app-glorytun-tcp/htdocs/luci-static/resources/view/services/glorytun-tcp.js:68 +msgid "chacha" +msgstr "chacha密码" diff --git a/luci-app-glorytun/root/etc/hotplug.d/iface/30-glorytun b/luci-app-glorytun-tcp/root/etc/hotplug.d/iface/30-glorytun similarity index 86% rename from luci-app-glorytun/root/etc/hotplug.d/iface/30-glorytun rename to luci-app-glorytun-tcp/root/etc/hotplug.d/iface/30-glorytun index bdeb3d22b..714c17a66 100644 --- a/luci-app-glorytun/root/etc/hotplug.d/iface/30-glorytun +++ b/luci-app-glorytun-tcp/root/etc/hotplug.d/iface/30-glorytun @@ -15,8 +15,9 @@ set_default() { local remoteip local config="$1" local iface + config_get enable "$config" enable config_get iface "$config" dev - [ "$iface" = "$DEVICE" ] && { + [ "$iface" = "$DEVICE" ] && [ "$enable" = "1" ] && { config_get localip "$config" localip config_get remoteip "$config" remoteip [ "$remoteip" != "" ] && [ "$localip" != "" ] && ifconfig $DEVICE $localip pointopoint $remoteip up diff --git a/luci-app-glorytun/root/etc/uci-defaults/1200-luci-glorytun b/luci-app-glorytun-tcp/root/etc/uci-defaults/1200-luci-glorytun similarity index 95% rename from luci-app-glorytun/root/etc/uci-defaults/1200-luci-glorytun rename to luci-app-glorytun-tcp/root/etc/uci-defaults/1200-luci-glorytun index 272be4130..e78973fe0 100644 --- a/luci-app-glorytun/root/etc/uci-defaults/1200-luci-glorytun +++ b/luci-app-glorytun-tcp/root/etc/uci-defaults/1200-luci-glorytun @@ -15,12 +15,11 @@ if [ "$(uci -q get network.glorytun)" = "" ] && [ "$(uci -q get network.omrvpn)" uci -q batch <<-EOF >/dev/null delete network.glorytun set network.glorytun=interface - set network.glorytun.ifname=tun0 + set network.glorytun.device=tun0 set network.glorytun.proto=dhcp set network.glorytun.ip4table=vpn set network.glorytun.multipath=off set network.glorytun.leasetime=12h - set network.glorytun.mtu=1400 commit network EOF # set network.glorytun.proto=static @@ -49,6 +48,7 @@ if [ "$(uci -q show firewall | grep Allow-All-LAN-to-VPN)" = "" ]; then set firewall.@rule[-1].name='Allow-All-LAN-to-VPN' set firewall.@rule[-1].dest='vpn' set firewall.@rule[-1].src='lan' + set firewall.@rule[-1].proto='all' commit firewall EOF fi diff --git a/luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json b/luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json new file mode 100644 index 000000000..03e7dcf7a --- /dev/null +++ b/luci-app-glorytun-tcp/root/usr/share/luci/menu.d/luci-app-glorytun-tcp.json @@ -0,0 +1,13 @@ +{ + "admin/vpn/glorytun-tcp": { + "title": "Glorytun TCP", + "order": 60, + "action": { + "type": "view", + "path": "services/glorytun-tcp" + }, + "depends": { + "acl": [ "luci-app-glorytun-tcp" ] + } + } +} diff --git a/luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json b/luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json new file mode 100644 index 000000000..f4f288835 --- /dev/null +++ b/luci-app-glorytun-tcp/root/usr/share/rpcd/acl.d/luci-app-glorytun-tcp.json @@ -0,0 +1,11 @@ +{ + "luci-app-glorytun-tcp": { + "description": "Grant access to glorytun TCP", + "read": { + "uci": [ "glorytun" ] + }, + "write": { + "uci": [ "glorytun" ] + } + } +} \ No newline at end of file diff --git a/luci-app-glorytun-udp/Makefile b/luci-app-glorytun-udp/Makefile new file mode 100644 index 000000000..97608e0e7 --- /dev/null +++ b/luci-app-glorytun-udp/Makefile @@ -0,0 +1,16 @@ +# +# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) +# +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI Interface to Glorytun UDP +LUCI_DEPENDS:=+glorytun-udp + +PKG_LICENSE:=GPLv3 + +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js b/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js new file mode 100644 index 000000000..b9e0681fb --- /dev/null +++ b/luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js @@ -0,0 +1,102 @@ +'use strict'; +'require rpc'; +'require poll'; +'require form'; +'require fs'; +'require uci'; +'require tools.widgets as widgets'; + +var callHostHints; + +var callServiceList = rpc.declare({ + object: 'service', + method: 'list', + params: [ 'name' ], + expect: { '': {} } +}); + +return L.view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + load: function() { + return this.callHostHints(); + }, + + render: function(hosts) { + var m, s, o; + + m = new form.Map('glorytun-udp', _('Glorytun UDP')); + + s = m.section(form.GridSection, 'glorytun-udp', _('Instances')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + + o = s.taboption('general', form.Flag, 'enable', _('Enabled')); + o.rmempty = false; + + o = s.taboption('general',form.Value, 'label', _('Label')); + o.rmempty = true; + + o = s.taboption('general', form.ListValue, 'mode', _('Mode')); + o.value('to',_('Client')); + o.value('from',_('Server')); + o.modalonly = true; + + o = s.taboption('general', form.Value, 'host', _('Host')); + o.rmempty = false; + + o = s.taboption('general', form.Value, 'port', _('Port')); + o.rmempty = false; + + o = s.taboption('general', form.Value, 'key', _('Key')); + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('general', form.Value, 'dev', _('Interface name')); + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('general', form.Value, 'localip', _('Local IP')); + o.datatype = 'or(ip4addr,ip6addr)'; + o.rmempty = false; + + o = s.taboption('general', form.Value, 'remoteip', _('Remote IP')); + o.datatype = 'or(ip4addr,ip6addr)'; + o.rmempty = false; + + o = s.taboption('advanced', form.Flag, 'persist', _('Persist'), _('Keep the tunnel device after exiting')); + o.modalonly = true; + + o = s.taboption('advanced', form.Flag, 'chacha', _('chacha'), _('Force fallback cipher')); + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'kxtimeout', _('Key rotation timeout')); + o.default = '7d'; + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'timetolerance', _('Clock sync tolerance')); + o.default = '10m'; + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'keepalive', _('Keep alive timeout')); + o.default = '25s'; + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('advanced', form.Flag, 'rateauto', _('Dynamic rate detection')); + o.rmempty = false; + o.modalonly = true; + + return m.render(); + } +}); diff --git a/luci-app-glorytun-udp/po/fr/glorytun-udp.po b/luci-app-glorytun-udp/po/fr/glorytun-udp.po new file mode 100644 index 000000000..cab674d18 --- /dev/null +++ b/luci-app-glorytun-udp/po/fr/glorytun-udp.po @@ -0,0 +1,108 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 +msgid "Advanced Settings" +msgstr "Configuration avancée" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:49 +msgid "Client" +msgstr "Client" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:86 +msgid "Clock sync tolerance" +msgstr "Tolérance de synchronisation d'horloge" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:96 +msgid "Dynamic rate detection" +msgstr "Détection dynamique de la vitesse" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:42 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 +msgid "Force fallback cipher" +msgstr "Forcer le chiffrement de secours" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:39 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:32 +#: luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json:3 +msgid "Glorytun UDP" +msgstr "Glorytun UDP" + +#: luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json:3 +msgid "Grant access to glorytun UDP" +msgstr "Accorder l'accès à Glorytun UDP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +msgid "Host" +msgstr "Hôte" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:34 +msgid "Instances" +msgstr "Instances" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:63 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:91 +msgid "Keep alive timeout" +msgstr "Délai de maintien de la connexion (Keep Alive)" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 +msgid "Keep the tunnel device after exiting" +msgstr "Gardez le périphérique tunnel après avoir quitté" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:59 +msgid "Key" +msgstr "Clef" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:81 +msgid "Key rotation timeout" +msgstr "Délai de rotation des clés" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:67 +msgid "Local IP" +msgstr "Adresse IP locale" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:48 +msgid "Mode" +msgstr "Mode" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 +msgid "Persist" +msgstr "Persister" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +msgid "Port" +msgstr "Port" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:71 +msgid "Remote IP" +msgstr "IP Distante" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +msgid "Server" +msgstr "Serveur" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 +msgid "chacha" +msgstr "Chacha" diff --git a/luci-app-glorytun-udp/po/fr/glorytun-udp.po~ b/luci-app-glorytun-udp/po/fr/glorytun-udp.po~ new file mode 100644 index 000000000..6c7e564dc --- /dev/null +++ b/luci-app-glorytun-udp/po/fr/glorytun-udp.po~ @@ -0,0 +1,108 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 +msgid "Advanced Settings" +msgstr "Configuration avancée" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:46 +msgid "Client" +msgstr "Client" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:85 +msgid "Clock sync tolerance" +msgstr "Tolérance de synchronisation d'horloge" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:95 +msgid "Dynamic rate detection" +msgstr "Détection dynamique de la vitesse" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:42 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +msgid "Force fallback cipher" +msgstr "Forcer le chiffrement de secours" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:39 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:32 +#: luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json:3 +msgid "Glorytun UDP" +msgstr "Glorytun UDP" + +#: luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json:3 +msgid "Grant access to glorytun UDP" +msgstr "Accorder l'accès à Glorytun UDP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +msgid "Host" +msgstr "Hôte" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:34 +msgid "Instances" +msgstr "Instances" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:60 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:90 +msgid "Keep alive timeout" +msgstr "Délai de maintien de la connexion (Keep Alive)" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +msgid "Keep the tunnel device after exiting" +msgstr "Gardez le périphérique tunnel après avoir quitté" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +msgid "Key" +msgstr "Clef" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:80 +msgid "Key rotation timeout" +msgstr "Délai de rotation des clés" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:99 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:64 +msgid "Local IP" +msgstr "Adresse IP locale" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +msgid "Mode" +msgstr "Mode" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +msgid "Persist" +msgstr "Persister" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +msgid "Port" +msgstr "Port" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:68 +msgid "Remote IP" +msgstr "IP Distante" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:47 +msgid "Server" +msgstr "Serveur" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +msgid "chacha" +msgstr "Chacha" diff --git a/luci-app-glorytun-udp/po/ru/glorytun-udp.po b/luci-app-glorytun-udp/po/ru/glorytun-udp.po new file mode 100644 index 000000000..29e624040 --- /dev/null +++ b/luci-app-glorytun-udp/po/ru/glorytun-udp.po @@ -0,0 +1,109 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 +msgid "Advanced Settings" +msgstr "Дополнительные настройки" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:49 +msgid "Client" +msgstr "Клиент" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:86 +msgid "Clock sync tolerance" +msgstr "Допуск синхронизации часов" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:96 +msgid "Dynamic rate detection" +msgstr "Определение динамической скорости" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:42 +msgid "Enabled" +msgstr "Установлено" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 +msgid "Force fallback cipher" +msgstr "Принудительное резервное шифрование" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:39 +msgid "General Settings" +msgstr "Основные настройки" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:32 +#: luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json:3 +msgid "Glorytun UDP" +msgstr "Glorytun UDP" + +#: luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json:3 +msgid "Grant access to glorytun UDP" +msgstr "Полный доступ к glorytun UDP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +msgid "Host" +msgstr "Хост" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:34 +msgid "Instances" +msgstr "Экземпляры" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:63 +msgid "Interface name" +msgstr "Имя интерфейса" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:91 +msgid "Keep alive timeout" +msgstr "Таймаут активности" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 +msgid "Keep the tunnel device after exiting" +msgstr "Сохранить туннель после выхода" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:59 +msgid "Key" +msgstr "Ключ" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:81 +msgid "Key rotation timeout" +msgstr "Тайм-аут смены ключа" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +msgid "Label" +msgstr "Метка" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:67 +msgid "Local IP" +msgstr "Локальный IP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:48 +msgid "Mode" +msgstr "Режим" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 +msgid "Persist" +msgstr "Удерживать" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +msgid "Port" +msgstr "Порт" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:71 +msgid "Remote IP" +msgstr "Удаленный IP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +msgid "Server" +msgstr "Сервер" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 +msgid "chacha" +msgstr "Chacha" diff --git a/luci-app-glorytun-udp/po/templates/glorytun-udp.pot b/luci-app-glorytun-udp/po/templates/glorytun-udp.pot new file mode 100644 index 000000000..c292fcace --- /dev/null +++ b/luci-app-glorytun-udp/po/templates/glorytun-udp.pot @@ -0,0 +1,99 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 +msgid "Advanced Settings" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:49 +msgid "Client" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:86 +msgid "Clock sync tolerance" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:96 +msgid "Dynamic rate detection" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:42 +msgid "Enabled" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 +msgid "Force fallback cipher" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:39 +msgid "General Settings" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:32 +#: luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json:3 +msgid "Glorytun UDP" +msgstr "" + +#: luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json:3 +msgid "Grant access to glorytun UDP" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +msgid "Host" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:34 +msgid "Instances" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:63 +msgid "Interface name" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:91 +msgid "Keep alive timeout" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 +msgid "Keep the tunnel device after exiting" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:59 +msgid "Key" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:81 +msgid "Key rotation timeout" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +msgid "Label" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:67 +msgid "Local IP" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:48 +msgid "Mode" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 +msgid "Persist" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +msgid "Port" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:71 +msgid "Remote IP" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +msgid "Server" +msgstr "" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 +msgid "chacha" +msgstr "" diff --git a/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po b/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po new file mode 100644 index 000000000..14e382bbf --- /dev/null +++ b/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po @@ -0,0 +1,108 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-05 11:40+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 +msgid "Advanced Settings" +msgstr "高级设置" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:49 +msgid "Client" +msgstr "客户端" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:86 +msgid "Clock sync tolerance" +msgstr "时钟同步容限" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:96 +msgid "Dynamic rate detection" +msgstr "动态速率检测" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:42 +msgid "Enabled" +msgstr "启用" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 +msgid "Force fallback cipher" +msgstr "强制回退密码" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:39 +msgid "General Settings" +msgstr "通用设置" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:32 +#: luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json:3 +msgid "Glorytun UDP" +msgstr "glorytun UDP" + +#: luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json:3 +msgid "Grant access to glorytun UDP" +msgstr "授予访问glorytun UDP的权限" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +msgid "Host" +msgstr "主机" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:34 +msgid "Instances" +msgstr "实例" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:63 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:91 +msgid "Keep alive timeout" +msgstr "保持超时" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 +msgid "Keep the tunnel device after exiting" +msgstr "退出后保留隧道设备" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:59 +msgid "Key" +msgstr "秘钥" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:81 +msgid "Key rotation timeout" +msgstr "秘钥轮换超时" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +msgid "Label" +msgstr "标签" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:67 +msgid "Local IP" +msgstr "本地IP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:48 +msgid "Mode" +msgstr "模式" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:75 +msgid "Persist" +msgstr "保持" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +msgid "Port" +msgstr "端口" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:71 +msgid "Remote IP" +msgstr "远程IP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +msgid "Server" +msgstr "服务器" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:78 +msgid "chacha" +msgstr "chacha密码" diff --git a/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po~ b/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po~ new file mode 100644 index 000000000..3491db1ab --- /dev/null +++ b/luci-app-glorytun-udp/po/zh_Hans/glorytun-udp.po~ @@ -0,0 +1,108 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:21+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:40 +msgid "Advanced Settings" +msgstr "高级设置" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:46 +msgid "Client" +msgstr "客户端" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:85 +msgid "Clock sync tolerance" +msgstr "时钟同步容限" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:95 +msgid "Dynamic rate detection" +msgstr "动态速率检测" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:42 +msgid "Enabled" +msgstr "开启" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +msgid "Force fallback cipher" +msgstr "强制回退密码" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:39 +msgid "General Settings" +msgstr "通用设置" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:32 +#: luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json:3 +msgid "Glorytun UDP" +msgstr "glorytun UDP" + +#: luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json:3 +msgid "Grant access to glorytun UDP" +msgstr "授予访问glorytun UDP的权限" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:50 +msgid "Host" +msgstr "主机" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:34 +msgid "Instances" +msgstr "实例" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:60 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:90 +msgid "Keep alive timeout" +msgstr "保持超时" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +msgid "Keep the tunnel device after exiting" +msgstr "退出后保留隧道设备" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:56 +msgid "Key" +msgstr "秘钥" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:80 +msgid "Key rotation timeout" +msgstr "秘钥轮换超时" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:99 +msgid "Label" +msgstr "标签" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:64 +msgid "Local IP" +msgstr "本地IP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:45 +msgid "Mode" +msgstr "模式" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:72 +msgid "Persist" +msgstr "保持" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:53 +msgid "Port" +msgstr "端口" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:68 +msgid "Remote IP" +msgstr "远程IP" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:47 +msgid "Server" +msgstr "服务器" + +#: luci-app-glorytun-udp/htdocs/luci-static/resources/view/services/glorytun-udp.js:76 +msgid "chacha" +msgstr "chacha密码" diff --git a/luci-app-glorytun-udp/root/etc/hotplug.d/iface/30-glorytun-udp b/luci-app-glorytun-udp/root/etc/hotplug.d/iface/30-glorytun-udp new file mode 100644 index 000000000..1ccf10b8c --- /dev/null +++ b/luci-app-glorytun-udp/root/etc/hotplug.d/iface/30-glorytun-udp @@ -0,0 +1,35 @@ +#!/bin/sh +# +# Load the glorytun config +# +# Author: Ycarus (Yannick Chabanois) +# Released under GPL 3 or later + +[ "$ACTION" = ifup -o "$ACTION" = ifupdate ] || exit 0 + +. /lib/functions.sh +. /lib/functions/network.sh + +set_default() { + local localip + local remoteip + local config="$1" + local iface + config_get enable "$config" enable + config_get iface "$config" dev + [ "$iface" = "$DEVICE" ] && [ "$enable" = "1" ] && { + config_get localip "$config" localip + config_get remoteip "$config" remoteip + config_get kxtimeout "$config" kxtimeout "7d" + config_get timetolerance "$config" timetolerance "10m" + config_get keepalive "$config" keepalive "25s" + [ "$remoteip" != "" ] && [ "$localip" != "" ] && ifconfig $DEVICE $localip pointopoint $remoteip up + while [ -z "$(glorytun-udp list | grep $iface)" ]; do + sleep 1 + done + glorytun-udp set dev $iface kxtimeout $kxtimeout timetolerance $timetolerance keepalive $keepalive + } +} + +config_load glorytun-udp +config_foreach set_default glorytun-udp diff --git a/luci-app-glorytun-udp/root/etc/uci-defaults/1201-luci-glorytun-udp b/luci-app-glorytun-udp/root/etc/uci-defaults/1201-luci-glorytun-udp new file mode 100644 index 000000000..ebe335318 --- /dev/null +++ b/luci-app-glorytun-udp/root/etc/uci-defaults/1201-luci-glorytun-udp @@ -0,0 +1,47 @@ +#!/bin/sh + +uci -q batch <<-EOF >/dev/null + delete glorytun-udp[-1] + add ucitrack glorytun-udp + set ucitrack.@glorytun-udp[-1].init=glorytun-udp + commit ucitrack +EOF + +if [ "$(uci -q get network.glorytun-udp)" = "" ] && [ "$(uci -q get network.omrvpn)" = "" ]; then + uci -q batch <<-EOF >/dev/null + delete network.glorytun-udp + set network.glorytun-udp=interface + set network.glorytun-udp.device=tun0 + set network.glorytun-udp.proto=dhcp + set network.glorytun-udp.ip4table=vpn + set network.glorytun-udp.multipath=off + set network.glorytun-udp.leasetime=12h + commit network + EOF +fi + +if [ "$(uci -q show firewall | grep glorytun-udp)" = "" ] && [ "$(uci -q get network.omrvpn)" = "" ]; then + uci -q batch <<-EOF >/dev/null + set firewall.zone_vpn=zone + set firewall.zone_vpn.name=vpn + set firewall.zone_vpn.network=glorytun-udp + set firewall.zone_vpn.masq=1 + set firewall.zone_vpn.input=REJECT + set firewall.zone_vpn.forward=ACCEPT + set firewall.zone_vpn.output=ACCEPT + commit firewall + EOF +fi +if [ "$(uci -q show firewall | grep Allow-All-LAN-to-VPN)" = "" ]; then + uci -q batch <<-EOF >/dev/null + add firewall rule + set firewall.@rule[-1].enabled='1' + set firewall.@rule[-1].target='ACCEPT' + set firewall.@rule[-1].name='Allow-All-LAN-to-VPN' + set firewall.@rule[-1].dest='vpn' + set firewall.@rule[-1].src='lan' + commit firewall + EOF +fi +rm -f /tmp/luci-indexcache +exit 0 diff --git a/luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json b/luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json new file mode 100644 index 000000000..b84551484 --- /dev/null +++ b/luci-app-glorytun-udp/root/usr/share/luci/menu.d/luci-app-glorytun-udp.json @@ -0,0 +1,13 @@ +{ + "admin/vpn/glorytun-udp": { + "title": "Glorytun UDP", + "order": 60, + "action": { + "type": "view", + "path": "services/glorytun-udp" + }, + "depends": { + "acl": [ "luci-app-glorytun-udp" ] + } + } +} diff --git a/luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json b/luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json new file mode 100644 index 000000000..3e24adb8e --- /dev/null +++ b/luci-app-glorytun-udp/root/usr/share/rpcd/acl.d/luci-app-glorytun-udp.json @@ -0,0 +1,11 @@ +{ + "luci-app-glorytun-udp": { + "description": "Grant access to glorytun UDP", + "read": { + "uci": [ "glorytun-udp" ] + }, + "write": { + "uci": [ "glorytun-udp" ] + } + } +} \ No newline at end of file diff --git a/luci-app-glorytun/Makefile b/luci-app-glorytun/Makefile deleted file mode 100644 index 07fc5f1d3..000000000 --- a/luci-app-glorytun/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# Copyright (C) 2017-2019 Ycarus (Yannick Chabanois) -# -# This is based on OpenVPN LuCI Support. -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Support for Glorytun -LUCI_DEPENDS:=+glorytun +glorytun-udp -LUCI_PKGARCH:=all -PKG_LICENSE:=GPLv2 - -PKG_MAINTAINER:=Ycarus (Yannick Chabanois) - -include ../luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-glorytun/luasrc/controller/glorytun.lua b/luci-app-glorytun/luasrc/controller/glorytun.lua deleted file mode 100644 index 8624e1adc..000000000 --- a/luci-app-glorytun/luasrc/controller/glorytun.lua +++ /dev/null @@ -1,12 +0,0 @@ --- Copyright 2018 Ycarus (Yannick Chabanois) --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.glorytun", package.seeall) - -function index() - if not nixio.fs.access("/etc/config/glorytun") then - return - end - entry({"admin", "services", "glorytun"}, cbi("glorytun"), _("Glorytun") ) - entry({"admin", "services", "glorytun", "settings"}, cbi("glorytun-settings"), nil ).leaf = true -end diff --git a/luci-app-glorytun/luasrc/model/cbi/glorytun-settings.lua b/luci-app-glorytun/luasrc/model/cbi/glorytun-settings.lua deleted file mode 100644 index aab2f460c..000000000 --- a/luci-app-glorytun/luasrc/model/cbi/glorytun-settings.lua +++ /dev/null @@ -1,83 +0,0 @@ --- Copyright 2018 Ycarus (Yannick Chabanois) --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -require("luci.ip") -require("luci.model.uci") - - -local basicParams = { - -- - -- Widget, Name, Default(s), Description - -- - - { Flag,"enable",0, translate("Enable") }, - { Value,"port",65001, translate("TCP port # for both local and remote") }, - { Value,"dev","tun0", translate("Interface name") }, - { Value,"host","vpnserver.example.org", translate("Remote host name or ip address") }, - { Value,"localip","192.168.99.2", translate("Local tunnel ip address") }, - { Value,"remoteip","192.168.99.1", translate("Remote tunnel ip address") }, - { Value,"key","secretkey", translate("The secret key") }, - { ListValue,"proto",{ "tcp", "udp" }, translate("Protocol") }, - { Flag,"listener",0, translate("Server mode") }, - - { Value,"bind","", translate("Bind address") }, - --{ Value,"bind-backup","", translate("Bind backup") }, - { Value,"bindport",65002, translate("Bind port") }, - { Value,"mtu",1500, translate("MTU") }, - { Flag,"mtuauto",0, translate("MTU auto") }, - - { Flag,"mptcp",0, translate("MPTCP") }, - { Flag,"chacha20",0, translate("Use ChaCha20 stream cipher") } -} - - -local m = Map("glorytun") -local p = m:section( SimpleSection ) - -p.template = "glorytun/pageswitch" -p.mode = "settings" -p.instance = arg[1] - - -local s = m:section( NamedSection, arg[1], "glorytun" ) - -for _, option in ipairs(basicParams) do - local o = s:option( - option[1], option[2], - option[2], option[4] - ) - - o.optional = true - - if option[1] == DummyValue then - o.value = option[3] - else - if option[1] == DynamicList then - function o.cfgvalue(...) - local val = AbstractValue.cfgvalue(...) - return ( val and type(val) ~= "table" ) and { val } or val - end - end - - if type(option[3]) == "table" then - if o.optional then o:value("", "-- remove --") end - for _, v in ipairs(option[3]) do - v = tostring(v) - o:value(v) - end - o.default = tostring(option[3][1]) - else - o.default = tostring(option[3]) - end - end - - for i=5,#option do - if type(option[i]) == "table" then - o:depends(option[i]) - end - end -end - -return m - diff --git a/luci-app-glorytun/luasrc/model/cbi/glorytun.lua b/luci-app-glorytun/luasrc/model/cbi/glorytun.lua deleted file mode 100644 index 1a36cda2d..000000000 --- a/luci-app-glorytun/luasrc/model/cbi/glorytun.lua +++ /dev/null @@ -1,147 +0,0 @@ --- Copyright 2018 Ycarus (Yannick Chabanois) --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local sys = require "luci.sys" -local uci = require "luci.model.uci".cursor() -local testfullps = luci.sys.exec("ps --help 2>&1 | grep BusyBox") --check which ps do we have -local psstring = (string.len(testfullps)>0) and "ps w" or "ps axfw" --set command we use to get pid - -local m = Map("glorytun", translate("Glorytun")) -local s = m:section( TypedSection, "glorytun", translate("Glorytun instances"), translate("Below is a list of configured Glorytun instances and their current state") ) -s.template = "cbi/tblsection" -s.template_addremove = "glorytun/cbi-select-input-add" -s.addremove = true -s.add_select_options = { } -s.add_select_options[''] = '' -s.extedit = luci.dispatcher.build_url( - "admin", "services", "glorytun", "settings", "%s" -) - -uci:load("glorytun_recipes") -uci:foreach( "glorytun_recipes", "glorytun_recipe", - function(section) - s.add_select_options[section['.name']] = - section['_description'] or section['.name'] - end -) - -function s.getPID(section) -- Universal function which returns valid pid # or nil - local pid = sys.exec("%s | grep -w %s | grep glorytun | grep -v grep | awk '{print $1}'" % { psstring,section} ) - if pid and #pid > 0 and tonumber(pid) ~= nil then - return tonumber(pid) - else - return nil - end -end - -function s.parse(self, section) - local recipe = luci.http.formvalue( - luci.cbi.CREATE_PREFIX .. self.config .. "." .. - self.sectiontype .. ".select" - ) - - if recipe and not s.add_select_options[recipe] then - self.invalid_cts = true - else - TypedSection.parse( self, section ) - end -end - -function s.create(self, name) - local recipe = luci.http.formvalue( - luci.cbi.CREATE_PREFIX .. self.config .. "." .. - self.sectiontype .. ".select" - ) - name = luci.http.formvalue( - luci.cbi.CREATE_PREFIX .. self.config .. "." .. - self.sectiontype .. ".text" - ) - if #name > 3 and not name:match("[^a-zA-Z0-9_]") then - --uci:section( - -- "glorytun", "glorytun", name, - -- uci:get_all( "glorytun_recipes", recipe ) - --) - local recipe_data = uci:get_all( "glorytun_recipes", recipe ) - uci:set("glorytun", name,"glorytun") - local k, v - for k, v in pairs(recipe_data) do - uci:set("glorytun", name, k,v) - end - - uci:delete("glorytun", name, "_role") - uci:delete("glorytun", name, "_description") - uci:commit("glorytun") - uci:save("glorytun") - - luci.http.redirect( self.extedit:format(name) ) - elseif #name > 0 then - self.invalid_cts = true - end - - return 0 -end - - -s:option( Flag, "enable", translate("Enabled") ) - -local active = s:option( DummyValue, "_active", translate("Started") ) -function active.cfgvalue(self, section) - local pid = s.getPID(section) - if pid ~= nil then - return (sys.process.signal(pid, 0)) - and translatef("yes (%i)", pid) - or translate("no") - end - return translate("no") -end - -local updown = s:option( Button, "_updown", translate("Start/Stop") ) -updown._state = false -updown.redirect = luci.dispatcher.build_url( - "admin", "services", "glorytun" -) -function updown.cbid(self, section) - local pid = s.getPID(section) - self._state = pid ~= nil and sys.process.signal(pid, 0) - self.option = self._state and "stop" or "start" - return AbstractValue.cbid(self, section) -end -function updown.cfgvalue(self, section) - self.title = self._state and "stop" or "start" - self.inputstyle = self._state and "reset" or "reload" -end - -local port = s:option( DummyValue, "port", translate("Port") ) -function port.cfgvalue(self, section) - local val = AbstractValue.cfgvalue(self, section) - return val or "65001" -end -local dev = s:option( DummyValue, "dev", translate("Interface") ) -function dev.cfgvalue(self, section) - local val = AbstractValue.cfgvalue(self, section) - return val or "tun" -end -local proto = s:option( DummyValue, "proto", translate("Protocol") ) -function proto.cfgvalue(self, section) - local val = AbstractValue.cfgvalue(self, section) - return val or "tcp" -end - -function updown.write(self, section, value) - if self.option == "stop" then - local pid = s.getPID(section) - if pid ~= nil then - sys.process.signal(pid,15) - end - else - local type = proto.cfgvalue(self,section) - luci.sys.call("/etc/init.d/glorytun-udp start %s" % section) - luci.sys.call("/etc/init.d/glorytun start %s" % section) - end - luci.http.redirect( self.redirect ) -end - - -return m diff --git a/luci-app-glorytun/luasrc/view/glorytun/cbi-select-input-add.htm b/luci-app-glorytun/luasrc/view/glorytun/cbi-select-input-add.htm deleted file mode 100644 index 0166de778..000000000 --- a/luci-app-glorytun/luasrc/view/glorytun/cbi-select-input-add.htm +++ /dev/null @@ -1,11 +0,0 @@ -
- <% if self.invalid_cts then -%>
<% end %> - - - - <% if self.invalid_cts then %>
<%:Invalid%>
<% end %> -
diff --git a/luci-app-glorytun/luasrc/view/glorytun/pageswitch.htm b/luci-app-glorytun/luasrc/view/glorytun/pageswitch.htm deleted file mode 100644 index a0c073963..000000000 --- a/luci-app-glorytun/luasrc/view/glorytun/pageswitch.htm +++ /dev/null @@ -1,13 +0,0 @@ -<%# - Copyright 2018 Ycarus (Yannick Chabanois) - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -
- - <%:Overview%> » - <%=luci.i18n.translatef("Instance \"%s\"", self.instance)%> - -
diff --git a/luci-app-glorytun/po/fr/glorytun.po b/luci-app-glorytun/po/fr/glorytun.po deleted file mode 100644 index 5477df925..000000000 --- a/luci-app-glorytun/po/fr/glorytun.po +++ /dev/null @@ -1,103 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Ycarus \n" -"Language-Team: \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" - -msgid "Add" -msgstr "Ajouter" - -msgid "Below is a list of configured Glorytun instances and their current state" -msgstr "Ci-dessous une liste des instances Glorytun configurées et leur état actuel" - -msgid "Bind address" -msgstr "" - -msgid "Bind backup" -msgstr "" - -msgid "Bind port" -msgstr "Port de connexion" - -msgid "Enable" -msgstr "Active" - -msgid "Enabled" -msgstr "Activé" - -msgid "Glorytun" -msgstr "" - -msgid "Glorytun instances" -msgstr "Instances de Glorytun" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface name" -msgstr "Nom de l'interface" - -msgid "Invalid" -msgstr "Invalide" - -msgid "Local tunnel ip address" -msgstr "Adresse IP locale du tunnel" - -msgid "MPTCP" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "MTU auto" -msgstr "" - -msgid "Overview" -msgstr "Aperçu" - -msgid "Port" -msgstr "Port" - -msgid "Protocol" -msgstr "Protocole" - -msgid "Remote host name or ip address" -msgstr "Nom de l'hôte distant ou adresse IP" - -msgid "Remote tunnel ip address" -msgstr "Adresse IP distance du tunnel" - -msgid "Server mode" -msgstr "Mode serveur" - -msgid "Start/Stop" -msgstr "Marche/Arrêt" - -msgid "Started" -msgstr "Démarré" - -msgid "TCP port # for both local and remote" -msgstr "Port TCP local et distant" - -msgid "The secret key" -msgstr "La clef secréte" - -msgid "Use ChaCha20 stream cipher" -msgstr "Utiliser le chiffrement ChaCha20" - -msgid "no" -msgstr "non" - -msgid "yes (%i)" -msgstr "oui (%i)" diff --git a/luci-app-glorytun/po/templates/glorytun.pot b/luci-app-glorytun/po/templates/glorytun.pot deleted file mode 100644 index 9c862bb47..000000000 --- a/luci-app-glorytun/po/templates/glorytun.pot +++ /dev/null @@ -1,93 +0,0 @@ -msgid "" -msgstr "Content-Type: text/plain; charset=UTF-8" - -msgid "Add" -msgstr "" - -msgid "" -"Below is a list of configured Glorytun instances and their current state" -msgstr "" - -msgid "Bind address" -msgstr "" - -msgid "Bind backup" -msgstr "" - -msgid "Bind port" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Glorytun" -msgstr "" - -msgid "Glorytun instances" -msgstr "" - -msgid "Instance \"%s\"" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Local tunnel ip address" -msgstr "" - -msgid "MPTCP" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "MTU auto" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Remote host name or ip address" -msgstr "" - -msgid "Remote tunnel ip address" -msgstr "" - -msgid "Server mode" -msgstr "" - -msgid "Start/Stop" -msgstr "" - -msgid "Started" -msgstr "" - -msgid "TCP port # for both local and remote" -msgstr "" - -msgid "The secret key" -msgstr "" - -msgid "Use ChaCha20 stream cipher" -msgstr "" - -msgid "no" -msgstr "" - -msgid "yes (%i)" -msgstr "" diff --git a/luci-app-glorytun/root/etc/config/glorytun_recipes b/luci-app-glorytun/root/etc/config/glorytun_recipes deleted file mode 100644 index 693eb6da6..000000000 --- a/luci-app-glorytun/root/etc/config/glorytun_recipes +++ /dev/null @@ -1,50 +0,0 @@ -config glorytun_recipe servertcp - option _description "Simple TCP server configuration" - option _role "server" - option port "65001" - option dev "tun0" - option key "secretkey" - option listener "1" - option localip "192.168.99.1" - option remoteip "192.168.99.2" - option proto "tcp" - option enable "0" - -config glorytun_recipe clienttcp - option _description "Simple TCP client configuration" - option _role "client" - option port "65001" - option dev "tun0" - option host "vpnserver.example.org" - option key "secretkey" - option localip "192.168.99.2" - option remoteip "192.168.99.1" - option proto "tcp" - option enable "0" - -config glorytun_recipe serverudp - option _description "Simple UDP server configuration" - option _role "server" - option dev "tun0" - option bindport "65003" - option bind "192.168.99.1" - option key "secretkey" - option localip "192.168.99.1" - option remoteip "192.168.99.2" - option proto "udp" - option mtuauto "1" - option enable "0" - -config glorytun_recipe clientudp - option _description "Simple UDP client configuration" - option _role "client" - option port "65003" - option dev "tun0" - option host "vpnserver.example.org" - option key "secretkey" - option localip "192.168.99.2" - option remoteip "192.168.99.1" - option proto "udp" - option mtuauto "1" - option enable "0" - diff --git a/luci-app-haproxy-tcp/Makefile b/luci-app-haproxy-tcp/Makefile index aac05e085..75313517b 100644 --- a/luci-app-haproxy-tcp/Makefile +++ b/luci-app-haproxy-tcp/Makefile @@ -12,6 +12,6 @@ LUCI_DEPENDS:=+haproxy-nossl PKG_LICENSE:=MIT -include ../luci/luci.mk - +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-iperf/Makefile b/luci-app-iperf/Makefile index 72c467a81..28de819ae 100644 --- a/luci-app-iperf/Makefile +++ b/luci-app-iperf/Makefile @@ -10,6 +10,7 @@ LUCI_DEPENDS:=+iperf3-ssl PKG_LICENSE:=GPLv3 -include ../luci/luci.mk +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-iperf/luasrc/controller/iperf.lua b/luci-app-iperf/luasrc/controller/iperf.lua index e6cb2ec3a..8af54323d 100644 --- a/luci-app-iperf/luasrc/controller/iperf.lua +++ b/luci-app-iperf/luasrc/controller/iperf.lua @@ -26,7 +26,7 @@ function run_test(server,proto,mode,updown,omit,parallel,transmit,bitrate) if mode == "udp" then options = options .. " -u -b " .. bitrate end - if mode ~= "upload" then + if updown ~= "upload" then options = options .. " -R" end local ipv = "4" @@ -40,7 +40,7 @@ function run_test(server,proto,mode,updown,omit,parallel,transmit,bitrate) end local port = t[ math.random( #t ) ] if password ~= "" then - iperf = io.popen("omr-iperf -P %s -%s -O %s -t %s -J -Z %s" % {parallel,ipv,omit,transmit,options}) + iperf = io.popen("omr-iperf %s -P %s -%s -O %s -t %s -J -Z %s" % {server,parallel,ipv,omit,transmit,options}) else iperf = io.popen("iperf3 -c %s -P %s -%s -p %s -O %s -t %s -J -Z %s" % {ut.shellquote(addr),parallel,ipv,port,omit,transmit,options}) end diff --git a/luci-app-iperf/luasrc/view/iperf/test.htm b/luci-app-iperf/luasrc/view/iperf/test.htm index 660d7e4a8..8694869f3 100644 --- a/luci-app-iperf/luasrc/view/iperf/test.htm +++ b/luci-app-iperf/luasrc/view/iperf/test.htm @@ -160,6 +160,10 @@ end) %> +
+
+ <%:Server VPS IP is bypassed, so this will test only default route speed.%> +
diff --git a/luci-app-iperf/po/de/iperf.po b/luci-app-iperf/po/de/iperf.po new file mode 100644 index 000000000..53023734e --- /dev/null +++ b/luci-app-iperf/po/de/iperf.po @@ -0,0 +1,108 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "" +"für 'unbegrenzt' den Wert '0' setzen. (Muss für UDP-Tests eingeschränkt " +"werden)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "Ungültige Adresse!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Downstream" + +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Internet-Protokoll" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Wird geladen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Betriebsart" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Anzahl der parallel zu testenden Verbindungen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Die ersten n Sekunden nicht berücksichtigen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Server" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Einstellungen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Angestrebte Bandbreite (MBit/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 +msgid "Test" +msgstr "Test" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "" +"Diesese Oberfläche für iPerf ist im Beta-Stadium und ohne offiziellen " +"Support." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "Übertragungszeit in Sekunden" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Upstream" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "Warte auf Abschluss der Aufgaben" + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "iPerf Geschwindigkeitstests" + +#~ msgid "iperf" +#~ msgstr "iperf" diff --git a/luci-app-iperf/po/de/iperf.po~ b/luci-app-iperf/po/de/iperf.po~ new file mode 100644 index 000000000..cace2be1b --- /dev/null +++ b/luci-app-iperf/po/de/iperf.po~ @@ -0,0 +1,100 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "" +"für 'unbegrenzt' den Wert '0' setzen. (Muss für UDP-Tests eingeschränkt " +"werden)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "Ungültige Adresse!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Downstream" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Internet-Protokoll" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Wird geladen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Betriebsart" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Anzahl der parallel zu testenden Verbindungen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Die ersten n Sekunden nicht berücksichtigen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Server" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Einstellungen" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Angestrebte Bandbreite (MBit/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Test" +msgstr "Test" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "" +"Diesese Oberfläche für iPerf ist im Beta-Stadium und ohne offiziellen " +"Support." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "Übertragungszeit in Sekunden" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Upstream" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "Warte auf Abschluss der Aufgaben" + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "iPerf Geschwindigkeitstests" + +#: luci-app-iperf/luasrc/controller/iperf.lua:7 +msgid "iperf" +msgstr "iperf" diff --git a/luci-app-iperf/po/fr/iperf.po b/luci-app-iperf/po/fr/iperf.po index 2c003da5d..711692095 100644 --- a/luci-app-iperf/po/fr/iperf.po +++ b/luci-app-iperf/po/fr/iperf.po @@ -1,70 +1,109 @@ msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" -"Last-Translator: Ycarus \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" "Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 msgid "0 for unlimited. Need to be limited for UDP test" -msgstr "" +msgstr "0 pour sans limite. Nécessite d'être limité pour les tests UDP." +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 msgid "Bad address specified!" -msgstr "" +msgstr "Adresse invalide !" +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 msgid "Download" msgstr "Téléchargement" -msgid "Internet protocol" -msgstr "" +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "Accorder l'accès UCI pour luci-app-iperf" +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Protocole Internet" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 msgid "Loading" msgstr "Chargement" +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 msgid "Mode of operation" -msgstr "" +msgstr "Mode de fonctionnement" +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 msgid "Number of parallel client streams to run" -msgstr "" +msgstr "Nombre de client en parallèle" +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 msgid "Omit the first n seconds" -msgstr "" +msgstr "Passe les n premières secondes" +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 msgid "Server" msgstr "Serveur" +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" +"L'IP du serveur VPS est contournée, donc cela testera uniquement la vitesse " +"de route par défaut." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 msgid "Settings" msgstr "Paramètres" +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 msgid "Target bitrate (Mbits/s)" -msgstr "" +msgstr "Vitesse souhaitée (Mbits/s)" +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 msgid "Test" -msgstr "Teste" +msgstr "Essai" +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 msgid "This iPerf interface is in bêta. No support for this." -msgstr "" +msgstr "Cette interface pour iPerf est en bêta. Pas de support pour ça." +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 msgid "Time to transmit for (s)" -msgstr "" +msgstr "Temps de transmission (s)" +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 msgid "Upload" -msgstr "Envoie" +msgstr "Téléverser" +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 msgid "Waiting for command to complete..." -msgstr "" +msgstr "En attente de la réponse de la commande..." +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 msgid "iPerf" -msgstr "" +msgstr "iPerf" +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 msgid "iPerf speed tests" -msgstr "" +msgstr "Tests de vitesse iPerf" -msgid "iperf" -msgstr "" +#~ msgid "iperf" +#~ msgstr "iperf" diff --git a/luci-app-iperf/po/fr/iperf.po~ b/luci-app-iperf/po/fr/iperf.po~ new file mode 100644 index 000000000..ab1afefd3 --- /dev/null +++ b/luci-app-iperf/po/fr/iperf.po~ @@ -0,0 +1,99 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2020-09-30 08:50+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0 pour sans limite. Nécessite d'être limité pour les tests UDP." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "Adresse invalide !" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Téléchargement" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Protocole Internet" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Chargement" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Mode de fonctionnement" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Nombre de client en parallèle" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Passe les n premières secondes" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Serveur" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Paramètres" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Vitesse souhaitée (Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Test" +msgstr "Teste" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "Cette interface pour iPerf est en bêta. Pas de support pour ça." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "Temps de transmission (s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Envoie" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "En attente de la réponse de la commande..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "Tests de vitesse iPerf" + +#: luci-app-iperf/luasrc/controller/iperf.lua:7 +msgid "iperf" +msgstr "iperf" diff --git a/luci-app-iperf/po/it/iperf.po b/luci-app-iperf/po/it/iperf.po new file mode 100644 index 000000000..b8668f2bd --- /dev/null +++ b/luci-app-iperf/po/it/iperf.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-09-21 12:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0 per illimitato. Deve essere limitato per il test UDP" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "È stato specificato un indirizzo errato!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Scarica" + +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Internet Protocol (Protocollo Internet)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Caricamento in corso" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Modalità di funzionamento" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Numero di flussi client paralleli da eseguire" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Ometti i primi n secondi" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Server" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Impostazioni" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Bitrate desiderato (Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 +msgid "Test" +msgstr "Test" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "Questa interfaccia iPerf è in bêta." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "È ora di trasmettere per (s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Carica" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "In attesa del completamento del comando ..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "Prove di velocità iPerf" + +#~ msgid "iperf" +#~ msgstr "iPerf" diff --git a/luci-app-iperf/po/it/iperf.po~ b/luci-app-iperf/po/it/iperf.po~ new file mode 100644 index 000000000..55cef15bd --- /dev/null +++ b/luci-app-iperf/po/it/iperf.po~ @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-09-21 12:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0 per illimitato. Deve essere limitato per il test UDP" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "È stato specificato un indirizzo errato!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Scarica" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Internet Protocol (Protocollo Internet)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Caricamento in corso" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Modalità di funzionamento" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Numero di flussi client paralleli da eseguire" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Ometti i primi n secondi" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Server" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Impostazioni" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Bitrate desiderato (Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Test" +msgstr "Test" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "Questa interfaccia iPerf è in bêta." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "È ora di trasmettere per (s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Carica" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "In attesa del completamento del comando ..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "Prove di velocità iPerf" + +#: luci-app-iperf/luasrc/controller/iperf.lua:7 +msgid "iperf" +msgstr "iPerf" diff --git a/luci-app-iperf/po/oc/iperf.po b/luci-app-iperf/po/oc/iperf.po new file mode 100644 index 000000000..f5bc39dad --- /dev/null +++ b/luci-app-iperf/po/oc/iperf.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-21 20:21+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0 per cap de limit. Requerís un limit pels ensages UDP" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "Adreça invalida !" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Telecargament" + +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Protocòl Internet" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Cargament" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Mòde de foncionament" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Nombre de clients en parallèl" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Sautar las primièras n segondas" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Servidor" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Paramètres" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Velocitat desirada (Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 +msgid "Test" +msgstr "Pròva" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "Aquesta interfàcia per iPerf es en beta. Cap de support per aquò." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "Temps de transmission (s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Mandadís" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "En espèra d’una responsa de la comanda..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "Pròva de velocitat iPerf" + +#~ msgid "iperf" +#~ msgstr "iperf" diff --git a/luci-app-iperf/po/oc/iperf.po~ b/luci-app-iperf/po/oc/iperf.po~ new file mode 100644 index 000000000..598bb1a2f --- /dev/null +++ b/luci-app-iperf/po/oc/iperf.po~ @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-21 20:21+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0 per cap de limit. Requerís un limit pels ensages UDP" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "Adreça invalida !" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Telecargament" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Protocòl Internet" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Cargament" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Mòde de foncionament" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Nombre de clients en parallèl" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Sautar las primièras n segondas" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Servidor" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Paramètres" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Velocitat desirada (Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Test" +msgstr "Pròva" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "Aquesta interfàcia per iPerf es en beta. Cap de support per aquò." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "Temps de transmission (s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Mandadís" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "En espèra d’una responsa de la comanda..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "Pròva de velocitat iPerf" + +#: luci-app-iperf/luasrc/controller/iperf.lua:7 +msgid "iperf" +msgstr "iperf" diff --git a/luci-app-iperf/po/ru/iperf.po b/luci-app-iperf/po/ru/iperf.po new file mode 100644 index 000000000..402dfb655 --- /dev/null +++ b/luci-app-iperf/po/ru/iperf.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0 - без ограничений. Для теста UDP число должно быть больше 0" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "Указан не правильный адрес!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "Получение" + +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "Разрешить доступ к UCI для luci-app-iperf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "Интернет протокол" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "Загрузка" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "Режим работы" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "Количество параллельных потоковых клиентов" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "Пропустить первые n секунд" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "Сервер" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" +"Включен режим байпаса для IP VPS, будет проверена скорость только маршрута " +"по умолчанию." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "Настройки" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "Целевой битрейт (Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 +msgid "Test" +msgstr "Тест" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "Этот iPerf interface в режиме beta. Недоступно." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "Время передачи (s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "Отправка" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "Ожидание завершения команды..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 +msgid "iPerf" +msgstr "iPerf" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "iPerf тест скорости" diff --git a/luci-app-iperf/po/templates/iperf.pot b/luci-app-iperf/po/templates/iperf.pot index 7507f4148..8f41376b1 100644 --- a/luci-app-iperf/po/templates/iperf.pot +++ b/luci-app-iperf/po/templates/iperf.pot @@ -1,59 +1,92 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 msgid "0 for unlimited. Need to be limited for UDP test" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 msgid "Bad address specified!" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 msgid "Download" msgstr "" +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 msgid "Internet protocol" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 msgid "Loading" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 msgid "Mode of operation" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 msgid "Number of parallel client streams to run" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 msgid "Omit the first n seconds" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 msgid "Server" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 msgid "Settings" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 msgid "Target bitrate (Mbits/s)" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 msgid "Test" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 msgid "This iPerf interface is in bêta. No support for this." msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 msgid "Time to transmit for (s)" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 msgid "Upload" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 msgid "Waiting for command to complete..." msgstr "" +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 msgid "iPerf" msgstr "" +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 msgid "iPerf speed tests" msgstr "" - -msgid "iperf" -msgstr "" diff --git a/luci-app-iperf/po/zh_Hans/iperf.po b/luci-app-iperf/po/zh_Hans/iperf.po new file mode 100644 index 000000000..6ccea7a50 --- /dev/null +++ b/luci-app-iperf/po/zh_Hans/iperf.po @@ -0,0 +1,104 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0代表无限.需要限制UDP测试" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "指定地址错误!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "下载" + +#: luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json:3 +msgid "Grant UCI access for luci-app-iperf" +msgstr "授予luci-app-iperf UCI访问权限" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "互联网协议" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "载入中" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "操作模式" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "要运行的并行客户端流的数量" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "忽略前n秒" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "服务器" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Server VPS IP is bypassed, so this will test only default route speed." +msgstr "VPS IP被绕过,因此这将只测试默认的路由速度。" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "设置" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "目标比特率(Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:169 +msgid "Test" +msgstr "测试" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "此iPerf界面位于测试中.对此不支持." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "传输时间 (秒)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "上传" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "等待命令完成..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +#: luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json:3 +msgid "iPerf" +msgstr "iPerf测速" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "iPerf速度测试" + +#~ msgid "iperf" +#~ msgstr "iperf测速" diff --git a/luci-app-iperf/po/zh_Hans/iperf.po~ b/luci-app-iperf/po/zh_Hans/iperf.po~ new file mode 100644 index 000000000..63ea2e8b8 --- /dev/null +++ b/luci-app-iperf/po/zh_Hans/iperf.po~ @@ -0,0 +1,96 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:03+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:128 +msgid "0 for unlimited. Need to be limited for UDP test" +msgstr "0代表无限.需要限制UDP测试" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Bad address specified!" +msgstr "指定地址错误!" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +#: luci-app-iperf/luasrc/view/iperf/test.htm:78 +#: luci-app-iperf/luasrc/view/iperf/test.htm:83 +#: luci-app-iperf/luasrc/view/iperf/test.htm:88 +msgid "Download" +msgstr "下载" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:114 +msgid "Internet protocol" +msgstr "互联网协议" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:66 +msgid "Loading" +msgstr "载入中" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:105 +msgid "Mode of operation" +msgstr "操作模式" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:133 +msgid "Number of parallel client streams to run" +msgstr "要运行的并行客户端流的数量" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:139 +msgid "Omit the first n seconds" +msgstr "忽略前n秒" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:151 +msgid "Server" +msgstr "服务器" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:102 +msgid "Settings" +msgstr "设置" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:123 +msgid "Target bitrate (Mbits/s)" +msgstr "目标比特率(Mbits/s)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:165 +msgid "Test" +msgstr "测试" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:100 +msgid "This iPerf interface is in bêta. No support for this." +msgstr "此iPerf界面位于测试中.对此不支持." + +#: luci-app-iperf/luasrc/view/iperf/test.htm:145 +msgid "Time to transmit for (s)" +msgstr "传输时间 (秒)" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:26 +#: luci-app-iperf/luasrc/view/iperf/test.htm:38 +#: luci-app-iperf/luasrc/view/iperf/test.htm:43 +#: luci-app-iperf/luasrc/view/iperf/test.htm:48 +msgid "Upload" +msgstr "上传" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:27 +#: luci-app-iperf/luasrc/view/iperf/test.htm:67 +msgid "Waiting for command to complete..." +msgstr "等待命令完成..." + +#: luci-app-iperf/luasrc/controller/iperf.lua:8 +msgid "iPerf" +msgstr "iPerf测速" + +#: luci-app-iperf/luasrc/view/iperf/test.htm:99 +msgid "iPerf speed tests" +msgstr "iPerf速度测试" + +#: luci-app-iperf/luasrc/controller/iperf.lua:7 +msgid "iperf" +msgstr "iperf测速" diff --git a/luci-app-iperf/root/etc/config/iperf b/luci-app-iperf/root/etc/config/iperf index 911c3a1e6..be4baabb4 100644 --- a/luci-app-iperf/root/etc/config/iperf +++ b/luci-app-iperf/root/etc/config/iperf @@ -94,3 +94,22 @@ config server 'he' option tcp '1' option udp '1' option location 'America' + +config server 'biznetnetworks' + option host 'iperf.biznetnetworks.com' + option ipv4 '1' + option ipv6 '1' + option ports '5201,5202,5203' + option tcp '1' + option udp '1' + option location 'Asia' + +config server 'milkywan' + option host 'speedtest.milkywan.fr' + option ipv4 '1' + option ipv6 '1' + option speed '10000' + option ports '9200,9201,9202,9203,9204,9205,9206,9207,9208,9209,9210,9211,9212,9213,9214,9215' + option tcp '1' + option udp '1' + option location 'Europe' diff --git a/luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json b/luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json new file mode 100644 index 000000000..dd6151ee0 --- /dev/null +++ b/luci-app-iperf/root/usr/share/luci/menu.d/luci-app-iperf.json @@ -0,0 +1,13 @@ +{ + "admin/services/iperf": { + "title": "iPerf", + "order": 10, + "action": { + "type": "template", + "path": "iperf/test" + }, + "depends": { + "acl": [ "luci-app-iperf" ] + } + } +} diff --git a/luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json b/luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json new file mode 100644 index 000000000..c85182859 --- /dev/null +++ b/luci-app-iperf/root/usr/share/rpcd/acl.d/luci-app-iperf.json @@ -0,0 +1,11 @@ +{ + "luci-app-iperf": { + "description": "Grant UCI access for luci-app-iperf", + "read": { + "uci": [ "iperf" ] + }, + "write": { + "uci": [ "iperf" ] + } + } +} \ No newline at end of file diff --git a/luci-app-macvlan/po/zh_Hans/macvlan.po b/luci-app-macvlan/po/zh_Hans/macvlan.po new file mode 100644 index 000000000..2b64c20fd --- /dev/null +++ b/luci-app-macvlan/po/zh_Hans/macvlan.po @@ -0,0 +1,26 @@ +msgid "" +msgstr "" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: luci-app-macvlan/root/usr/share/rpcd/acl.d/luci-app-macvlan.json:3 +msgid "Grant UCI access for luci-app-macvlan" +msgstr "" + +#: luci-app-macvlan/htdocs/luci-static/resources/view/network/macvlan.js:30 +msgid "Interface" +msgstr "" + +#: luci-app-macvlan/htdocs/luci-static/resources/view/network/macvlan.js:22 +msgid "Interfaces" +msgstr "" + +#: luci-app-macvlan/htdocs/luci-static/resources/view/network/macvlan.js:20 +#: luci-app-macvlan/root/usr/share/luci/menu.d/luci-app-macvlan.json:3 +msgid "Macvlan" +msgstr "" + +#: luci-app-macvlan/htdocs/luci-static/resources/view/network/macvlan.js:26 +msgid "Name" +msgstr "" diff --git a/luci-app-mail/Makefile b/luci-app-mail/Makefile index 50a85b4fe..a6a9edad5 100644 --- a/luci-app-mail/Makefile +++ b/luci-app-mail/Makefile @@ -10,6 +10,7 @@ LUCI_DEPENDS:=+msmtp-mta PKG_LICENSE:=GPLv3 -include ../luci/luci.mk +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-mail/po/de/mail.po b/luci-app-mail/po/de/mail.po new file mode 100644 index 000000000..2b7c7984e --- /dev/null +++ b/luci-app-mail/po/de/mail.po @@ -0,0 +1,64 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 +msgid "From" +msgstr "Von" + +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Mail settings" +msgstr "E-Mail-Einstellungen" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 +msgid "Password" +msgstr "Schlüssel" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 +msgid "Port" +msgstr "Port" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 +msgid "SMTP" +msgstr "SMTP" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 +msgid "STARTTLS" +msgstr "StartTLS" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 +msgid "Server" +msgstr "Server" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Set mail settings for services that need to send mails." +msgstr "Einstellungen für Dienste, die E-Mail versenden können sollen." + +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 +msgid "TLS" +msgstr "TLS" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 +msgid "To" +msgstr "An" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 +msgid "Username" +msgstr "Benutzername" diff --git a/luci-app-mail/po/de/mail.po~ b/luci-app-mail/po/de/mail.po~ new file mode 100644 index 000000000..f04c4e7c4 --- /dev/null +++ b/luci-app-mail/po/de/mail.po~ @@ -0,0 +1,44 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +msgid "From" +msgstr "Von" + +msgid "Mail settings" +msgstr "E-Mail-Einstellungen" + +msgid "Password" +msgstr "Schlüssel" + +msgid "Port" +msgstr "Port" + +msgid "SMTP" +msgstr "SMTP" + +msgid "STARTTLS" +msgstr "StartTLS" + +msgid "Server" +msgstr "Server" + +msgid "Set mail settings for services that need to send mails." +msgstr "Einstellungen für Dienste, die E-Mail versenden können sollen." + +msgid "TLS" +msgstr "TLS" + +msgid "To" +msgstr "An" + +msgid "Username" +msgstr "Benutzername" diff --git a/luci-app-mail/po/fr/mail.po b/luci-app-mail/po/fr/mail.po index 50d37096a..78f77d558 100644 --- a/luci-app-mail/po/fr/mail.po +++ b/luci-app-mail/po/fr/mail.po @@ -1,46 +1,69 @@ msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.1.1\n" -"Last-Translator: Ycarus \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"PO-Revision-Date: 2021-05-31 18:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" "Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "E-Mail" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 msgid "From" msgstr "De" +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "Accorder l'accès UCI pour luci-app-mail" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Mail settings" msgstr "Paramètres e-mail" +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 msgid "Password" msgstr "Mot de passe" +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 msgid "Port" msgstr "Port" +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 msgid "SMTP" -msgstr "" +msgstr "SMTP" +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 msgid "STARTTLS" -msgstr "" +msgstr "STARTTLS" +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 msgid "Server" msgstr "Serveur" +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Set mail settings for services that need to send mails." msgstr "" +"Définissez les paramètres de messagerie pour les services qui doivent " +"envoyer des e-mails." +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 msgid "TLS" -msgstr "" +msgstr "TLS" +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 msgid "To" msgstr "À" +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 msgid "Username" msgstr "Nom d'utilisateur" diff --git a/luci-app-mail/po/fr/mail.po~ b/luci-app-mail/po/fr/mail.po~ new file mode 100644 index 000000000..ed30dd37f --- /dev/null +++ b/luci-app-mail/po/fr/mail.po~ @@ -0,0 +1,49 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2020-08-03 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +msgid "From" +msgstr "De" + +msgid "Mail settings" +msgstr "Paramètres e-mail" + +msgid "Password" +msgstr "Mot de passe" + +msgid "Port" +msgstr "Port" + +msgid "SMTP" +msgstr "SMTP" + +msgid "STARTTLS" +msgstr "STARTTLS" + +msgid "Server" +msgstr "Serveur" + +msgid "Set mail settings for services that need to send mails." +msgstr "" +"Définissez les paramètres de messagerie pour les services qui doivent " +"envoyer des e-mails." + +msgid "TLS" +msgstr "TLS" + +msgid "To" +msgstr "À" + +msgid "Username" +msgstr "Nom d'utilisateur" diff --git a/luci-app-mail/po/it/mail.po b/luci-app-mail/po/it/mail.po new file mode 100644 index 000000000..684d94dc4 --- /dev/null +++ b/luci-app-mail/po/it/mail.po @@ -0,0 +1,64 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-01 10:49+0000\n" +"Last-Translator: Giuseppe Dipierro \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 +msgid "From" +msgstr "Da" + +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Mail settings" +msgstr "Configurazione mail" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 +msgid "Password" +msgstr "Password" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 +msgid "Port" +msgstr "Porta" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 +msgid "SMTP" +msgstr "SMTP" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 +msgid "STARTTLS" +msgstr "STARTTLS" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 +msgid "Server" +msgstr "Server" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Set mail settings for services that need to send mails." +msgstr "Configurazione del server mail da utilizzare per inviare alert." + +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 +msgid "TLS" +msgstr "TLS" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 +msgid "To" +msgstr "A" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 +msgid "Username" +msgstr "Username" diff --git a/luci-app-mail/po/it/mail.po~ b/luci-app-mail/po/it/mail.po~ new file mode 100644 index 000000000..fd43053e7 --- /dev/null +++ b/luci-app-mail/po/it/mail.po~ @@ -0,0 +1,44 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-01 10:49+0000\n" +"Last-Translator: Giuseppe Dipierro \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +msgid "From" +msgstr "Da" + +msgid "Mail settings" +msgstr "Configurazione mail" + +msgid "Password" +msgstr "Password" + +msgid "Port" +msgstr "Porta" + +msgid "SMTP" +msgstr "SMTP" + +msgid "STARTTLS" +msgstr "STARTTLS" + +msgid "Server" +msgstr "Server" + +msgid "Set mail settings for services that need to send mails." +msgstr "Configurazione del server mail da utilizzare per inviare alert." + +msgid "TLS" +msgstr "TLS" + +msgid "To" +msgstr "A" + +msgid "Username" +msgstr "Username" diff --git a/luci-app-mail/po/oc/mail.po b/luci-app-mail/po/oc/mail.po new file mode 100644 index 000000000..a822d14de --- /dev/null +++ b/luci-app-mail/po/oc/mail.po @@ -0,0 +1,66 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-21 20:21+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 +msgid "From" +msgstr "De" + +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Mail settings" +msgstr "Paramètres e-mail" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 +msgid "Password" +msgstr "Senhal" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 +msgid "Port" +msgstr "Pòrt" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 +msgid "SMTP" +msgstr "SMTP" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 +msgid "STARTTLS" +msgstr "STARTTLS" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 +msgid "Server" +msgstr "Servidor" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Set mail settings for services that need to send mails." +msgstr "" +"Definissètz los paramètres de messatjariá pels servicis que devon enviar d’e-" +"mails." + +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 +msgid "TLS" +msgstr "TLS" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 +msgid "To" +msgstr "A" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 +msgid "Username" +msgstr "Nom d'utilizaire" diff --git a/luci-app-mail/po/oc/mail.po~ b/luci-app-mail/po/oc/mail.po~ new file mode 100644 index 000000000..ce93d0ed8 --- /dev/null +++ b/luci-app-mail/po/oc/mail.po~ @@ -0,0 +1,46 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-21 20:21+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +msgid "From" +msgstr "De" + +msgid "Mail settings" +msgstr "Paramètres e-mail" + +msgid "Password" +msgstr "Senhal" + +msgid "Port" +msgstr "Pòrt" + +msgid "SMTP" +msgstr "SMTP" + +msgid "STARTTLS" +msgstr "STARTTLS" + +msgid "Server" +msgstr "Servidor" + +msgid "Set mail settings for services that need to send mails." +msgstr "" +"Definissètz los paramètres de messatjariá pels servicis que devon enviar d’e-" +"mails." + +msgid "TLS" +msgstr "TLS" + +msgid "To" +msgstr "A" + +msgid "Username" +msgstr "Nom d'utilizaire" diff --git a/luci-app-mail/po/ru/mail.po b/luci-app-mail/po/ru/mail.po new file mode 100644 index 000000000..55fcead70 --- /dev/null +++ b/luci-app-mail/po/ru/mail.po @@ -0,0 +1,65 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: Aleksandr Serdyukov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "E-Mail" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 +msgid "From" +msgstr "От" + +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "Полный UCI доступ для luci-app-mail" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Mail settings" +msgstr "Настройки почты" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 +msgid "Password" +msgstr "Пароль" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 +msgid "Port" +msgstr "Порт" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 +msgid "SMTP" +msgstr "SMTP" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 +msgid "STARTTLS" +msgstr "STARTTLS" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 +msgid "Server" +msgstr "Сервер" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Set mail settings for services that need to send mails." +msgstr "Выбор настроек почты для сервисов, которым нужно отправлять почту." + +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 +msgid "TLS" +msgstr "TLS" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 +msgid "To" +msgstr "Кому" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 +msgid "Username" +msgstr "Имя пользователя" diff --git a/luci-app-mail/po/templates/mail.pot b/luci-app-mail/po/templates/mail.pot index a2eeddf5c..9abad09a1 100644 --- a/luci-app-mail/po/templates/mail.pot +++ b/luci-app-mail/po/templates/mail.pot @@ -1,35 +1,55 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 msgid "From" msgstr "" +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Mail settings" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 msgid "Password" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 msgid "Port" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 msgid "SMTP" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 msgid "STARTTLS" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 msgid "Server" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 msgid "Set mail settings for services that need to send mails." msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 msgid "TLS" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 msgid "To" msgstr "" +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 msgid "Username" msgstr "" diff --git a/luci-app-mail/po/zh_Hans/mail.po b/luci-app-mail/po/zh_Hans/mail.po new file mode 100644 index 000000000..f857e08b7 --- /dev/null +++ b/luci-app-mail/po/zh_Hans/mail.po @@ -0,0 +1,64 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json:3 +msgid "E-Mail" +msgstr "电子邮件" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:34 +msgid "From" +msgstr "来自" + +#: luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json:3 +msgid "Grant UCI access for luci-app-mail" +msgstr "授予luci-app-iperf UCI访问权限" + +#: luci-app-mail/luasrc/controller/mail.lua:4 +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Mail settings" +msgstr "邮件设置" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:30 +msgid "Password" +msgstr "密码" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:15 +msgid "Port" +msgstr "端口" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:6 +msgid "SMTP" +msgstr "SMTP设置" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:24 +msgid "STARTTLS" +msgstr "STARTTLS设置" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:10 +msgid "Server" +msgstr "服务器" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:4 +msgid "Set mail settings for services that need to send mails." +msgstr "为需要发送邮件的服务设置邮件设置." + +#: luci-app-mail/luasrc/model/cbi/mail.lua:21 +msgid "TLS" +msgstr "证书" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:39 +msgid "To" +msgstr "发送到" + +#: luci-app-mail/luasrc/model/cbi/mail.lua:27 +msgid "Username" +msgstr "账号" diff --git a/luci-app-mail/po/zh_Hans/mail.po~ b/luci-app-mail/po/zh_Hans/mail.po~ new file mode 100644 index 000000000..1c3a57e2f --- /dev/null +++ b/luci-app-mail/po/zh_Hans/mail.po~ @@ -0,0 +1,44 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-04 16:02+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +msgid "From" +msgstr "来自" + +msgid "Mail settings" +msgstr "邮件设置" + +msgid "Password" +msgstr "密码" + +msgid "Port" +msgstr "端口" + +msgid "SMTP" +msgstr "SMTP设置" + +msgid "STARTTLS" +msgstr "STARTTLS设置" + +msgid "Server" +msgstr "服务器" + +msgid "Set mail settings for services that need to send mails." +msgstr "为需要发送邮件的服务设置邮件设置." + +msgid "TLS" +msgstr "证书" + +msgid "To" +msgstr "发送到" + +msgid "Username" +msgstr "账号" diff --git a/luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json b/luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json new file mode 100644 index 000000000..6098e0a26 --- /dev/null +++ b/luci-app-mail/root/usr/share/luci/menu.d/luci-app-mail.json @@ -0,0 +1,13 @@ +{ + "admin/services/mail": { + "title": "E-Mail", + "order": 90, + "action": { + "type": "cbi", + "path": "mail" + }, + "depends": { + "acl": [ "luci-app-mail" ] + } + } +} diff --git a/luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json b/luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json new file mode 100644 index 000000000..719eead98 --- /dev/null +++ b/luci-app-mail/root/usr/share/rpcd/acl.d/luci-app-mail.json @@ -0,0 +1,11 @@ +{ + "luci-app-mail": { + "description": "Grant UCI access for luci-app-mail", + "read": { + "uci": [ "mail" ] + }, + "write": { + "uci": [ "mail" ] + } + } +} \ No newline at end of file diff --git a/luci-app-mlvpn/Makefile b/luci-app-mlvpn/Makefile index 8e5327d38..77a8ceb24 100644 --- a/luci-app-mlvpn/Makefile +++ b/luci-app-mlvpn/Makefile @@ -1,15 +1,16 @@ # -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2020 Ycarus (Yannick Chabanois) # # include $(TOPDIR)/rules.mk -LUCI_TITLE:=LuCI Support for MLVPN +LUCI_TITLE:=LuCI Interface to MLVPN LUCI_DEPENDS:=+mlvpn PKG_LICENSE:=GPLv3 -include ../luci/luci.mk +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js b/luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js new file mode 100644 index 000000000..f8bbc58c5 --- /dev/null +++ b/luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js @@ -0,0 +1,93 @@ +'use strict'; +'require rpc'; +'require form'; +'require fs'; +'require uci'; +'require tools.widgets as widgets'; + +var callHostHints; + +return L.view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + load: function() { + return this.callHostHints(); + }, + + render: function(hosts) { + var m, s, o; + + m = new form.Map('mlvpn', _('MLVPN')); + + s = m.section(form.GridSection, 'mlvpn', _('Instances')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + + o = s.taboption('general', form.Flag, 'enable', _('Enabled')); + o.default = o.enabled; + + o = s.taboption('general',form.Value, 'label', _('Label')); + o.rmempty = true; + + o = s.taboption('general', form.ListValue, 'mode', _('Mode')); + o.value('client',_('Client')); + o.value('server',_('Server')); + o.modalonly = true; + + o = s.taboption('general', form.Value, 'host', _('Host')); + o.rmempty = false; + + o = s.taboption('general', form.Value, 'firstport', _('First Port')); + o.default = "65201"; + o.datatype = "port"; + o.rmempty = false; + + o = s.taboption('general', form.Value, 'password', _('Password')); + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('general', form.Value, 'interface_name', _('Interface name')); + o.default = "mlvpn0"; + o.placeholder = "mlvpn0"; + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'timeout', _('Timeout (s)')); + o.default = '30'; + o.datatype = "uinteger"; + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'reorder_buffer_size', _('Reorder buffer size')); + o.default = '128'; + o.datatype = "uinteger"; + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('advanced', form.Flag, 'cleartext_data', _('Disable encryption')); + o.default = o.disabled; + o.rmempty = false; + + o = s.taboption('advanced', form.Value, 'loss_tolerance', _('Loss tolerance')); + o.default = '50'; + o.datatype = "uinteger"; + o.rmempty = false; + o.modalonly = true; + + o = s.taboption('advanced', form.Value, 'latency_tolerance', _('Latency tolerance')); + o.default = '300'; + o.datatype = "uinteger"; + o.rmempty = false; + o.modalonly = true; + + return m.render(); + } +}); diff --git a/luci-app-mlvpn/luasrc/controller/mlvpn.lua b/luci-app-mlvpn/luasrc/controller/mlvpn.lua deleted file mode 100644 index aefd8c027..000000000 --- a/luci-app-mlvpn/luasrc/controller/mlvpn.lua +++ /dev/null @@ -1,6 +0,0 @@ -module("luci.controller.mlvpn", package.seeall) - -function index() - --entry({"admin", "openmptcprouter", "mlvpn"}, cbi("mlvpn"), _("MLVPN")) - entry({"admin", "services", "mlvpn"}, cbi("mlvpn"), _("MLVPN")) -end diff --git a/luci-app-mlvpn/luasrc/model/cbi/mlvpn.lua b/luci-app-mlvpn/luasrc/model/cbi/mlvpn.lua deleted file mode 100644 index eaef23d7e..000000000 --- a/luci-app-mlvpn/luasrc/model/cbi/mlvpn.lua +++ /dev/null @@ -1,77 +0,0 @@ -local net = require "luci.model.network".init() -local sys = require "luci.sys" -local ifaces = sys.net:devices() -local m, s, o - -m = Map("mlvpn", translate("MLVPN")) - -s = m:section(TypedSection, "mlvpn", translate("Settings")) -s.anonymous = true -s.addremove = false - -o = s:option(Flag, "enable", translate("Enable")) -o.rmempty = false - -o = s:option(Value, "timeout", translate("Timeout (s)")) -o.placeholder = "30" -o.default = "30" -o.datatype = "uinteger" -o.rmempty = false - -o = s:option(Value, "reorder_buffer_size", translate("Reorder buffer size")) -o.placeholder = "64" -o.default = "64" -o.datatype = "uinteger" -o.rmempty = false - -o = s:option(Value, "loss_tolerance", translate("Loss tolerance")) -o.placeholder = "50" -o.default = "50" -o.datatype = "uinteger" -o.rmempty = false - -o = s:option(Value, "host", translate("Remote host")) -o.placeholder = "128.128.128.128" -o.default = "128.128.128.128" -o.datatype = "host" -o.rmempty = false - -o = s:option(Value, "firstport", translate("First remote port"),translate("Interface will increase port used beginning with this")) -o.default = "65201" -o.datatype = "port" -o.rmempty = false - -o = s:option(Value, "password", translate("Password")) -o.password = true -o.rmempty = false - - -o = s:option(Value, "interface_name", translate("Interface name")) -o.placeholder = "mlvpn0" -o.default = "mlvpn0" -o.rmempty = false - ---o = s:option(Value, "mode", translate("Mode")) ---o:value("client") ---o:value("server") ---o.default = "client" ---o.rmempty = false - - ---s = m:section(TypedSection, "interface", translate("Interfaces")) ---s.template_addremove = "mlvpn/cbi-select-add" ---s.addremove = true ---s.add_select_options = { } ---s.add_select_options[''] = '' ---for _, iface in ipairs(ifaces) do --- if not (iface == "lo" or iface:match("^ifb.*")) then --- s.add_select_options[iface] = iface --- end ---end - ---o = s:option(Value, "port", translate("Remote/Bind port")) ---o.placeholder = "65201" ---o.default = "65201" ---o.datatype = "port" - -return m diff --git a/luci-app-mlvpn/luasrc/view/mlvpn/cbi-select-add.htm b/luci-app-mlvpn/luasrc/view/mlvpn/cbi-select-add.htm deleted file mode 100644 index 9ee30d310..000000000 --- a/luci-app-mlvpn/luasrc/view/mlvpn/cbi-select-add.htm +++ /dev/null @@ -1,10 +0,0 @@ -
- <% if self.invalid_cts then -%>
<% end %> - - - <% if self.invalid_cts then %>
<%:Invalid%>
<% end %> -
diff --git a/luci-app-mlvpn/po/fr/mlvpn.po b/luci-app-mlvpn/po/fr/mlvpn.po index 36e5e89ab..97c7d305e 100644 --- a/luci-app-mlvpn/po/fr/mlvpn.po +++ b/luci-app-mlvpn/po/fr/mlvpn.po @@ -1,61 +1,84 @@ msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" -"Last-Translator: Ycarus \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" "Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" -msgid "Add" -msgstr "Ajouter" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 +msgid "Advanced Settings" +msgstr "Configuration avancée" -msgid "Enable" -msgstr "Activé" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:41 +msgid "Client" +msgstr "Client" -msgid "First remote port" -msgstr "Premier port distant" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:75 +msgid "Disable encryption" +msgstr "Désactiver le chiffrement" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:48 +msgid "First Port" +msgstr "Premier port" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:31 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json:3 +msgid "Grant UCI access for luci-app-mlvpn" +msgstr "Accorder l'accès UCI pour luci-app-mlvpn" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +msgid "Host" +msgstr "Hôte" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:26 +msgid "Instances" +msgstr "Instances" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:57 msgid "Interface name" msgstr "Nom de l'interface" -msgid "Interface will increase port used beginning with this" -msgstr "" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Invalid" -msgstr "Invalide" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +msgid "Label" +msgstr "Étiquette" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:79 msgid "Loss tolerance" -msgstr "" +msgstr "Tolérance aux pertes" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:24 +#: luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json:3 msgid "MLVPN" -msgstr "" +msgstr "MLVPN" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:40 msgid "Mode" -msgstr "" +msgstr "Mode" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:53 msgid "Password" msgstr "Mot de passe" -msgid "Remote host" -msgstr "Nom de l'hôte distant ou adresse IP" - -msgid "Remote/Bind port" -msgstr "Port de connexion distant" - +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:69 msgid "Reorder buffer size" -msgstr "" +msgstr "Taille du tampon de réordonnancement" -msgid "Settings" -msgstr "Paramètres" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +msgid "Server" +msgstr "Serveur" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:63 msgid "Timeout (s)" msgstr "Délais d'attente (s)" diff --git a/luci-app-mlvpn/po/fr/mlvpn.po~ b/luci-app-mlvpn/po/fr/mlvpn.po~ new file mode 100644 index 000000000..b8f466284 --- /dev/null +++ b/luci-app-mlvpn/po/fr/mlvpn.po~ @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 +msgid "Advanced Settings" +msgstr "Configuration avancée" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:38 +msgid "Client" +msgstr "Client" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 +msgid "Enabled" +msgstr "Activer" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +msgid "First Port" +msgstr "Premier port" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:31 +msgid "General Settings" +msgstr "Paramètres généraux" + +#: luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json:3 +msgid "Grant UCI access for luci-app-mlvpn" +msgstr "Accorder l'accès UCI pour luci-app-mlvpn" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +msgid "Host" +msgstr "Hôte" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:26 +msgid "Instances" +msgstr "Instances" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:54 +msgid "Interface name" +msgstr "Nom de l'interface" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:78 +msgid "Label" +msgstr "Étiquette" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:72 +msgid "Loss tolerance" +msgstr "Tolérance aux pertes" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:24 +#: luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json:3 +msgid "MLVPN" +msgstr "MLVPN" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +msgid "Mode" +msgstr "Mode" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:50 +msgid "Password" +msgstr "Mot de passe" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:66 +msgid "Reorder buffer size" +msgstr "Taille du tampon de réordonnancement" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:39 +msgid "Server" +msgstr "Serveur" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:60 +msgid "Timeout (s)" +msgstr "Délais d'attente (s)" diff --git a/luci-app-mlvpn/po/ru/mlvpn.po b/luci-app-mlvpn/po/ru/mlvpn.po new file mode 100644 index 000000000..de9e4cd8c --- /dev/null +++ b/luci-app-mlvpn/po/ru/mlvpn.po @@ -0,0 +1,85 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: Aleksandr Serdyukov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 +msgid "Advanced Settings" +msgstr "Дополнительные настройки" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:41 +msgid "Client" +msgstr "Клиент" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:75 +msgid "Disable encryption" +msgstr "Отключить шифрование" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 +msgid "Enabled" +msgstr "Установлено" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:48 +msgid "First Port" +msgstr "Первый порт" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:31 +msgid "General Settings" +msgstr "Основные настройки" + +#: luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json:3 +msgid "Grant UCI access for luci-app-mlvpn" +msgstr "Полный UCI доступ для luci-app-mlvpn" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +msgid "Host" +msgstr "Хост" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:26 +msgid "Instances" +msgstr "Экземпляры" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:57 +msgid "Interface name" +msgstr "Имя интерфейса" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +msgid "Label" +msgstr "Метка" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:79 +msgid "Loss tolerance" +msgstr "Терпимость к потерям" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:24 +#: luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json:3 +msgid "MLVPN" +msgstr "MLVPN" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:40 +msgid "Mode" +msgstr "Режим" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:53 +msgid "Password" +msgstr "Пароль" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:69 +msgid "Reorder buffer size" +msgstr "Изменить размер буфера" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +msgid "Server" +msgstr "Сервер" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:63 +msgid "Timeout (s)" +msgstr "Тайм- аут (s)" diff --git a/luci-app-mlvpn/po/templates/mlvpn.pot b/luci-app-mlvpn/po/templates/mlvpn.pot index 0eecd2f65..2f1fe9c73 100644 --- a/luci-app-mlvpn/po/templates/mlvpn.pot +++ b/luci-app-mlvpn/po/templates/mlvpn.pot @@ -1,50 +1,75 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -msgid "Add" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 +msgid "Advanced Settings" msgstr "" -msgid "Enable" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:41 +msgid "Client" msgstr "" -msgid "First remote port" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:75 +msgid "Disable encryption" msgstr "" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 +msgid "Enabled" +msgstr "" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:48 +msgid "First Port" +msgstr "" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:31 +msgid "General Settings" +msgstr "" + +#: luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json:3 +msgid "Grant UCI access for luci-app-mlvpn" +msgstr "" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +msgid "Host" +msgstr "" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:26 +msgid "Instances" +msgstr "" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:57 msgid "Interface name" msgstr "" -msgid "Interface will increase port used beginning with this" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Invalid" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +msgid "Label" msgstr "" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:79 msgid "Loss tolerance" msgstr "" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:24 +#: luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json:3 msgid "MLVPN" msgstr "" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:40 msgid "Mode" msgstr "" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:53 msgid "Password" msgstr "" -msgid "Remote host" -msgstr "" - -msgid "Remote/Bind port" -msgstr "" - +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:69 msgid "Reorder buffer size" msgstr "" -msgid "Settings" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +msgid "Server" msgstr "" +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:63 msgid "Timeout (s)" msgstr "" diff --git a/luci-app-mlvpn/po/zh_Hans/mlvpn.po b/luci-app-mlvpn/po/zh_Hans/mlvpn.po new file mode 100644 index 000000000..806a7ec76 --- /dev/null +++ b/luci-app-mlvpn/po/zh_Hans/mlvpn.po @@ -0,0 +1,84 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 +msgid "Advanced Settings" +msgstr "高级设置" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:41 +msgid "Client" +msgstr "客户端" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:75 +msgid "Disable encryption" +msgstr "禁用加密" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 +msgid "Enabled" +msgstr "启用" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:48 +msgid "First Port" +msgstr "第一端口" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:31 +msgid "General Settings" +msgstr "通用设置" + +#: luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json:3 +msgid "Grant UCI access for luci-app-mlvpn" +msgstr "授予UCI访问luci-app-mlvpn的权限" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +msgid "Host" +msgstr "主机" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:26 +msgid "Instances" +msgstr "实例" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:57 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +msgid "Label" +msgstr "标签" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:79 +msgid "Loss tolerance" +msgstr "损失容忍" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:24 +#: luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json:3 +msgid "MLVPN" +msgstr "mlvpn" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:40 +msgid "Mode" +msgstr "模式" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:53 +msgid "Password" +msgstr "密码" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:69 +msgid "Reorder buffer size" +msgstr "重新排序缓冲区大小" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +msgid "Server" +msgstr "服务器" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:63 +msgid "Timeout (s)" +msgstr "超时(秒)" diff --git a/luci-app-mlvpn/po/zh_Hans/mlvpn.po~ b/luci-app-mlvpn/po/zh_Hans/mlvpn.po~ new file mode 100644 index 000000000..868ff2e57 --- /dev/null +++ b/luci-app-mlvpn/po/zh_Hans/mlvpn.po~ @@ -0,0 +1,80 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-04 16:03+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:32 +msgid "Advanced Settings" +msgstr "高级设置" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:38 +msgid "Client" +msgstr "客户端" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:34 +msgid "Enabled" +msgstr "开启" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:45 +msgid "First Port" +msgstr "第一端口" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:31 +msgid "General Settings" +msgstr "通用设置" + +#: luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json:3 +msgid "Grant UCI access for luci-app-mlvpn" +msgstr "授予UCI访问luci-app-mlvpn的权限" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:42 +msgid "Host" +msgstr "主机" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:26 +msgid "Instances" +msgstr "实例" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:54 +msgid "Interface name" +msgstr "接口名称" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:78 +msgid "Label" +msgstr "标签" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:72 +msgid "Loss tolerance" +msgstr "损失容忍" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:24 +#: luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json:3 +msgid "MLVPN" +msgstr "mlvpn" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:37 +msgid "Mode" +msgstr "模式" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:50 +msgid "Password" +msgstr "密码" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:66 +msgid "Reorder buffer size" +msgstr "重新排序缓冲区大小" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:39 +msgid "Server" +msgstr "服务器" + +#: luci-app-mlvpn/htdocs/luci-static/resources/view/services/mlvpn.js:60 +msgid "Timeout (s)" +msgstr "超时(s)" diff --git a/luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json b/luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json new file mode 100644 index 000000000..90afc4494 --- /dev/null +++ b/luci-app-mlvpn/root/usr/share/luci/menu.d/luci-app-mlvpn.json @@ -0,0 +1,13 @@ +{ + "admin/vpn/mlvpn": { + "title": "MLVPN", + "order": 30, + "action": { + "type": "view", + "path": "services/mlvpn" + }, + "depends": { + "acl": [ "luci-app-mlvpn" ] + } + } +} diff --git a/luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json b/luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json new file mode 100644 index 000000000..e1727a866 --- /dev/null +++ b/luci-app-mlvpn/root/usr/share/rpcd/acl.d/luci-app-mlvpn.json @@ -0,0 +1,11 @@ +{ + "luci-app-mlvpn": { + "description": "Grant UCI access for luci-app-mlvpn", + "read": { + "uci": [ "mlvpn" ] + }, + "write": { + "uci": [ "mlvpn" ] + } + } +} \ No newline at end of file diff --git a/luci-app-mptcp/Makefile b/luci-app-mptcp/Makefile index b098b8a2a..68b644021 100644 --- a/luci-app-mptcp/Makefile +++ b/luci-app-mptcp/Makefile @@ -8,6 +8,6 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Support for MPTCP PKG_LICENSE:=GPLv3 -include ../luci/luci.mk - +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-mptcp/htdocs/luci-static/resources/view/mptcp/mptcp.js b/luci-app-mptcp/htdocs/luci-static/resources/view/mptcp/mptcp.js new file mode 100644 index 000000000..80a7a5fcc --- /dev/null +++ b/luci-app-mptcp/htdocs/luci-static/resources/view/mptcp/mptcp.js @@ -0,0 +1,241 @@ +'use strict'; +'require rpc'; +'require form'; +'require fs'; +'require uci'; +'require tools.widgets as widgets'; + +/* + * Copyright (C) 2024 Ycarus (Yannick Chabanois) for OpenMPTCProuter + * This is free software, licensed under the GNU General Public License v3. + * See /LICENSE for more information + */ + +var callSystemBoard = rpc.declare({ + object: 'system', + method: 'board' +}); + + +return L.view.extend({ + load: function() { + return Promise.all([ + L.resolveDefault(callSystemBoard(), {}) + ]); + }, + + render: function(res) { + var m, s, o; + var boardinfo = res[0]; + + m = new form.Map('network', _('MPTCP'),_('Networks MPTCP settings.')); + + s = m.section(form.TypedSection, 'globals'); + + o = s.option(form.ListValue, 'multipath', _('Multipath TCP')); + o.value("enable", _("enable")); + o.value("disable", _("disable")); + o.readonly = true; + + o = s.option(form.ListValue, "mptcp_checksum", _("Multipath TCP checksum")); + o.value(1, _("enable")); + o.value(0, _("disable")); + + if (boardinfo.kernel.substring(1,4) != "5.15" && boardinfo.kernel.substring(1,1) != "6") { + o = s.option(form.ListValue, "mptcp_debug", _("Multipath Debug")); + o.value(1, _("enable")); + o.value(0, _("disable")); + } + + o = s.option(form.ListValue, "mptcp_path_manager", _("Multipath TCP path-manager"), _("Default is fullmesh")); + o.value("default", _("default")); + o.value("fullmesh", "fullmesh"); + + if (parseFloat(boardinfo.kernel.substring(0,4)) < 6) { + o.value("ndiffports", "ndiffports"); + o.value("binder", "binder"); + o.value("netlink", _("Netlink")); + } + + o = s.option(form.ListValue, "mptcp_scheduler", _("Multipath TCP scheduler"), _('BPF schedulers (not available on all platforms):') + '
' + + _('bpf_burst => same as the default scheduler') + '
' + + _('bpf_red => sends all packets redundantly on all available subflows') + '
' + + _('bpf_first => always picks the first subflow to send data') + '
' + + _('bpf_rr => always picks the next available subflow to send data (round-robin)') + + ); + o.value("default", _("default")); + if (parseFloat(boardinfo.kernel.substring(0,4)) < 6) { + o.value("roundrobin", "round-robin"); + o.value("redundant", "redundant"); + o.value("blest", "BLEST"); + o.value("ecf", "ECF"); + } + + if (parseFloat(boardinfo.kernel.substring(0,3)) > 6) { + o.load = function(section_id) { + return L.resolveDefault(fs.list('/usr/share/bpf/scheduler'), []).then(L.bind(function(entries) { + for (var i = 0; i < entries.length; i++) + if (entries[i].type == 'file' && entries[i].name.match(/\.o$/)) + this.value(entries[i].name); + return this.super('load', [section_id]); + }, this)); + }; + // bpf_burst => same as the default scheduler + // bpf_red => sends all packets redundantly on all available subflows + // bpf_first => always picks the first subflow to send data + // bpf_rr => always picks the next available subflow to send data (round-robin) + } + + if (parseFloat(boardinfo.kernel.substring(0,4)) < 6) { + o = s.option(form.Value, "mptcp_syn_retries", _("Multipath TCP SYN retries")); + o.datatype = "uinteger"; + o.rmempty = false; + } + + if (parseFloat(boardinfo.kernel.substring(0,4)) < 6) { + o = s.option(form.ListValue, "mptcp_version", _("Multipath TCP version")); + o.value(0, _("0")); + o.value(1, _("1")); + o.default = 0; + } + + o = s.option(form.ListValue, "congestion", _("Congestion Control"),_("Default is cubic")); + o.load = function(section_id) { + return fs.exec_direct('/sbin/sysctl', ['-n', 'net.ipv4.tcp_available_congestion_control']).then(L.bind(function(entries) { + var congestioncontrol = entries.toString().split(' '); + for (var d in congestioncontrol) { + this.value(congestioncontrol[d]); + }; + return this.super('load', [section_id]); + }, this)); + }; + + if (parseFloat(boardinfo.kernel.substring(0,4)) >= 6) { + if (boardinfo.kernel.substring(0,1) == "6") { + // Only available since 5.19 + o = s.option(form.ListValue, "mptcp_pm_type", _("Path Manager type")); + o.value(0, _("In-kernel path manager")); + o.value(1, _("Userspace path manager")); + o.default = 0; + } + + o = s.option(form.ListValue, "mptcp_disable_initial_config", _("Initial MPTCP configuration")); + o.depends("mptcp_pm_type","1"); + o.value("0", _("enable")); + o.value("1", _("disable")); + o.default = "0"; + + o = s.option(form.ListValue, "mptcp_force_multipath", _("Force Multipath configuration")); + o.depends("mptcp_pm_type","1"); + o.value("1", _("enable")); + o.value("0", _("disable")); + o.default = "1"; + + o = s.option(form.ListValue, "mptcpd_enable", _("Enable MPTCPd")); + o.depends("mptcp_pm_type","1"); + o.value("enable", _("enable")); + o.value("disable", _("disable")); + o.default = "disable"; + + o = s.option(form.DynamicList, "mptcpd_path_manager", _("MPTCPd path managers")); + o.load = function(section_id) { + return L.resolveDefault(fs.list('/usr/lib/mptcpd'), []).then(L.bind(function(entries) { + for (var i = 0; i < entries.length; i++) + if (entries[i].type == 'file' && entries[i].name.match(/\.so$/)) + this.value(entries[i].name); + return this.super('load', [section_id]); + }, this)); + }; + o.depends("mptcp_pm_type","1"); + + o = s.option(form.DynamicList, "mptcpd_plugins", _("MPTCPd plugins")); + o.load = function(section_id) { + return L.resolveDefault(fs.list('/usr/lib/mptcpd'), []).then(L.bind(function(entries) { + for (var i = 0; i < entries.length; i++) + if (entries[i].type == 'file' && entries[i].name.match(/\.so$/)) + this.value(entries[i].name); + return this.super('load', [section_id]); + }, this)); + }; + o.depends("mptcp_pm_type","1"); + + o = s.option(form.DynamicList, "mptcpd_addr_flags", _("MPTCPd Address annoucement flags")); + o.value("subflow","subflow"); + o.value("signal","signal"); + o.value("backup","backup"); + o.value("fullmesh","fullmesh"); + o.depends("mptcp_pm_type","1"); + + o = s.option(form.DynamicList, "mptcpd_notify_flags", _("MPTCPd Address notification flags")); + o.value("existing","existing"); + o.value("skip_link_local","skip_link_local"); + o.value("skip_loopback","skip_loopback"); + o.depends("mptcp_pm_type","1"); + + o = s.option(form.Value, "mptcp_subflows", _("Max subflows"),_("specifies the maximum number of additional subflows allowed for each MPTCP connection")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 3; + + o = s.option(form.Value, "mptcp_stale_loss_cnt", _("Retranmission intervals"),_("The number of MPTCP-level retransmission intervals with no traffic and pending outstanding data on a given subflow required to declare it stale. A low stale_loss_cnt value allows for fast active-backup switch-over, an high value maximize links utilization on edge scenarios e.g. lossy link with high BER or peer pausing the data processing.")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 4; + + o = s.option(form.Value, "mptcp_add_addr_accepted", _("Max add address"),_("specifies the maximum number of ADD_ADDR (add address) suboptions accepted for each MPTCP connection")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 1; + + o = s.option(form.Value, "mptcp_add_addr_timeout", _("Control message timeout"),_("Set the timeout after which an ADD_ADDR (add address) control message will be resent to an MPTCP peer that has not acknowledged a previous ADD_ADDR message.")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 120; + } else { + o = s.option(form.Value, "mptcp_fullmesh_num_subflows", _("Fullmesh subflows for each pair of IP addresses")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 1; + //o.depends("mptcp_path_manager","fullmesh") + + o = s.option(form.ListValue, "mptcp_fullmesh_create_on_err", _("Re-create fullmesh subflows after a timeout")); + o.value(1, _("enable")); + o.value(0, _("disable")); + //o.depends("mptcp_path_manager","fullmesh"); + + o = s.option(form.Value, "mptcp_ndiffports_num_subflows", _("ndiffports subflows number")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 1; + //o.depends("mptcp_path_manager","ndiffports") + + o = s.option(form.ListValue, "mptcp_rr_cwnd_limited", _("Fill the congestion window on all subflows for round robin")); + o.value("Y", _("enable")); + o.value("N", _("disable")); + o.default = "Y"; + //o.depends("mptcp_scheduler","roundrobin") + + o = s.option(form.Value, "mptcp_rr_num_segments", _("Consecutive segments that should be sent for round robin")); + o.datatype = "uinteger"; + o.rmempty = false; + o.default = 1; + //o.depends("mptcp_scheduler","roundrobin") + } + + s = m.section(form.TypedSection, "interface", _("Interfaces Settings")); + s.filter = function(section) { + return (!section.match("^oip.*") && !section.match("^lo.*") && section != "omrvpn" && section != "omr6in4"); + } + + o = s.option(form.ListValue, "multipath", _("Multipath TCP"), _("One interface must be set as master")); + o.value("on", _("enabled")); + o.value("off", _("disabled")); + o.value("master", _("master")); + o.value("backup", _("backup")); + //o.value("handover", _("handover")); + o.default = "off"; + + return m.render(); + } +}); \ No newline at end of file diff --git a/luci-app-mptcp/luasrc/controller/mptcp.lua b/luci-app-mptcp/luasrc/controller/mptcp.lua index 4a24a7014..b4c42b3ae 100644 --- a/luci-app-mptcp/luasrc/controller/mptcp.lua +++ b/luci-app-mptcp/luasrc/controller/mptcp.lua @@ -1,22 +1,32 @@ -- Copyright 2008 Steven Barth -- Copyright 2011 Jo-Philipp Wich --- Copyright 2018 Ycarus (Yannick Chabanois) +-- Copyright 2018-2023 Ycarus (Yannick Chabanois) -- Licensed to the public under the Apache License 2.0. module("luci.controller.mptcp", package.seeall) + function index() + local uname = nixio.uname() entry({"admin", "network", "mptcp"}, alias("admin", "network", "mptcp", "settings"), _("MPTCP")) - entry({"admin", "network", "mptcp", "settings"}, cbi("mptcp"), _("Settings"),2).leaf = true + if uname ~= nil and uname.release:sub(1,1) == "5" then + entry({"admin", "network", "mptcp", "settings"}, cbi("mptcp"), _("Settings"),2).leaf = true + else + entry({"admin", "network", "mptcp", "settings"}, view("mptcp/mptcp"), _("Settings"),2).leaf = true + end entry({"admin", "network", "mptcp", "bandwidth"}, template("mptcp/multipath"), _("Bandwidth"), 3).leaf = true entry({"admin", "network", "mptcp", "multipath_bandwidth"}, call("multipath_bandwidth")).leaf = true entry({"admin", "network", "mptcp", "interface_bandwidth"}, call("interface_bandwidth")).leaf = true - entry({"admin", "network", "mptcp", "mptcp_check"}, template("mptcp/mptcp_check"), _("MPTCP Support Check"), 4).leaf = true + if uname ~= nil and uname.release:sub(1,1) == "5" then + entry({"admin", "network", "mptcp", "mptcp_check"}, template("mptcp/mptcp_check"), _("MPTCP Support Check"), 4).leaf = true + end entry({"admin", "network", "mptcp", "mptcp_check_trace"}, post("mptcp_check_trace")).leaf = true entry({"admin", "network", "mptcp", "mptcp_fullmesh"}, template("mptcp/mptcp_fullmesh"), _("MPTCP Fullmesh"), 5).leaf = true entry({"admin", "network", "mptcp", "mptcp_fullmesh_data"}, post("mptcp_fullmesh_data")).leaf = true entry({"admin", "network", "mptcp", "mptcp_connections"}, template("mptcp/mptcp_connections"), _("Established connections"), 6).leaf = true entry({"admin", "network", "mptcp", "mptcp_connections_data"}, post("mptcp_connections_data")).leaf = true + entry({"admin", "network", "mptcp", "mptcp_monitor"}, template("mptcp/mptcp_monitor"), _("MPTCP monitoring"), 6).leaf = true + entry({"admin", "network", "mptcp", "mptcp_monitor_data"}, post("mptcp_monitor_data")).leaf = true end function interface_bandwidth(iface) @@ -34,32 +44,136 @@ function interface_bandwidth(iface) end end + +function string.split(input, delimiter) + input = tostring(input) + delimiter = tostring(delimiter) + if (delimiter=='') then return false end + local pos,arr = 0, {} + -- for each divider found + for st,sp in function() return string.find(input, delimiter, pos, true) end do + table.insert(arr, string.sub(input, pos, st - 1)) + pos = sp + 1 + end + table.insert(arr, string.sub(input, pos)) + return arr +end + function multipath_bandwidth() local result = { }; local uci = luci.model.uci.cursor() + local res={ }; + local str=""; + local tmpstr=""; uci:foreach("network", "interface", function(s) - local dev = s["ifname"] or "" + local intname = s[".name"] + local label = s["label"] + local dev = get_device(intname) + if dev == "" then + dev = get_device(s["device"]) + if dev == "" then + dev = get_device(s["ifname"]) + end + end + local multipath = s["multipath"] or "" if dev ~= "lo" and dev ~= "" then - local multipath = s["multipath"] or "off" + if multipath == "" then + multipath = uci:get("openmptcprouter", intname, "multipath") or "" + end + if multipath == "" then + multipath = "off" + end if multipath == "on" or multipath == "master" or multipath == "backup" or multipath == "handover" then local bwc = luci.sys.exec("luci-bwc -i %q 2>/dev/null" % dev) or "" if bwc ~= nil then - result[dev] = "[" .. string.gsub(bwc, '[\r\n]', '') .. "]" + --result[dev] = "[" .. string.gsub(bwc, '[\r\n]', '') .. "]" + if label ~= nil then + result[intname .. " (" .. label .. ")" ] = "[" .. string.gsub(bwc, '[\r\n]', '') .. "]" + else + result[intname] = "[" .. string.gsub(bwc, '[\r\n]', '') .. "]" + end else - result[dev] = "[]" + if label ~= nil then + result[intname .. " (" .. label .. ")" ] = "[]" + else + result[intname] = "[]" + end end end end end) + res["total"]={ }; + for i=1,60 do + res["total"][i]={} + for j=1,5 do + res["total"][i][j]=0 + end + end + + for key,value in pairs(result) do + res[key]={} + value=(string.gsub(value, "^%[%[", "")) + value=(string.gsub(value, "%]%]", "")) + local temp1 = string.split(value, "],") + if temp1[2] ~= nil then + res[key][1]=temp1[1] + for i=2,60 do + res[key][i]={} + if temp1[i] ~= nil then + res[key][i]=(string.gsub(temp1[i], "%[", " ")) + end + end + for i=1,60 do + res[key][i] = string.split(res[key][i], ",") + for j=1,5 do + res[key][i][j]= tonumber(res[key][i][j]) + res["total"][i][j]= tonumber(res["total"][i][j]) + if j ==1 then + if res[key][i][j] ~= nil and res[key][i][j] > 0 then + res["total"][i][j] = res[key][i][j] + else + res["total"][i][j] = 0 + end + else + if res[key][i][j] ~= nil and res[key][i][j] > 0 then + res["total"][i][j] = res["total"][i][j] + res[key][i][j] + end + end + end + end + end + end + for i=1,60 do + for j=1,5 do + if "number"== type(res["total"][i][j]) then + res["total"][i][j]= tostring(res["total"][i][j]) + end + end + end + for i=1,60 do + if i == 60 then + tmpstr = "["..table.concat(res["total"][i], ",") + else + tmpstr = "["..table.concat(res["total"][i], ",").."]," + end + str = str..tmpstr + end + str = "["..str.."]]" + result["total"]=str + luci.http.prepare_content("application/json") luci.http.write_json(result) end function get_device(interface) local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) - return dump['l3_device'] + if dump then + return dump['l3_device'] + else + return "" + end end function mptcp_check_trace(iface) @@ -100,11 +214,26 @@ function mptcp_fullmesh_data() return end +function mptcp_monitor_data() + luci.http.prepare_content("text/plain") + local fullmesh + fullmesh = io.popen("multipath -m") + if fullmesh:read() ~= nil then + while true do + local ln = fullmesh:read("*l") + if not ln then break end + luci.http.write(ln) + luci.http.write("\n") + end + end + return +end + function mptcp_connections_data() luci.http.prepare_content("text/plain") local connections connections = io.popen("multipath -c") - if connections then + if connections:read() ~= nil then while true do local ln = connections:read("*l") if not ln then break end diff --git a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua index fa485c023..dea854e80 100644 --- a/luci-app-mptcp/luasrc/model/cbi/mptcp.lua +++ b/luci-app-mptcp/luasrc/model/cbi/mptcp.lua @@ -4,62 +4,197 @@ local ifaces = sys.net:devices() local m, s, o local uname = nixio.uname() -m = Map("network", translate("MPTCP"), translate("Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/ConfigureMPTCP for help.")) +m = Map("network", translate("MPTCP"), translate("Networks MPTCP settings.")) local unameinfo = nixio.uname() or { } s = m:section(TypedSection, "globals") -local mtcpg = s:option(ListValue, "multipath", translate("Multipath TCP")) -mtcpg:value("enable", translate("enable")) -mtcpg:value("disable", translate("disable")) -local mtcpck = s:option(ListValue, "mptcp_checksum", translate("Multipath TCP checksum")) -mtcpck:value(1, translate("enable")) -mtcpck:value(0, translate("disable")) -local mtcpck = s:option(ListValue, "mptcp_debug", translate("Multipath Debug")) -mtcpck:value(1, translate("enable")) -mtcpck:value(0, translate("disable")) -local mtcppm = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager")) -mtcppm:value("default", translate("default")) -mtcppm:value("fullmesh", translate("fullmesh")) -mtcppm:value("ndiffports", translate("ndiffports")) -mtcppm:value("binder", translate("binder")) -if uname.release:sub(1,4) == "4.19" then - mtcppm:value("netlink", translate("Netlink")) -end -local mtcpsch = s:option(ListValue, "mptcp_scheduler", translate("Multipath TCP scheduler")) -mtcpsch:value("default", translate("default")) -mtcpsch:value("roundrobin", translate("round-robin")) -mtcpsch:value("redundant", translate("redundant")) -if uname.release:sub(1,4) == "4.19" then - mtcpsch:value("blest", translate("BLEST")) -end -local mtcpsyn = s:option(Value, "mptcp_syn_retries", translate("Multipath TCP SYN retries")) -mtcpsyn.datatype = "uinteger" -mtcpsyn.rmempty = false -local congestion = s:option(ListValue, "congestion", translate("Congestion Control"),translate("Default is bbr")) -local availablecong = sys.exec("sysctl net.ipv4.tcp_available_congestion_control | awk -F'= ' '{print $NF}'") -for cong in string.gmatch(availablecong, "[^%s]+") do - congestion:value(cong, translate(cong)) -end -local mtcpfm_subflows = s:option(Value, "mptcp_fullmesh_num_subflows", translate("Fullmesh subflows for each pair of IP addresses")) -mtcpfm_subflows.datatype = "uinteger" -mtcpfm_subflows.rmempty = false -local mtcpfm_createonerr = s:option(ListValue, "mptcp_fullmesh_create_on_err", translate("Re-create fullmesh subflows after a timeout")) -mtcpfm_createonerr:value(1, translate("enable")) -mtcpfm_createonerr:value(0, translate("disable")) +o = s:option(ListValue, "multipath", translate("Multipath TCP")) +o:value("enable", translate("enable")) +o:value("disable", translate("disable")) +o = s:option(ListValue, "mptcp_checksum", translate("Multipath TCP checksum")) +o:value(1, translate("enable")) +o:value(0, translate("disable")) -local mtcpnd_subflows = s:option(Value, "mptcp_ndiffports_num_subflows", translate("ndiffports subflows number")) -mtcpnd_subflows.datatype = "uinteger" -mtcpnd_subflows.rmempty = false +if uname.release:sub(1,4) ~= "5.15" and uname.release:sub(1,1) ~= "6" then + o = s:option(ListValue, "mptcp_debug", translate("Multipath Debug")) + o:value(1, translate("enable")) + o:value(0, translate("disable")) +end + +o = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager"), translate("Default is fullmesh")) +o:value("default", translate("default")) +o:value("fullmesh", "fullmesh") +--if tonumber(uname.release:sub(1,4)) <= 5.15 then +if uname.release:sub(1,4) ~= "5.15" and uname.release:sub(1,1) ~= "6" then + o:value("ndiffports", "ndiffports") + o:value("binder", "binder") + if uname.release:sub(1,4) ~= "4.14" then + o:value("netlink", translate("Netlink")) + end +end +o = s:option(ListValue, "mptcp_scheduler", translate("Multipath TCP scheduler")) +o:value("default", translate("default")) +-- if tonumber(uname.release:sub(1,4)) <= 5.15 then +if uname.release:sub(1,4) ~= "5.15" and uname.release:sub(1,1) ~= "6" then + o:value("roundrobin", "round-robin") + o:value("redundant", "redundant") + if uname.release:sub(1,4) ~= "4.14" then + o:value("blest", "BLEST") + o:value("ecf", "ECF") + end +end +if uname.release:sub(1,3) == "6.6" then + for dir in io.popen([[cd /usr/share/bpf/scheduler && ls -1 *.o | sed -e 's/.o//g' -e 's/mptcp_//g']]):lines() do + o:value(dir, dir) + end + -- bpf_burst => same as the default scheduler + -- bpf_red => sends all packets redundantly on all available subflows + -- bpf_first => always picks the first subflow to send data + -- bpf_rr => always picks the next available subflow to send data (round-robin) +end + +-- if tonumber(uname.release:sub(1,4)) <= 5.15 then +if uname.release:sub(1,4) ~= "5.15" and uname.release:sub(1,1) ~= "6" then + o = s:option(Value, "mptcp_syn_retries", translate("Multipath TCP SYN retries")) + o.datatype = "uinteger" + o.rmempty = false +end +-- if tonumber(uname.release:sub(1,4)) <= 5.15 then +if uname.release:sub(1,4) ~= "5.15" and uname.release:sub(1,1) ~= "6" then + o = s:option(ListValue, "mptcp_version", translate("Multipath TCP version")) + o:value(0, translate("0")) + o:value(1, translate("1")) + o.default = 0 +end +o = s:option(ListValue, "congestion", translate("Congestion Control"),translate("Default is bbr")) +local availablecong = sys.exec("sysctl -n net.ipv4.tcp_available_congestion_control | xargs -n1 | sort | xargs") +for cong in string.gmatch(availablecong, "[^%s]+") do + if cong == "bbr" and string.match(availablecong, "bbr1") then + o:value(cong, "bbr3") + else + o:value(cong, cong) + end +end + +-- if tonumber(uname.release:sub(1,4)) >= 5.15 then +if uname.release:sub(1,4) == "5.15" or uname.release:sub(1,1) == "6" then + if uname.release:sub(1,1) == "6" then + -- Only available since 5.19 + o = s:option(ListValue, "mptcp_pm_type", translate("Path Manager type")) + o:value(0, translate("In-kernel path manager")) + o:value(1, translate("Userspace path manager")) + o.default = 0 + end + + o = s:option(ListValue, "mptcp_disable_initial_config", translate("Initial MPTCP configuration")) + o:depends("mptcp_pm_type",1) + o:value("0", translate("enable")) + o:value("1", translate("disable")) + o.default = "0" + + o = s:option(ListValue, "mptcp_force_multipath", translate("Force Multipath configuration")) + o:depends("mptcp_pm_type",1) + o:value("1", translate("enable")) + o:value("0", translate("disable")) + o.default = "1" + + o = s:option(ListValue, "mptcpd_enable", translate("Enable MPTCPd")) + o:depends("mptcp_pm_type",1) + o:value("enable", translate("enable")) + o:value("disable", translate("disable")) + o.default = "disable" + + o = s:option(DynamicList, "mptcpd_path_manager", translate("MPTCPd path managers")) + for dir in io.popen([[cd /usr/lib/mptcpd && ls -1 *.so | sed 's/.so//g']]):lines() do + o:value(dir, dir) + end + o:depends("mptcp_pm_type",1) + + o = s:option(DynamicList, "mptcpd_plugins", translate("MPTCPd plugins")) + for dir in io.popen([[cd /usr/lib/mptcpd && ls -1 *.so | sed 's/.so//g']]):lines() do + o:value(dir, dir) + end + o:depends("mptcp_pm_type",1) + + o = s:option(DynamicList, "mptcpd_addr_flags", translate("MPTCPd Address annoucement flags")) + o:value("subflow","subflow") + o:value("signal","signal") + o:value("backup","backup") + o:value("fullmesh","fullmesh") + o:depends("mptcp_pm_type",1) + + o = s:option(DynamicList, "mptcpd_notify_flags", translate("MPTCPd Address notification flags")) + o:value("existing","existing") + o:value("skip_link_local","skip_link_local") + o:value("skip_loopback","skip_loopback") + o:depends("mptcp_pm_type",1) + + o = s:option(Value, "mptcp_subflows", translate("Max subflows"),translate("specifies the maximum number of additional subflows allowed for each MPTCP connection")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 3 + + o = s:option(Value, "mptcp_stale_loss_cnt", translate("Retranmission intervals"),translate("The number of MPTCP-level retransmission intervals with no traffic and pending outstanding data on a given subflow required to declare it stale. A low stale_loss_cnt value allows for fast active-backup switch-over, an high value maximize links utilization on edge scenarios e.g. lossy link with high BER or peer pausing the data processing.")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 4 + + o = s:option(Value, "mptcp_add_addr_accepted", translate("Max add address"),translate("specifies the maximum number of ADD_ADDR (add address) suboptions accepted for each MPTCP connection")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 1 + + o = s:option(Value, "mptcp_add_addr_timeout", translate("Control message timeout"),translate("Set the timeout after which an ADD_ADDR (add address) control message will be resent to an MPTCP peer that has not acknowledged a previous ADD_ADDR message.")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 120 + +else + o = s:option(Value, "mptcp_fullmesh_num_subflows", translate("Fullmesh subflows for each pair of IP addresses")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 1 + --o:depends("mptcp_path_manager","fullmesh") + + o = s:option(ListValue, "mptcp_fullmesh_create_on_err", translate("Re-create fullmesh subflows after a timeout")) + o:value(1, translate("enable")) + o:value(0, translate("disable")) + --o:depends("mptcp_path_manager","fullmesh") + + o = s:option(Value, "mptcp_ndiffports_num_subflows", translate("ndiffports subflows number")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 1 + --o:depends("mptcp_path_manager","ndiffports") + + o = s:option(ListValue, "mptcp_rr_cwnd_limited", translate("Fill the congestion window on all subflows for round robin")) + o:value("Y", translate("enable")) + o:value("N", translate("disable")) + o.default = "Y" + --o:depends("mptcp_scheduler","roundrobin") + + o = s:option(Value, "mptcp_rr_num_segments", translate("Consecutive segments that should be sent for round robin")) + o.datatype = "uinteger" + o.rmempty = false + o.default = 1 + --o:depends("mptcp_scheduler","roundrobin") +end s = m:section(TypedSection, "interface", translate("Interfaces Settings")) -mptcp = s:option(ListValue, "multipath", translate("Multipath TCP"), translate("One interface must be set as master")) -mptcp:value("on", translate("enabled")) -mptcp:value("off", translate("disabled")) -mptcp:value("master", translate("master")) -mptcp:value("backup", translate("backup")) -mptcp:value("handover", translate("handover")) -mptcp.default = "off" +function s.filter(self, section) + return not section:match("^oip.*") and not section:match("^lo.*") and section ~= "omrvpn" and section ~= "omr6in4" +end +o = s:option(ListValue, "multipath", translate("Multipath TCP"), translate("One interface must be set as master")) +o:value("on", translate("enabled")) +o:value("off", translate("disabled")) +o:value("master", translate("master")) +o:value("backup", translate("backup")) +--o:value("handover", translate("handover")) +o.default = "off" +function m.on_after_apply(self,map) + sys.call('/etc/init.d/mptcp reload') +end return m diff --git a/luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm b/luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm index 3df062637..7cd2a7645 100644 --- a/luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm +++ b/luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm @@ -69,5 +69,7 @@
+
+ <%:If you get "TCPOptionMPTCPCapable [...] Sender's Key" at the end, then MPTCP is supported. If there is a "-TCPOptionMPTCPCapable", then it's blocked.%>
<%+footer%> diff --git a/luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm b/luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm new file mode 100644 index 000000000..ec4eb5606 --- /dev/null +++ b/luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm @@ -0,0 +1,42 @@ +<%+header%> + + + + +<% if stderr and #stderr > 0 then %>
<%=pcdata(stderr)%>
<% end %> +
+ + +
+<%+footer%> diff --git a/luci-app-mptcp/luasrc/view/mptcp/multipath.htm b/luci-app-mptcp/luasrc/view/mptcp/multipath.htm index 858ec0046..01abf6a7f 100644 --- a/luci-app-mptcp/luasrc/view/mptcp/multipath.htm +++ b/luci-app-mptcp/luasrc/view/mptcp/multipath.htm @@ -3,9 +3,9 @@ -- Copyright 2015 OVH (OverTheBox@ovh.net) -- Simon Lelievre (simon.lelievre@corp.ovh.com) -- Sebastien Duponcheel (sebastien.duponcheel@ovh.net) --- Copyright 2018 Ycarus - Yannick Chabanois (ycarus@zugaina.org) +-- Copyright 2018-2020 Ycarus - Yannick Chabanois (ycarus@zugaina.org) for OpenMPTCProuter -- --- This file is part of OverTheBox for OpenWrt. +-- Part of this file come from OverTheBox for OpenWrt. -- -- OverTheBox is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -24,6 +24,15 @@ local ntm = require "luci.model.network".init() local uci = require "luci.model.uci".cursor() + function get_device(interface) + local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) + if dump and dump['l3_device'] ~= "" then + return dump['l3_device'] + else + return interface + end + end + local dev local devices = { "all" } for _, dev in ipairs(ntm:get_networks()) do @@ -35,31 +44,36 @@ --end end - local curdev = luci.http.formvalue("dev") or "all" + local curifname = luci.http.formvalue("dev") or "all" + local bandwidthtotalurl = "admin/network/mptcp/multipath_bandwidth" + local bandwidthintfurl = "admin/network/mptcp/interface_bandwidth" + -%> <%+header%> - - + +

<%:Realtime Traffic%>

    - <% for _, dev in ipairs(devices) do %> -
  • "><%=pcdata(dev)%>
  • + <% for _, dev in ipairs(devices) do + local ifname = get_device(dev) + local label = uci:get("network",dev,"label") + if label ~= nil then + %> +
  • "><%=label%>
  • + <% else %> +
  • "><%=pcdata(dev)%>
  • + <% end %> <% end %>
-<% if curdev == "all" then %> +<% if curifname == "all" then %> <%:Download:%> - +
-
<%:Upload:%> - +
-
@@ -784,7 +921,7 @@ <% else %> - +
-

diff --git a/luci-app-mptcp/po/de/mptcp.po b/luci-app-mptcp/po/de/mptcp.po new file mode 100644 index 000000000..a67d0bbce --- /dev/null +++ b/luci-app-mptcp/po/de/mptcp.po @@ -0,0 +1,349 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-05 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(Fenster von %d Minuten, %d Sekunden Intervall)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(Fenster %d Minunten, %d Sekunden Intervall)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Durchschnitt:" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Bandbreite" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "" +"Prüfung auf transparenten Transport von MPTCP-Paketen zwischen Anschluss und " +"Server." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Congestion Control" +msgstr "Überlauf-Steuerung" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "derzeit:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +#, fuzzy +msgid "Default is cubic" +msgstr "Voreinstellung ist 'bbr'" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +msgid "Default is fullmesh" +msgstr "Voreinstellung ist 'bbr'" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Downstream:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Fehler" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "aufgebaute Verbindungen" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "" +"Datenströme im vollvermaschter Betrieb für die jeweiligen Gegegenstellen-" +"Paare" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "Ankommend:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Schnittstelle" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 +msgid "Interfaces Settings" +msgstr "Anschluss-Einstellungen" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Wird geladen" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "MByte/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Vollvermaschung" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "Prüfung auf Transparenz für MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "MBit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Mehrfachausbreitungspfad-Analyse" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "Multipath TCP" +msgstr "Multipath-TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 +msgid "Multipath TCP SYN retries" +msgstr "Multipath TCP SYN Wiederholungen" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Multipath TCP Prüfummen" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Multipath TCP Pfadkontrolle" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 +msgid "Multipath TCP scheduler" +msgstr "Multpath TCP Priorisierungskontrolle" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#, fuzzy +#| msgid "Multipath TCP" +msgid "Multipath TCP version" +msgstr "Multipath-TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 +msgid "Netlink" +msgstr "Netlink-Layer" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" +"Netzwerk-MPTCP Einstellungen. Dokumentation auf http://multipath-tcp.org/pmwiki.php/" +"Users/ConfigureMPTCP (english)." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "One interface must be set as master" +msgstr "Ein Anschluss muss als 'primär' defininiert werden." + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Abgehend:" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Spitze:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Wiederverbindungs-Wartezeit der Vollvermaschungs-Verbindungen" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Echtzeit-Daten" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Einstellungen" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Test" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Upstream:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "Warte auf Abschluss der Aufgaben" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 +msgid "backup" +msgstr "Sicherung" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 +msgid "default" +msgstr "Voreinstellung" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 +msgid "disable" +msgstr "ausschalten" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 +msgid "disabled" +msgstr "aus" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 +msgid "enable" +msgstr "anschalten" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 +msgid "enabled" +msgstr "an" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kBytes/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kBit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 +msgid "master" +msgstr "primär" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 +msgid "ndiffports subflows number" +msgstr "ndiff-Ports Verbindungs-Nummer" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" + +#~ msgid "BLEST" +#~ msgstr "Blockierungsvorhersage-Betrieb" + +#~ msgid "binder" +#~ msgstr "Bindung" + +#~ msgid "fullmesh" +#~ msgstr "Vollvermaschung" + +#~ msgid "handover" +#~ msgstr "Übergabe" + +#~ msgid "ndiffports" +#~ msgstr "ndiff-Ports" + +#~ msgid "redundant" +#~ msgstr "redundant" + +#~ msgid "round-robin" +#~ msgstr "Rundlauf-Verfahren" diff --git a/luci-app-mptcp/po/de/mptcp.po~ b/luci-app-mptcp/po/de/mptcp.po~ new file mode 100644 index 000000000..dd585adf2 --- /dev/null +++ b/luci-app-mptcp/po/de/mptcp.po~ @@ -0,0 +1,327 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-05 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(Fenster von %d Minuten, %d Sekunden Intervall)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(Fenster %d Minunten, %d Sekunden Intervall)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Durchschnitt:" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Bandbreite" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "" +"Prüfung auf transparenten Transport von MPTCP-Paketen zwischen Anschluss und " +"Server." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +msgid "Congestion Control" +msgstr "Überlauf-Steuerung" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "derzeit:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is cubic" +msgstr "Voreinstellung ist 'bbr'" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is fullmesh" +msgstr "Voreinstellung ist 'bbr'" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Downstream:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Fehler" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "aufgebaute Verbindungen" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:63 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:46 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "" +"Datenströme im vollvermaschter Betrieb für die jeweiligen Gegegenstellen-" +"Paare" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "Ankommend:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Schnittstelle" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:75 +msgid "Interfaces Settings" +msgstr "Anschluss-Einstellungen" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Wird geladen" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "MByte/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Vollvermaschung" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "Prüfung auf Transparenz für MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "MBit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Mehrfachausbreitungspfad-Analyse" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "Multipath TCP" +msgstr "Multipath-TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:37 +msgid "Multipath TCP SYN retries" +msgstr "Multipath TCP SYN Wiederholungen" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Multipath TCP Prüfummen" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Multipath TCP Pfadkontrolle" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +msgid "Multipath TCP scheduler" +msgstr "Multpath TCP Priorisierungskontrolle" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +msgid "Netlink" +msgstr "Netlink-Layer" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" +"Netzwerk-MPTCP Einstellungen. Dokumentation auf http://multipath-tcp.org/pmwiki.php/" +"Users/ConfigureMPTCP (english)." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "One interface must be set as master" +msgstr "Ein Anschluss muss als 'primär' defininiert werden." + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Abgehend:" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Spitze:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Wiederverbindungs-Wartezeit der Vollvermaschungs-Verbindungen" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Echtzeit-Daten" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Einstellungen" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Test" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Upstream:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "Warte auf Abschluss der Aufgaben" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "backup" +msgstr "Sicherung" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +msgid "default" +msgstr "Voreinstellung" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:54 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:65 +msgid "disable" +msgstr "ausschalten" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:78 +msgid "disabled" +msgstr "aus" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:53 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "enable" +msgstr "anschalten" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:77 +msgid "enabled" +msgstr "an" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kBytes/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kBit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:79 +msgid "master" +msgstr "primär" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +msgid "ndiffports subflows number" +msgstr "ndiff-Ports Verbindungs-Nummer" + +#~ msgid "BLEST" +#~ msgstr "Blockierungsvorhersage-Betrieb" + +#~ msgid "binder" +#~ msgstr "Bindung" + +#~ msgid "fullmesh" +#~ msgstr "Vollvermaschung" + +#~ msgid "handover" +#~ msgstr "Übergabe" + +#~ msgid "ndiffports" +#~ msgstr "ndiff-Ports" + +#~ msgid "redundant" +#~ msgstr "redundant" + +#~ msgid "round-robin" +#~ msgstr "Rundlauf-Verfahren" diff --git a/luci-app-mptcp/po/fr/mptcp.po b/luci-app-mptcp/po/fr/mptcp.po index 678e92549..b47876f87 100644 --- a/luci-app-mptcp/po/fr/mptcp.po +++ b/luci-app-mptcp/po/fr/mptcp.po @@ -2,144 +2,350 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Ycarus \n" -"Language-Team: \n" +"PO-Revision-Date: 2022-08-10 18:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.10.1\n" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 msgid "(%d minute window, %d second interval)" -msgstr "" +msgstr "(fenêtre de %d minute, intervalle de %d seconde)" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 msgid "(%d minutes window, %d seconds interval)" -msgstr "" +msgstr "(fenêtre de %d minutes, intervalle de %d secondes)" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 msgid "Average:" msgstr "Moyenne :" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 msgid "Bandwidth" msgstr "Bande passante" -msgid "Congestion Control" -msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "Vérifiez si MPTCP entre l'interface et le serveur fonctionne." +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Congestion Control" +msgstr "Contrôle de la congestion" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "Segments consécutifs à envoyer pour round robin" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 msgid "Current:" msgstr "Actuellement :" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Default is cubic" +msgstr "La valeur par défaut est cubic" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Default is fullmesh" +msgstr "La valeur par défaut est fullmesh" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 msgid "Download:" msgstr "Téléchargement :" -msgid "Fullmesh subflows for each pair of IP addresses" -msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Erreur" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "Connexions établies" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" +"Remplir la fenêtre de congestion de tous les sous-flux pour round robin" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "Sous-flux Fullmesh pour chaque paire d'adresses IP" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "Accorder l'accès UCI pour luci-app-mlvpn" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" +"Si vous obtenez «TCPOptionMPTCPCapable [...] Sender's Key» à la fin, alors " +"MPTCP est pris en charge. Si il y a \"-TCPOptionMPTCPCapable\", alors il est " +"bloqué." + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 msgid "Inbound:" msgstr "Entrant :" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Interface" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 msgid "Interfaces Settings" msgstr "Paramètres des interfaces" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Chargement" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 msgid "MB/s" msgstr "Mo/s" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 msgid "MPTCP" -msgstr "" +msgstr "MPTCP" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Fullmesh" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "Vérification du support MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "Surveillance MPTCP" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 msgid "Mbit/s" -msgstr "" +msgstr "Mbit/s" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Débogage multipath" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "Multipath TCP" -msgstr "" +msgstr "Multipath TCP" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 msgid "Multipath TCP SYN retries" -msgstr "" +msgstr "Tentatives Multipath TCP SYN" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 msgid "Multipath TCP checksum" -msgstr "" +msgstr "Somme de contrôle Multipath TCP" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 msgid "Multipath TCP path-manager" -msgstr "" +msgstr "Gestionnaire de chemins Multipath TCP" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 msgid "Multipath TCP scheduler" -msgstr "" +msgstr "Planificateur Multipath TCP" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +msgid "Multipath TCP version" +msgstr "Version de Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 +msgid "Netlink" +msgstr "Netlink" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 msgid "" "Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" "ConfigureMPTCP for help." msgstr "" +"Paramètres réseaux MPTCP. Visiter http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP pour de l'aide." +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "One interface must be set as master" msgstr "Une interface doit être configuré en temps que maître" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 msgid "Outbound:" msgstr "Sortant :" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 msgid "Peak:" msgstr "Pointe :" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 msgid "Re-create fullmesh subflows after a timeout" -msgstr "" +msgstr "Recréer les sous-flux fullmesh après le délai d'expiration" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 msgid "Realtime Traffic" msgstr "Trafic temps réel" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 msgid "Settings" msgstr "Paramètres" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Essai" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" +"Le nombre d'intervalles de retransmission au niveau de MPTCP sans trafic et " +"en attente de données sur un sous-flux requis pour le déclarer obsolète" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 msgid "Upload:" msgstr "Envoie :" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "En attente de la réponse de la commande..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 msgid "backup" -msgstr "" - -msgid "binder" -msgstr "" +msgstr "remplaçant" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 msgid "default" msgstr "Défaut" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 msgid "disable" msgstr "Désactive" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 msgid "disabled" msgstr "Désactivé" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 msgid "enable" msgstr "Active" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 msgid "enabled" msgstr "Activé" -msgid "fullmesh" -msgstr "" - -msgid "handover" -msgstr "" - +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kB/s" -msgstr "" +msgstr "Ko/s" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kbit/s" -msgstr "" +msgstr "kbit/s" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 msgid "master" msgstr "maître" -msgid "ndiffports" -msgstr "" - +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 msgid "ndiffports subflows number" -msgstr "" +msgstr "Nombre de sous-flux ndiffports" -msgid "redundant" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" msgstr "" +"spécifie le nombre maximum de sous-options ADD_ADDR acceptées pour chaque " +"connexion MPTCP" -msgid "round-robin" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" msgstr "" +"spécifie le nombre maximum de sous-flux ADD_ADDR acceptées pour chaque " +"connexion MPTCP" + +#~ msgid "binder" +#~ msgstr "lier" + +#~ msgid "handover" +#~ msgstr "relais" + +#~ msgid "ndiffports" +#~ msgstr "ndiffports" + +#~ msgid "redundant" +#~ msgstr "redondant" + +#~ msgid "round-robin" +#~ msgstr "à tour de rôle" #~ msgid "Networks MPTCP settings" #~ msgstr "Paramètres réseaux MPTCP" diff --git a/luci-app-mptcp/po/it/mptcp.po b/luci-app-mptcp/po/it/mptcp.po new file mode 100644 index 000000000..78e5a223e --- /dev/null +++ b/luci-app-mptcp/po/it/mptcp.po @@ -0,0 +1,339 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-01 10:49+0000\n" +"Last-Translator: Giuseppe Dipierro \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(finestra di% d minuti, intervallo di% d secondi)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(finestra di% d minuti, intervallo di% d secondi)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Media:" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Larghezza banda" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "Controlla se MPTCP tra l'interfaccia e il server funziona." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Congestion Control" +msgstr "Controllo della congestione" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "Corrente:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +#, fuzzy +msgid "Default is cubic" +msgstr "L'impostazione predefinita è bbr" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +msgid "Default is fullmesh" +msgstr "L'impostazione predefinita è bbr" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Scarica:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Errore" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "Connessioni stabilite" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "Flussi secondari fullmesh per ogni coppia di indirizzi IP" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "Concedi l'accesso UCI per luci-app-mptcp" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "In entrata:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Interfaccia" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 +msgid "Interfaces Settings" +msgstr "Impostazioni delle interfacce" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Caricamento in corso" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "MB/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Fullmesh" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "Verifica supporto MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Debug multipath" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "Multipath TCP" +msgstr "Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 +msgid "Multipath TCP SYN retries" +msgstr "Multipath TCP SYN riprova" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Multipath TCP checksum" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Multipath TCP path-manager" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 +msgid "Multipath TCP scheduler" +msgstr "Multipath TCP scheduler" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#, fuzzy +#| msgid "Multipath TCP" +msgid "Multipath TCP version" +msgstr "Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 +msgid "Netlink" +msgstr "Netlink" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "One interface must be set as master" +msgstr "Un'interfaccia deve essere impostata come master" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Upload:" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Picco:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Ricrea i flussi secondari fullmesh dopo un timeout" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Traffico in tempo reale" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Impostazioni" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Test" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Upload:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "In attesa del completamento del comando ..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 +msgid "backup" +msgstr "backup" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 +msgid "default" +msgstr "predefinito" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 +msgid "disable" +msgstr "disabilita" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 +msgid "disabled" +msgstr "disabilitato" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 +msgid "enable" +msgstr "Attivare" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 +msgid "enabled" +msgstr "Abilitato" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kB/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 +msgid "master" +msgstr "Principale" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 +msgid "ndiffports subflows number" +msgstr "ndiffports subflows number" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" + +#~ msgid "BLEST" +#~ msgstr "BLEST" + +#~ msgid "ECF" +#~ msgstr "ECF" + +#~ msgid "fullmesh" +#~ msgstr "fullmesh" + +#~ msgid "ndiffports" +#~ msgstr "ndiffports" + +#~ msgid "redundant" +#~ msgstr "ridondante" + +#~ msgid "round-robin" +#~ msgstr "round-robin" diff --git a/luci-app-mptcp/po/it/mptcp.po~ b/luci-app-mptcp/po/it/mptcp.po~ new file mode 100644 index 000000000..a9bc32b78 --- /dev/null +++ b/luci-app-mptcp/po/it/mptcp.po~ @@ -0,0 +1,317 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-12-01 10:49+0000\n" +"Last-Translator: Giuseppe Dipierro \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(finestra di% d minuti, intervallo di% d secondi)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(finestra di% d minuti, intervallo di% d secondi)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Media:" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Larghezza banda" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "Controlla se MPTCP tra l'interfaccia e il server funziona." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +msgid "Congestion Control" +msgstr "Controllo della congestione" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "Corrente:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is cubic" +msgstr "L'impostazione predefinita è bbr" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is fullmesh" +msgstr "L'impostazione predefinita è bbr" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Scarica:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Errore" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "Connessioni stabilite" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:63 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:46 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "Flussi secondari fullmesh per ogni coppia di indirizzi IP" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "Concedi l'accesso UCI per luci-app-mptcp" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "In entrata:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Interfaccia" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:75 +msgid "Interfaces Settings" +msgstr "Impostazioni delle interfacce" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Caricamento in corso" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "MB/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Fullmesh" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "Verifica supporto MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Debug multipath" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "Multipath TCP" +msgstr "Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:37 +msgid "Multipath TCP SYN retries" +msgstr "Multipath TCP SYN riprova" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Multipath TCP checksum" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Multipath TCP path-manager" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +msgid "Multipath TCP scheduler" +msgstr "Multipath TCP scheduler" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +msgid "Netlink" +msgstr "Netlink" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "One interface must be set as master" +msgstr "Un'interfaccia deve essere impostata come master" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Upload:" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Picco:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Ricrea i flussi secondari fullmesh dopo un timeout" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Traffico in tempo reale" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Impostazioni" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Test" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Upload:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "In attesa del completamento del comando ..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "backup" +msgstr "backup" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +msgid "default" +msgstr "predefinito" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:54 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:65 +msgid "disable" +msgstr "disabilita" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:78 +msgid "disabled" +msgstr "disabilitato" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:53 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "enable" +msgstr "Attivare" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:77 +msgid "enabled" +msgstr "Abilitato" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kB/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:79 +msgid "master" +msgstr "Principale" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +msgid "ndiffports subflows number" +msgstr "ndiffports subflows number" + +#~ msgid "BLEST" +#~ msgstr "BLEST" + +#~ msgid "ECF" +#~ msgstr "ECF" + +#~ msgid "fullmesh" +#~ msgstr "fullmesh" + +#~ msgid "ndiffports" +#~ msgstr "ndiffports" + +#~ msgid "redundant" +#~ msgstr "ridondante" + +#~ msgid "round-robin" +#~ msgstr "round-robin" diff --git a/luci-app-mptcp/po/oc/mptcp.po b/luci-app-mptcp/po/oc/mptcp.po new file mode 100644 index 000000000..f9bd5bda5 --- /dev/null +++ b/luci-app-mptcp/po/oc/mptcp.po @@ -0,0 +1,346 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-19 09:37+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(fenèstra de %d minuta,interval de %d segonda)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(fenèstra de %d minutas,interval de %d segondas)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Mejana :" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Benda passanta" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "Verificar se MPTCP entre l‘interfàcia e lo servidor fonciona." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Congestion Control" +msgstr "Contraròtle de congestion" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "Actualament :" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +#, fuzzy +msgid "Default is cubic" +msgstr "Per defaut bbr" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +msgid "Default is fullmesh" +msgstr "Per defaut bbr" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Telecargament :" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Error" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "Connexions establidas" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "Jos flux Fullmesh per cada parelh d’adreças IP" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "Dintrant :" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Interfàcia" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 +msgid "Interfaces Settings" +msgstr "Paramètres de las interfàcias" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Cargament" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "Mo/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Fullmesh" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Desbugatge multipath" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "Multipath TCP" +msgstr "Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 +msgid "Multipath TCP SYN retries" +msgstr "Ensages Multipath TCP SYN" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Sòma de contraròtle Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Gestionari dels camins Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 +msgid "Multipath TCP scheduler" +msgstr "Planificator Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#, fuzzy +#| msgid "Multipath TCP" +msgid "Multipath TCP version" +msgstr "Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 +msgid "Netlink" +msgstr "Ligam ret" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" +"Paramètres ret MPTCP. Consulatz http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP per d’ajuda." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "One interface must be set as master" +msgstr "Una interfàcia deu èsser configurada coma principala" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Sortent :" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Punta :" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Tornar crear los jos-flus fullmesh aprèp lo relambi d’expiracion" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Trafic dirèct" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Paramètres" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Pròva" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Mandadís :" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "En espèra d’una responsa de la comanda..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 +msgid "backup" +msgstr "subordinat" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 +msgid "default" +msgstr "Defaut" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 +msgid "disable" +msgstr "desactivar" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 +msgid "disabled" +msgstr "desactivat" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 +msgid "enable" +msgstr "Activar" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 +msgid "enabled" +msgstr "Activat" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kB/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 +msgid "master" +msgstr "màger" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 +msgid "ndiffports subflows number" +msgstr "Nombre de jos-flux ndiffports" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" + +#, fuzzy +#~ msgid "BLEST" +#~ msgstr "BLEST" + +#~ msgid "binder" +#~ msgstr "associar" + +#~ msgid "fullmesh" +#~ msgstr "fullmesh" + +#~ msgid "handover" +#~ msgstr "relai" + +#~ msgid "ndiffports" +#~ msgstr "ndiffports" + +#~ msgid "redundant" +#~ msgstr "redondant" + +#~ msgid "round-robin" +#~ msgstr "cadun son torn" diff --git a/luci-app-mptcp/po/oc/mptcp.po~ b/luci-app-mptcp/po/oc/mptcp.po~ new file mode 100644 index 000000000..2ebb121a6 --- /dev/null +++ b/luci-app-mptcp/po/oc/mptcp.po~ @@ -0,0 +1,324 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-19 09:37+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(fenèstra de %d minuta,interval de %d segonda)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(fenèstra de %d minutas,interval de %d segondas)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Mejana :" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Benda passanta" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "Verificar se MPTCP entre l‘interfàcia e lo servidor fonciona." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +msgid "Congestion Control" +msgstr "Contraròtle de congestion" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "Actualament :" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:40 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is cubic" +msgstr "Per defaut bbr" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +#, fuzzy +#| msgid "Default is bbr" +msgid "Default is fullmesh" +msgstr "Per defaut bbr" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Telecargament :" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Error" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "Connexions establidas" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:63 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:46 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "Jos flux Fullmesh per cada parelh d’adreças IP" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "Dintrant :" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Interfàcia" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:75 +msgid "Interfaces Settings" +msgstr "Paramètres de las interfàcias" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Cargament" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "Mo/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Fullmesh" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Desbugatge multipath" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "Multipath TCP" +msgstr "Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:37 +msgid "Multipath TCP SYN retries" +msgstr "Ensages Multipath TCP SYN" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Sòma de contraròtle Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Gestionari dels camins Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:29 +msgid "Multipath TCP scheduler" +msgstr "Planificator Multipath TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:27 +msgid "Netlink" +msgstr "Ligam ret" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" +"Paramètres ret MPTCP. Consulatz http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP per d’ajuda." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:76 +msgid "One interface must be set as master" +msgstr "Una interfàcia deu èsser configurada coma principala" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Sortent :" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Punta :" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Tornar crear los jos-flus fullmesh aprèp lo relambi d’expiracion" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Trafic dirèct" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Paramètres" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Pròva" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Mandadís :" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "En espèra d’una responsa de la comanda..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "backup" +msgstr "subordinat" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:30 +msgid "default" +msgstr "Defaut" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:54 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:65 +msgid "disable" +msgstr "desactivar" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:78 +msgid "disabled" +msgstr "desactivat" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:53 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "enable" +msgstr "Activar" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:77 +msgid "enabled" +msgstr "Activat" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kB/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:79 +msgid "master" +msgstr "màger" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:57 +msgid "ndiffports subflows number" +msgstr "Nombre de jos-flux ndiffports" + +#, fuzzy +#~ msgid "BLEST" +#~ msgstr "BLEST" + +#~ msgid "binder" +#~ msgstr "associar" + +#~ msgid "fullmesh" +#~ msgstr "fullmesh" + +#~ msgid "handover" +#~ msgstr "relai" + +#~ msgid "ndiffports" +#~ msgstr "ndiffports" + +#~ msgid "redundant" +#~ msgstr "redondant" + +#~ msgid "round-robin" +#~ msgstr "cadun son torn" diff --git a/luci-app-mptcp/po/ru/mptcp.po b/luci-app-mptcp/po/ru/mptcp.po new file mode 100644 index 000000000..bdd6ac158 --- /dev/null +++ b/luci-app-mptcp/po/ru/mptcp.po @@ -0,0 +1,325 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(% d минутное окно,% d секундный интервал)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(% d минутное окно,% d секундный интервал)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "Среднее:" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "Пропускная способность" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "Проверьте, работает ли MPTCP между интерфейсом и сервером." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Congestion Control" +msgstr "Контроль перегрузки" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "Последовательные сегменты, которые следует отправлять для round-robin" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "Текущая:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Default is cubic" +msgstr "По умолчанию кубический" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Default is fullmesh" +msgstr "По умолчанию - fullmesh" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "Загрузка:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "Ошибка" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "Установленные соединения" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "Заполнение окна перегрузки для всех подпотоков для round-robin" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "Подпотоки Fullmesh для каждой пары IP-адресов" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "Предоставить доступ UCI для luci-app-mptcp" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" +"Если в конце вы получите «TCPOptionMPTCPCapable [...] Sender's Key», то " +"MPTCP поддерживается. Если \"-TCPOptionMPTCPCapable\", то MPTCP заблокирован." + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "Входящий:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "Интерфейс" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 +msgid "Interfaces Settings" +msgstr "Настройки интерфейсов" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "Загрузка" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "MB/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "MPTCP Fullmesh" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "Проверка поддержки MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "Мониторинг MPTCP" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Многоуровневая отладка" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "Multipath TCP" +msgstr "Многопоточный TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 +msgid "Multipath TCP SYN retries" +msgstr "Попытки многопоточной TCP SYN" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "Контрольная сумма многопоточного TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "Многопоточный TCP менеджер" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 +msgid "Multipath TCP scheduler" +msgstr "Планировщик многопоточного TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#, fuzzy +#| msgid "Multipath TCP" +msgid "Multipath TCP version" +msgstr "Многопоточный TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 +msgid "Netlink" +msgstr "Netlink" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" +"Настройки сети MPTCP. Посетите http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP для справки." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "One interface must be set as master" +msgstr "Один интерфейс должен быть установлен как главный" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "Отправка:" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "Пиковое значение:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "Повторно создать подпотоки fullmesh после тайм-аута" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "Трафик в реальном времени" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "Настройки" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "Тест" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "Отправка:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "Ожидание завершения команды..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 +msgid "backup" +msgstr "Резервирование" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 +msgid "default" +msgstr "По умолчанию" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 +msgid "disable" +msgstr "отключить" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 +msgid "disabled" +msgstr "отключить" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 +msgid "enable" +msgstr "включить" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 +msgid "enabled" +msgstr "Установлено" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kB/s" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 +msgid "master" +msgstr "мастер" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 +msgid "ndiffports subflows number" +msgstr "количество подпотоков ndiffports" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" diff --git a/luci-app-mptcp/po/templates/mptcp.pot b/luci-app-mptcp/po/templates/mptcp.pot index 12061a7a0..dfecf162a 100644 --- a/luci-app-mptcp/po/templates/mptcp.pot +++ b/luci-app-mptcp/po/templates/mptcp.pot @@ -1,131 +1,308 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 msgid "(%d minute window, %d second interval)" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 msgid "(%d minutes window, %d seconds interval)" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 msgid "Average:" msgstr "" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 msgid "Bandwidth" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 msgid "Congestion Control" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 msgid "Current:" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Default is cubic" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Default is fullmesh" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 msgid "Download:" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 msgid "Fullmesh subflows for each pair of IP addresses" msgstr "" +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 msgid "Inbound:" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 msgid "Interfaces Settings" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 msgid "MB/s" msgstr "" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 msgid "MPTCP" msgstr "" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 msgid "Mbit/s" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "Multipath TCP" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 msgid "Multipath TCP SYN retries" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 msgid "Multipath TCP checksum" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 msgid "Multipath TCP path-manager" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 msgid "Multipath TCP scheduler" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +msgid "Multipath TCP version" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 +msgid "Netlink" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 msgid "" "Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" "ConfigureMPTCP for help." msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 msgid "One interface must be set as master" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 msgid "Outbound:" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 msgid "Peak:" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 msgid "Re-create fullmesh subflows after a timeout" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 msgid "Realtime Traffic" msgstr "" +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 msgid "Settings" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 msgid "Upload:" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 msgid "backup" msgstr "" -msgid "binder" -msgstr "" - +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 msgid "default" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 msgid "disable" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 msgid "disabled" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 msgid "enable" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 msgid "enabled" msgstr "" -msgid "fullmesh" -msgstr "" - -msgid "handover" -msgstr "" - +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kB/s" msgstr "" +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 msgid "kbit/s" msgstr "" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 msgid "master" msgstr "" -msgid "ndiffports" -msgstr "" - +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 msgid "ndiffports subflows number" msgstr "" -msgid "redundant" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" msgstr "" -msgid "round-robin" +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" msgstr "" diff --git a/luci-app-mptcp/po/zh_Hans/mptcp.po b/luci-app-mptcp/po/zh_Hans/mptcp.po new file mode 100644 index 000000000..36a27a977 --- /dev/null +++ b/luci-app-mptcp/po/zh_Hans/mptcp.po @@ -0,0 +1,342 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2022-08-12 19:29+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.10.1\n" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:775 +msgid "(%d minute window, %d second interval)" +msgstr "(%d 分钟刷新, %d 秒钟刷新)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:241 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:242 +msgid "(%d minutes window, %d seconds interval)" +msgstr "(%d 分钟间隔, %d 秒钟刷新)" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:315 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:373 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:932 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:942 +msgid "Average:" +msgstr "平均:" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:11 +msgid "Bandwidth" +msgstr "带宽" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:43 +msgid "Check if MPTCP between interface and server is working." +msgstr "检查接口和服务器之间的MPTCP是否正常工作." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Congestion Control" +msgstr "阻塞控制" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:97 +msgid "Consecutive segments that should be sent for round robin" +msgstr "连续轮播应发送的连续段" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:311 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:369 +msgid "Current:" +msgstr "实时:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:52 +msgid "Default is cubic" +msgstr "默认设置 cubic" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Default is fullmesh" +msgstr "默认设置fullmesh" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:908 +msgid "Download:" +msgstr "下载:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:31 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:24 +msgid "Error" +msgstr "错误" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:18 +msgid "Established connections" +msgstr "建立的连接" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:91 +msgid "Fill the congestion window on all subflows for round robin" +msgstr "在循环的所有子流上填充拥塞窗口" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:74 +msgid "Fullmesh subflows for each pair of IP addresses" +msgstr "每对IP地址的全网格子流" + +#: luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json:3 +msgid "Grant UCI access for luci-app-mptcp" +msgstr "授予UCI访问luci-app-mptcp的权限" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:73 +msgid "" +"If you get \"TCPOptionMPTCPCapable [...] Sender's Key\" at the end, then " +"MPTCP is supported. If there is a \"-TCPOptionMPTCPCapable\", then it's " +"blocked." +msgstr "如果您在末尾获得“TCPOptionMPTCPCapable [...] Sender 's Key” ,则支持MPTCP" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:929 +msgid "Inbound:" +msgstr "入站:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:48 +msgid "Interface" +msgstr "接口" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:104 +msgid "Interfaces Settings" +msgstr "网卡设置" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Loading" +msgstr "载入中" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:93 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:686 +msgid "MB/s" +msgstr "MB/s" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:9 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +#: luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json:3 +msgid "MPTCP" +msgstr "MPTCP" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:16 +msgid "MPTCP Fullmesh" +msgstr "设置MPTCP全网" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:14 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:42 +msgid "MPTCP Support Check" +msgstr "MPTCP支持检查" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:20 +msgid "MPTCP monitoring" +msgstr "MPTCP监控" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:102 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:695 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:18 +msgid "Multipath Debug" +msgstr "Multipath 调试" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:12 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "Multipath TCP" +msgstr "多路径TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:42 +msgid "Multipath TCP SYN retries" +msgstr "多路径 TCP SYN 重试" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:15 +msgid "Multipath TCP checksum" +msgstr "多路径TCP校验和" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:21 +msgid "Multipath TCP path-manager" +msgstr "多路径TCP路径管理器" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:31 +msgid "Multipath TCP scheduler" +msgstr "多路径TCP调度程序" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:47 +#, fuzzy +msgid "Multipath TCP version" +msgstr "多路径TCP" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:28 +msgid "Netlink" +msgstr "网络链接" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:7 +msgid "" +"Networks MPTCP settings. Visit http://multipath-tcp.org/pmwiki.php/Users/" +"ConfigureMPTCP for help." +msgstr "" +"网络MPTCP设置. 访问http://multipath-tcp.org/pmwiki.php/Users/ConfigureMPTCP4 获取更多的支持." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:108 +msgid "One interface must be set as master" +msgstr "必须设置一个网卡为主接口" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:939 +msgid "Outbound:" +msgstr "出站:" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:319 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:377 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:935 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:945 +msgid "Peak:" +msgstr "峰值:" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:80 +msgid "Re-create fullmesh subflows after a timeout" +msgstr "超时后重新创建全网格子流" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:891 +msgid "Realtime Traffic" +msgstr "实时流量" + +#: luci-app-mptcp/luasrc/controller/mptcp.lua:10 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:45 +msgid "Settings" +msgstr "设置" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:65 +msgid "Test" +msgstr "测试" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:69 +msgid "" +"The number of MPTCP-level retransmission intervals with no traffic and " +"pending outstanding data on a given subflow required to declare it stale" +msgstr "" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:914 +msgid "Upload:" +msgstr "上传:" + +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_check.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_connections.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_fullmesh.htm:21 +#: luci-app-mptcp/luasrc/view/mptcp/mptcp_monitor.htm:14 +msgid "Waiting for command to complete..." +msgstr "等待命令完成..." + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:112 +msgid "backup" +msgstr "备份" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:22 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:32 +msgid "default" +msgstr "默认" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:14 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:17 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:20 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:82 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:93 +msgid "disable" +msgstr "禁用" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:110 +msgid "disabled" +msgstr "禁用" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:13 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:16 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:19 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:81 +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:92 +msgid "enable" +msgstr "启用" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:109 +msgid "enabled" +msgstr "启用" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:88 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:681 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kB/s" +msgstr "kB/秒" + +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:97 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:314 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:318 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:322 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:372 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:376 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:380 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:690 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:930 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:933 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:936 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:940 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:943 +#: luci-app-mptcp/luasrc/view/mptcp/multipath.htm:946 +msgid "kbit/s" +msgstr "kbit/秒" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:111 +msgid "master" +msgstr "主" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:85 +msgid "ndiffports subflows number" +msgstr "ndiffports子流数" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:64 +msgid "" +"specifies the maximum number of ADD_ADDR suboptions accepted for each MPTCP " +"connection" +msgstr "" + +#: luci-app-mptcp/luasrc/model/cbi/mptcp.lua:59 +msgid "" +"specifies the maximum number of additional subflows allowed for each MPTCP " +"connection" +msgstr "" + +#~ msgid "BLEST" +#~ msgstr "最好的" + +#~ msgid "binder" +#~ msgstr "设置binder" + +#~ msgid "fullmesh" +#~ msgstr "全网" + +#~ msgid "handover" +#~ msgstr "移除" + +#~ msgid "ndiffports" +#~ msgstr "设置ndiffports" + +#~ msgid "redundant" +#~ msgstr "冗余" + +#~ msgid "round-robin" +#~ msgstr "轮询" diff --git a/luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json b/luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json new file mode 100644 index 000000000..a3e457424 --- /dev/null +++ b/luci-app-mptcp/root/usr/share/luci/menu.d/luci-app-mptcp.json @@ -0,0 +1,13 @@ +{ + "admin/network/mptcp": { + "title": "MPTCP", + "order": 10, + "action": { + "type": "cbi", + "path": "mptcp" + }, + "depends": { + "acl": [ "luci-app-mptcp" ] + } + } +} diff --git a/luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json b/luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json new file mode 100644 index 000000000..eaf813e8c --- /dev/null +++ b/luci-app-mptcp/root/usr/share/rpcd/acl.d/luci-app-mptcp.json @@ -0,0 +1,20 @@ +{ + "luci-app-mptcp": { + "description": "Grant UCI access for luci-app-mptcp", + "read": { + "uci": [ "openmptcprouter", "network" ], + "file": { + "/usr/lib/mptcpd": [ "list" ], + "/usr/share/bpf/scheduler": [ "list" ], + "/sbin/sysctl -n net.ipv4.tcp_available_congestion_control": [ "exec" ] + }, + "ubus": { + "file": [ "list", "exec" ], + "system": [ "board" ] + } + }, + "write": { + "uci": [ "openmptcprouter", "network" ] + } + } +} \ No newline at end of file diff --git a/luci-app-nginx-ha/Makefile b/luci-app-nginx-ha/Makefile index ec53fe564..2c41ee755 100644 --- a/luci-app-nginx-ha/Makefile +++ b/luci-app-nginx-ha/Makefile @@ -13,6 +13,7 @@ KCONFIG:=CONFIG_NGINX_STREAM_CORE_MODULE PKG_LICENSE:=MIT -include ../luci/luci.mk +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-nginx-ha/root/usr/share/luci/menu.d/luci-app-nginx-ha.json b/luci-app-nginx-ha/root/usr/share/luci/menu.d/luci-app-nginx-ha.json new file mode 100644 index 000000000..b62a8ab35 --- /dev/null +++ b/luci-app-nginx-ha/root/usr/share/luci/menu.d/luci-app-nginx-ha.json @@ -0,0 +1,13 @@ +{ + "admin/services/nginx-ha": { + "title": "Nginx High Availability", + "order": 80, + "action": { + "type": "cbi", + "path": "nginx-ha" + }, + "depends": { + "acl": [ "luci-app-nginx-ha" ] + } + } +} diff --git a/luci-app-nginx-ha/root/usr/share/rpcd/acl.d/luci-app-nginx-ha.json b/luci-app-nginx-ha/root/usr/share/rpcd/acl.d/luci-app-nginx-ha.json new file mode 100644 index 000000000..b6cab190e --- /dev/null +++ b/luci-app-nginx-ha/root/usr/share/rpcd/acl.d/luci-app-nginx-ha.json @@ -0,0 +1,11 @@ +{ + "luci-app-nginx-ha": { + "description": "Grant UCI access for luci-app-nginx-ha", + "read": { + "uci": [ "nginx-ha" ] + }, + "write": { + "uci": [ "nginx-ha" ] + } + } +} \ No newline at end of file diff --git a/luci-app-omr-bypass/Makefile b/luci-app-omr-bypass/Makefile index 2b16b8527..1ceb86669 100644 --- a/luci-app-omr-bypass/Makefile +++ b/luci-app-omr-bypass/Makefile @@ -6,10 +6,17 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Interface to bypass domains -LUCI_DEPENDS:=+dnsmasq-full +shadowsocks-libev-ss-rules +iptables-mod-ndpi +iptables-mod-extra +kmod-ipt-ndpi +iptables +#LUCI_DEPENDS:=+dnsmasq-full +shadowsocks-libev-ss-rules +(LINUX_5_4||LINUX_5_15||TARGET_x86_64):iptables-mod-ndpi +iptables-mod-extra +(LINUX_5_4||LINUX_5_15||TARGET_x86_64):kmod-ipt-ndpi +iptables +LUCI_DEPENDS:=+LINUX_5_4:omr-bypass +!LINUX_5_4:omr-bypass-nft +#ifneq ($(CONFIG_TARGET_ramips),y) +# #LUCI_DEPENDS+=+(LINUX_5_4||LINUX_5_15):iptables-mod-ndpi +(LINUX_5_4||LINUX_5_15):kmod-ipt-ndpi +# LUCI_DEPENDS+=+iptables-mod-ndpi +kmod-ipt-ndpi +#endif + PKG_LICENSE:=GPLv3 -include ../luci/luci.mk +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js b/luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js new file mode 100644 index 000000000..08955491c --- /dev/null +++ b/luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js @@ -0,0 +1,302 @@ +'use strict'; +'require rpc'; +'require form'; +'require fs'; +'require uci'; +'require tools.widgets as widgets'; + +var callHostHints; + +return L.view.extend({ + callHostHints: rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } + }), + + load: function() { + return Promise.all([ + L.resolveDefault(fs.stat('/proc/net/xt_ndpi/proto'), null), + this.callHostHints(), + L.resolveDefault(fs.read_direct('/proc/net/xt_ndpi/proto'), ''), + L.resolveDefault(fs.read_direct('/proc/net/xt_ndpi/host_proto'), ''), + fs.read_direct('/usr/share/omr-bypass/omr-bypass-proto.lst') + ]); + }, + + render: function(testhosts) { + var m, s, o, hosts; + hosts = testhosts[1]; + + m = new form.Map('omr-bypass', _('OMR-Bypass'),_('OpenMPTCProuter IP must be used as DNS.')); + + /* + s = m.section(form.TypedSection, 'global', _('Global settings')); + s.addremove = false; + s.anonymous = true; + + o = s.option(form.Flag, 'noipv6', _('Disable IPv6 AAAA DNS results for bypassed domains')); + o.default = o.disabled; + o.optional = true; + */ + + s = m.section(form.GridSection, 'domains', _('Domains')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = o.enabled; + + o = s.option(form.Value, 'name', _('Domain')); + o.rmempty = false; + + o = s.option(form.Flag, 'vpn', _('VPN on server'),_('Bypass using VPN configured on server.')); + o.modalonly = true + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); + o.noaliases = true; + o.noinactive = true; + o.nocreate = true; + o.depends('vpn', '0'); + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + o = s.option(form.ListValue, 'family', _('Restrict to address family')); + o.value('ipv4ipv6', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.default = 'ipv4ipv6'; + o.modalonly = true + + o = s.option(form.Flag, 'noipv6', _('Disable AAAA IPv6 DNS')); + o.default = o.enabled; + o.modalonly = true + + s = m.section(form.GridSection, 'ips', _('IPs and Networks')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = o.enabled; + + o = s.option(form.Value, 'ip', _('IP')); + o.rmempty = false; + + o = s.option(form.Flag, 'vpn', _('VPN on server'),_('Bypass using VPN configured on server.')); + o.modalonly = true + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); + o.noaliases = true; + o.noinactive = true; + o.nocreate = true; + o.depends('vpn', '0'); + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'dest_port', _('Ports destination')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = o.enabled; + + o = s.option(form.Value, 'dport', _('port')); + o.rmempty = false; + + o = s.option(form.ListValue, 'proto', _('protocol')); + o.default = 'tcp'; + o.rmempty = false; + o.value('tcp'); + o.value('udp'); + o.value('icmp'); + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); + o.noaliases = true; + o.noinactive = true; + o.nocreate = true; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'src_port', _('Ports source')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = o.enabled; + + o = s.option(form.Value, 'sport', _('port')); + o.rmempty = false; + + o = s.option(form.ListValue, 'proto', _('protocol')); + o.default = 'tcp'; + o.rmempty = false; + o.value('tcp'); + o.value('udp'); + o.value('icmp'); + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); + o.noaliases = true; + o.noinactive = true; + o.nocreate = true; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'macs', _('MAC-Address')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = o.enabled; + + o = s.option(form.Value, 'mac', _('source MAC-Address')); + o.datatype = 'list(unique(macaddr))'; + o.rmempty = false; + Object.keys(hosts).forEach(function(mac) { + var hint = hosts[mac].name || hosts[mac].ipv4; + o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac); + }); + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); + o.noaliases = true; + o.noinactive = true; + o.nocreate = true; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'lan_ip', _('Source lan IP address or network')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = o.enabled; + + o = s.option(form.Value, 'ip', _('IP Address')); + o.datatype = 'or(ip4addr,ip6addr)'; + o.rmempty = false; + Object.keys(hosts).forEach(function(mac) { + if (hosts[mac].ipv4) { + var hint = hosts[mac].name; + o.value(hosts[mac].ipv4, hint ? '%s (%s)'.format(hosts[mac].ipv4, hint) : hosts[mac].ipv4); + } + }); + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); + o.noaliases = true; + o.noinactive = true; + o.nocreate = true; + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'asns', _('ASN')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = o.enabled; + + o = s.option(form.Value, 'asn', _('ASN')); + o.rmempty = false; + + o = s.option(form.Flag, 'vpn', _('VPN on server'),_('Bypass using VPN configured on server.')); + o.modalonly = true + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used.')); + o.noaliases = true; + o.noinactive = true; + o.nocreate = true; + o.depends('vpn', '0'); + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + s = m.section(form.GridSection, 'dpis', _('Protocols and services')); + s.addremove = true; + s.anonymous = true; + s.nodescriptions = true; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = o.enabled; + + o = s.option(form.ListValue, 'proto', _('Protocol/Service')); + o.rmempty = false; + o.load = function(section_id) { + var proto = testhosts[2].split(/\n/), + host = testhosts[3].split(/\n/), + protofile = testhosts[4].split(/\n/), + name = []; + if (proto.length > 2) { + for (var i = 0; i < proto.length; i++) { + var m = proto[i].split(/\s+/); + if (m && m[0] != "#id" && m[1] != "disabled") + name.push(m[2]); + } + } + if (host.length > 2) { + for (var i = 0; i < host.length; i++) { + var m = host[i].split(/:/); + if (m && m[0] != "#Proto") + name.push(m[0].toLowerCase()); + } + } + if (proto.length == 1 && host.length == 1) { + for (var i = 0; i < protofile.length; i++) { + var m = protofile[i]; + name.push(m); + } + } + if (host.length > 2) { + name = Array.from(new Set(name)).sort(function (a, b) { return a.toLowerCase().localeCompare(b.toLowerCase())}).reduce(function(a, b){ if (a.slice(-1)[0] !== b) a.push(b);return a;},[]); + } + for (var i = 0; i < name.length; i++) { + this.value(name[i]); + } + return this.super('load', [section_id]); + + }; + + o = s.option(form.Flag, 'vpn', _('VPN on server'),_('Bypass using VPN configured on server.')); + o.modalonly = true + + o = s.option(widgets.DeviceSelect, 'interface', _('Output interface'),_('When none selected, MPTCP master interface is used (or an other interface if master is down).')); + o.noaliases = true; + o.noinactive = true; + o.nocreate = true; + o.depends('vpn', '0'); + + o = s.option(form.Value, 'note', _('Note')); + o.rmempty = true; + + o = s.option(form.ListValue, 'family', _('Restrict to address family')); + o.value('ipv4ipv6', _('IPv4 and IPv6')); + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.default = 'ipv4ipv6'; + o.modalonly = true + + o = s.option(form.Flag, 'noipv6', _('Disable AAAA IPv6 DNS')); + o.default = true; + o.modalonly = true + + if (testhosts[0]) { + o = s.option(form.Flag, 'ndpi', _('Enable ndpi')); + o.default = o.enabled; + o.modalonly = true + o.depends('vpn', '0'); + } + + return m.render(); + } +}); diff --git a/luci-app-omr-bypass/luasrc/controller/omr-bypass.lua b/luci-app-omr-bypass/luasrc/controller/omr-bypass.lua deleted file mode 100644 index 46ba4fabf..000000000 --- a/luci-app-omr-bypass/luasrc/controller/omr-bypass.lua +++ /dev/null @@ -1,9 +0,0 @@ -local ucic = luci.model.uci.cursor() -local dt = require "luci.cbi.datatypes" -module("luci.controller.omr-bypass", package.seeall) - -function index() - entry({"admin", "services", "omr-bypass"}, alias("admin", "services", "omr-bypass", "index"), _("OMR-Bypass")) - --entry({"admin", "services", "omr-bypass", "index"}, template("omr-bypass/bypass")) - entry({"admin", "services", "omr-bypass", "index"}, cbi("omr-bypass")) -end diff --git a/luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua b/luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua deleted file mode 100644 index 2f2be2c14..000000000 --- a/luci-app-omr-bypass/luasrc/model/cbi/omr-bypass.lua +++ /dev/null @@ -1,130 +0,0 @@ --- Copyright 2018-2019 Ycarus (Yannick Chabanois) --- Licensed to the public under the Apache License 2.0. - -local ipc = require "luci.ip" -local sys = require "luci.sys" -local net = require "luci.model.network".init() -local ifaces = net:get_interfaces() or { net:get_interface() } - -m = Map("omr-bypass", translate("Bypass"), translate("Here you can bypass ShadowSocks and VPN. If you set Interface to Default this use any working interface.")) - -s = m:section(TypedSection, "domains", translate("Domains")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -hn = s:option(Value, "name", translate("Domain")) -hn.datatype = "hostname" -hn.optional = false -hn.rmempty = true - -ifd = s:option(Value, "interface", translate("Interface")) -ifd.rmempty = true - -s = m:section(TypedSection, "ips", translate("IPs and Networks")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -ip = s:option(Value, "ip", translate("IP")) -ip.datatype = "ipaddr" -ip.rmempty = true -ip.optional = false - -ifi = s:option(Value, "interface", translate("Interface")) -ifi.rmempty = true - -s = m:section(TypedSection, "macs", translate("MAC-Address")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -mac = s:option(Value, "mac", translate("Source MAC-Address")) -mac.datatype = "list(macaddr)" -mac.rmempty = true -mac.optional = false - -sys.net.host_hints(function(m, v4, v6, name) - if m then - mac:value(m, "%s (%s)" %{m, name or v4 or v6}) - end -end) - -ifm = s:option(Value, "interface", translate("Interface")) -ifm.rmempty = true - -s = m:section(TypedSection, "lan_ip", translate("Source lan IP address or network")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -ip = s:option(Value, "ip", translate("IP Address")) -ip.datatype = "ipaddr" -ip.rmempty = true -ip.optional = false - -ifl = s:option(Value, "interface", translate("Interface")) -ifl.rmempty = true - -s = m:section(TypedSection, "asns", translate("ASN")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -asn = s:option(Value, "asn", translate("ASN")) -asn.rmempty = true -asn.optional = false - -ifa = s:option(Value, "interface", translate("Interface")) -ifa.rmempty = true - -s = m:section(TypedSection, "dpis", translate("Protocols")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -dpi = s:option(Value, "proto", translate("Protocol")) -dpi.rmempty = true -dpi.optional = false -local xt_ndpi_available = nixio.fs.access("/proc/net/xt_ndpi/proto") -if xt_ndpi_available then - local protos = {} - for l in io.lines("/proc/net/xt_ndpi/proto") do - local a,b,c,d = l:match('(%w+) (%w+)') - if b ~= "2" and not string.match(b,"custom") then - table.insert(protos,b) - end - end - table.sort(protos) - for _,b in ipairs(protos) do - dpi:value(b,"%s" % tostring(b)) - end -end - -ifp = s:option(ListValue, "interface", translate("Interface")) -ifp.rmempty = true - -ifd.default = "all" -ifi.default = "all" -ifp.default = "all" -ifm.default = "all" -ifl.default = "all" -ifa.default = "all" -ifd:value("all",translate("Default")) -ifi:value("all",translate("Default")) -ifp:value("all",translate("Default")) -ifm:value("all",translate("Default")) -ifl:value("all",translate("Default")) -ifa:value("all",translate("Default")) -for _, iface in ipairs(ifaces) do - if iface:is_up() then - ifd:value(iface:name(),"%s" % iface:name()) - ifi:value(iface:name(),"%s" % iface:name()) - ifp:value(iface:name(),"%s" % iface:name()) - ifm:value(iface:name(),"%s" % iface:name()) - ifl:value(iface:name(),"%s" % iface:name()) - ifa:value(iface:name(),"%s" % iface:name()) - end -end - -return m diff --git a/luci-app-omr-bypass/po/de/omr-bypass.po b/luci-app-omr-bypass/po/de/omr-bypass.po new file mode 100644 index 000000000..ae3c0f8dd --- /dev/null +++ b/luci-app-omr-bypass/po/de/omr-bypass.po @@ -0,0 +1,162 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-05 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Domain" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Domains" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "IP Adresse" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IPs und Netzwerke" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Schnittstelle" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +#, fuzzy +msgid "MAC-Address" +msgstr "Quell-MAC-Adresse" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Bemerkung" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR-Ausnahmeregel" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Ziel-Port" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Protokoll/Dienst" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Protokolle und Dienste" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "LAN-IP oder CIDR-Netzwerk der Quelleadresse" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "Port" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +#, fuzzy +msgid "protocol" +msgstr "Protokoll" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +#, fuzzy +msgid "source MAC-Address" +msgstr "Quell-MAC-Adresse" + +#~ msgid "MAC-Address" +#~ msgstr "MAC-Addresse" + +#~ msgid "ASN" +#~ msgstr "ASN" + +#~ msgid "ALL" +#~ msgstr "ALLE" + +#~ msgid "Bypass" +#~ msgstr "Ausnahmeregel" + +#~ msgid "Default" +#~ msgstr "Voreinstellung" + +#~ msgid "" +#~ "Here you can bypass ShadowSocks and VPN. If you set Interface to Default " +#~ "this use any working interface." +#~ msgstr "" +#~ "Her können Ausnahmen für ShadowSocks und VPN eingetragen werden. Wird als " +#~ "Schnittstelle 'Voreinstellung' gewählt, wird eine beliebige gerade " +#~ "funktionsfähige gewählt (Load Balancing)." diff --git a/luci-app-omr-bypass/po/de/omr-bypass.po~ b/luci-app-omr-bypass/po/de/omr-bypass.po~ new file mode 100644 index 000000000..188cfb056 --- /dev/null +++ b/luci-app-omr-bypass/po/de/omr-bypass.po~ @@ -0,0 +1,165 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-05 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Domain" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Domains" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "IP Adresse" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IPs und Netzwerke" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Schnittstelle" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +#, fuzzy +#| msgid "Source MAC-Address" +msgid "MAC-Address" +msgstr "Quell-MAC-Adresse" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Bemerkung" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR-Ausnahmeregel" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Ziel-Port" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Protokoll/Dienst" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Protokolle und Dienste" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "LAN-IP oder CIDR-Netzwerk der Quelleadresse" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "Port" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +#, fuzzy +#| msgid "Protocol" +msgid "protocol" +msgstr "Protokoll" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +#, fuzzy +#| msgid "Source MAC-Address" +msgid "source MAC-Address" +msgstr "Quell-MAC-Adresse" + +#~ msgid "MAC-Address" +#~ msgstr "MAC-Addresse" + +#~ msgid "ASN" +#~ msgstr "ASN" + +#~ msgid "ALL" +#~ msgstr "ALLE" + +#~ msgid "Bypass" +#~ msgstr "Ausnahmeregel" + +#~ msgid "Default" +#~ msgstr "Voreinstellung" + +#~ msgid "" +#~ "Here you can bypass ShadowSocks and VPN. If you set Interface to Default " +#~ "this use any working interface." +#~ msgstr "" +#~ "Her können Ausnahmen für ShadowSocks und VPN eingetragen werden. Wird als " +#~ "Schnittstelle 'Voreinstellung' gewählt, wird eine beliebige gerade " +#~ "funktionsfähige gewählt (Load Balancing)." diff --git a/luci-app-omr-bypass/po/fr/omr-bypass.po b/luci-app-omr-bypass/po/fr/omr-bypass.po index f28d2fd1d..0e9543bdf 100644 --- a/luci-app-omr-bypass/po/fr/omr-bypass.po +++ b/luci-app-omr-bypass/po/fr/omr-bypass.po @@ -2,73 +2,186 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Ycarus \n" -"Language-Team: \n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.1.1\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" -msgid "MAC-Address" -msgstr "Adresse MAC" - -msgid "Add" -msgstr "Ajouter" - -msgid "All" -msgstr "Tout" - -msgid "Bypass" -msgstr "Contourne" - -msgid "Default" -msgstr "Défaut" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 msgid "Domain" msgstr "Domaine" -msgid "Domain, IP or network" -msgstr "Domaine, IP ou réseau" - +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 msgid "Domains" msgstr "Domaines" -msgid "Domains, ips or networks" -msgstr "Domaines, IPs et réseaux" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "Activer" -msgid "" -"Here you can bypass ShadowSocks and VPN. If you set Interface to Default " -"this use any working interface." -msgstr "" -"Ici vous pouvez contouner Shadowsocks et le VPN. Si vous mettez l'interface " -"à défaut, ça utilisera n'importe qu'elle interface fonctionnant." +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "Accorder l'accès aux ressources ndpi" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 msgid "IP" -msgstr "" +msgstr "IP" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "Adresse IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 msgid "IPs and Networks" msgstr "IPs et réseaux" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 msgid "Interface" -msgstr "" +msgstr "Interface" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 msgid "MAC-Address" msgstr "Adresse MAC" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Note" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 msgid "OMR-Bypass" +msgstr "OMR-Bypass" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "L'IP d'OpenMPTCProuter doit être utilisée comme DNS." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Ports de destination" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "Ports source" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Protocole/Service" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Protocoles et services" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "Adresse IP source ou réseau" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." msgstr "" +"Lorsqu'aucune interface est sélectionnée, l'interface maître MPTCP est " +"utilisée (ou une autre interface si le maître est arrêté)." -msgid "Output interface" -msgstr "Interface de sortie" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "" +"Lorsqu'aucune interface est sélectionnée, l'interface maître MPTCP est " +"utilisée." -msgid "Protocol" -msgstr "Protocole" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "port" -msgid "Protocols" -msgstr "Protocoles" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "protocole" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "Adresse MAC source" + +#~ msgid "MAC-Address" +#~ msgstr "Adresse MAC" + +#~ msgid "ASN" +#~ msgstr "ASN" + +#~ msgid "ALL" +#~ msgstr "TOUT" + +#~ msgid "Bypass" +#~ msgstr "Contourne" + +#~ msgid "Default" +#~ msgstr "Défaut" + +#~ msgid "" +#~ "Here you can bypass ShadowSocks and VPN. If you set Interface to Default " +#~ "this use any working interface." +#~ msgstr "" +#~ "Ici vous pouvez contouner Shadowsocks et le VPN. Si vous mettez " +#~ "l'interface à défaut, ça utilisera n'importe qu'elle interface " +#~ "fonctionnant." + +#~ msgid "Add" +#~ msgstr "Ajouter" + +#~ msgid "All" +#~ msgstr "Tout" + +#~ msgid "Domain, IP or network" +#~ msgstr "Domaine, IP ou réseau" + +#~ msgid "Domains, ips or networks" +#~ msgstr "Domaines, IPs et réseaux" + +#~ msgid "Output interface" +#~ msgstr "Interface de sortie" + +#~ msgid "Protocols" +#~ msgstr "Protocoles" #~ msgid "" #~ "If empty, multipath master interface is used if up else any other up " diff --git a/luci-app-omr-bypass/po/it/omr-bypass.po b/luci-app-omr-bypass/po/it/omr-bypass.po new file mode 100644 index 000000000..203394eec --- /dev/null +++ b/luci-app-omr-bypass/po/it/omr-bypass.po @@ -0,0 +1,141 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2022-02-21 21:14+0000\n" +"Last-Translator: Deleted User \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.10.1\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Dominio" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Domini" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "Abilitato" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "Concedi l'accesso alle risorse ndpi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "Indirizzo IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IP e reti" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Interfaccia" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "Indirizzo MAC" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Nota" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR-Bypass" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "L'IP di OpenMPTCProuter deve essere utilizzato come DNS." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Destinazione dei porti" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "Origine delle porte" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Protocollo / servizio" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Protocolli e servizi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "Indirizzo IP lan di origine o rete" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +#, fuzzy +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" +"Quando non è selezionato nessuno, viene utilizzata l'interfaccia master " +"MPTCP." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "" +"Quando non è selezionato nessuno, viene utilizzata l'interfaccia master " +"MPTCP." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "Porta" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "Protocollo" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "indirizzo MAC di origine" diff --git a/luci-app-omr-bypass/po/it/omr-bypass.po~ b/luci-app-omr-bypass/po/it/omr-bypass.po~ new file mode 100644 index 000000000..c7e10446a --- /dev/null +++ b/luci-app-omr-bypass/po/it/omr-bypass.po~ @@ -0,0 +1,142 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-02 08:44+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Dominio" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Domini" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "Concedi l'accesso alle risorse ndpi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "Indirizzo IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IP e reti" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Interfaccia" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "Indirizzo MAC" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Nota" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR-Bypass" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "L'IP di OpenMPTCProuter deve essere utilizzato come DNS." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Destinazione dei porti" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "Origine delle porte" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Protocollo / servizio" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Protocolli e servizi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "Indirizzo IP lan di origine o rete" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +#, fuzzy +#| msgid "When none selected, MPTCP master interface is used." +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" +"Quando non è selezionato nessuno, viene utilizzata l'interfaccia master " +"MPTCP." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "" +"Quando non è selezionato nessuno, viene utilizzata l'interfaccia master " +"MPTCP." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "Porta" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "Protocollo" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "indirizzo MAC di origine" diff --git a/luci-app-omr-bypass/po/oc/omr-bypass.po b/luci-app-omr-bypass/po/oc/omr-bypass.po new file mode 100644 index 000000000..d2583d441 --- /dev/null +++ b/luci-app-omr-bypass/po/oc/omr-bypass.po @@ -0,0 +1,137 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-18 18:16+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Domeni" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Domenis" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "Acordar l'accès a las ressorsas ndpi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "Adreça IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IPs e rets" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Interfàcia" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "Adreça MAC" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Nòta" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR-Bypass" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "L'IP d'OpznMPTCProuter deu èsser coma lo DNS." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Pòrts de destinacion" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "Pòrts fonts" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Protocòl/Servici" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Protocòls e servicis" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "Adreça IP font o rer" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +#, fuzzy +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "Quand res es pas seleccionat, l'interfàcia MPTCP màger es utilizada." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "Quand res es pas seleccionat, l'interfàcia MPTCP màger es utilizada." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "pòrt" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "protocòl" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "Adreça MAC font" diff --git a/luci-app-omr-bypass/po/oc/omr-bypass.po~ b/luci-app-omr-bypass/po/oc/omr-bypass.po~ new file mode 100644 index 000000000..27f06969c --- /dev/null +++ b/luci-app-omr-bypass/po/oc/omr-bypass.po~ @@ -0,0 +1,138 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-18 18:16+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Domeni" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Domenis" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "Acordar l'accès a las ressorsas ndpi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "Adreça IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IPs e rets" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Interfàcia" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "Adreça MAC" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Nòta" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR-Bypass" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "L'IP d'OpznMPTCProuter deu èsser coma lo DNS." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Pòrts de destinacion" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "Pòrts fonts" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Protocòl/Servici" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Protocòls e servicis" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "Adreça IP font o rer" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +#, fuzzy +#| msgid "When none selected, MPTCP master interface is used." +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "Quand res es pas seleccionat, l'interfàcia MPTCP màger es utilizada." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "Quand res es pas seleccionat, l'interfàcia MPTCP màger es utilizada." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "pòrt" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "protocòl" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "Adreça MAC font" diff --git a/luci-app-omr-bypass/po/ru/omr-bypass.po b/luci-app-omr-bypass/po/ru/omr-bypass.po new file mode 100644 index 000000000..7b6f43c6f --- /dev/null +++ b/luci-app-omr-bypass/po/ru/omr-bypass.po @@ -0,0 +1,139 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "Домен" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "Домены" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "Установлено" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "Полный доступ к ресурсам ndpi" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "IP-адрес" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IP-адреса и сети" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "Интерфейс" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "MAC-адрес" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "Примечание" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "OMR байпас" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "IP OpenMPTCProuter должен использоваться в качестве DNS." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "Порты назначения" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "Порты источника" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "Протокол / Сервис" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "Протоколы и сервисы" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "Исходный IP-адрес LAN или сеть" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" +"Если ничего не выбрано, используется главный интерфейс MPTCP (или другой " +"интерфейс, если мастер не работает)." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "Если ничего не выбрано, используется главный интерфейс MPTCP." + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "Порт" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "протокол" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "MAC-адрес источника" diff --git a/luci-app-omr-bypass/po/templates/omr-bypass.pot b/luci-app-omr-bypass/po/templates/omr-bypass.pot index e441cf4a2..be4fd1dec 100644 --- a/luci-app-omr-bypass/po/templates/omr-bypass.pot +++ b/luci-app-omr-bypass/po/templates/omr-bypass.pot @@ -1,58 +1,127 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -msgid "MAC-Address" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "All" -msgstr "" - -msgid "Bypass" -msgstr "" - -msgid "Default" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" msgstr "" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 msgid "Domain" msgstr "" -msgid "Domain, IP or network" -msgstr "" - +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 msgid "Domains" msgstr "" -msgid "Domains, ips or networks" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" msgstr "" -msgid "" -"Here you can bypass ShadowSocks and VPN. If you set Interface to Default " -"this use any working interface." +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" msgstr "" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 msgid "IP" msgstr "" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 msgid "IPs and Networks" msgstr "" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 msgid "Interface" msgstr "" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 msgid "MAC-Address" msgstr "" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 msgid "OMR-Bypass" msgstr "" -msgid "Output interface" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." msgstr "" -msgid "Protocol" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" msgstr "" -msgid "Protocols" +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" msgstr "" diff --git a/luci-app-omr-bypass/po/zh_Hans/omr-bypass.po b/luci-app-omr-bypass/po/zh_Hans/omr-bypass.po new file mode 100644 index 000000000..66a55bb21 --- /dev/null +++ b/luci-app-omr-bypass/po/zh_Hans/omr-bypass.po @@ -0,0 +1,136 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-05 11:40+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:166 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:174 +msgid "ASN" +msgstr "ASN" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:34 +msgid "Domain" +msgstr "域" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:26 +msgid "Domains" +msgstr "域名" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:31 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:50 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:69 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:95 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:121 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:145 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:171 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:190 +msgid "Enabled" +msgstr "启用" + +#: luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json:3 +msgid "Grant access to ndpi resources" +msgstr "授予对ndpi资源的访问权限" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:53 +msgid "IP" +msgstr "IP" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:148 +msgid "IP Address" +msgstr "IP地址" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:45 +msgid "IPs and Networks" +msgstr "IP和网络" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "Interface" +msgstr "接口" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:116 +msgid "MAC-Address" +msgstr "MAC地址" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:42 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:61 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:87 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:113 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:137 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:163 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:182 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:226 +msgid "Note" +msgstr "请注意" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +#: luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json:3 +msgid "OMR-Bypass" +msgstr "绕过聚合路由" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:24 +msgid "OpenMPTCProuter IP must be used as DNS." +msgstr "OpenMPTCProuter IP必须作为DNS。" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:64 +msgid "Ports destination" +msgstr "目的端口" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:90 +msgid "Ports source" +msgstr "源端口" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:193 +msgid "Protocol/Service" +msgstr "协议/服务" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:185 +msgid "Protocols and services" +msgstr "协议和服务" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:140 +msgid "Source lan IP address or network" +msgstr "源局域网IP地址或网络" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:221 +msgid "" +"When none selected, MPTCP master interface is used (or an other interface if " +"master is down)." +msgstr "当未选中时,使用MPTCP主接口(如果主接口下线,则使用其他接口)。" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:37 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:56 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:82 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:108 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:132 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:158 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:177 +msgid "When none selected, MPTCP master interface is used." +msgstr "当不选中时,使用MPTCP主接口。" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:72 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:98 +msgid "port" +msgstr "端口" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:75 +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:101 +msgid "protocol" +msgstr "协议" + +#: luci-app-omr-bypass/htdocs/luci-static/resources/view/services/omr-bypass.js:124 +msgid "source MAC-Address" +msgstr "源MAC地址" diff --git a/luci-app-omr-bypass/root/etc/firewall.omr-bypass b/luci-app-omr-bypass/root/etc/firewall.omr-bypass deleted file mode 100644 index 7b231ae6a..000000000 --- a/luci-app-omr-bypass/root/etc/firewall.omr-bypass +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -/etc/init.d/omr-bypass reload diff --git a/luci-app-omr-bypass/root/etc/init.d/omr-bypass b/luci-app-omr-bypass/root/etc/init.d/omr-bypass deleted file mode 100755 index 0b36c7520..000000000 --- a/luci-app-omr-bypass/root/etc/init.d/omr-bypass +++ /dev/null @@ -1,403 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2018 Ycarus (Yannick Chabanois) - -START=99 -STOP=10 -USE_PROCD=1 - -. /usr/lib/unbound/iptools.sh - -_bypass_ip() { - local ip=$1 - local type=$2 - [ -z "$type" ] && type="all" - valid_ip4=$( valid_subnet4 $ip) - valid_ip6=$( valid_subnet6 $ip) - if [ "$valid_ip4" = "ok" ]; then - ipset -q add omr_dst_bypass_$type $ip - elif [ "$valid_ip6" = "ok" ]; then - ipset -q add omr6_dst_bypass_$type $ip - fi -} - -_bypass_domains() { - local domain - local intf - config_get domain $1 name - config_get intf $1 interface - _bypass_domain $domain $intf -} - -_bypass_domain() { - local domain=$1 - local intf=$2 - - [ -z "$intf" ] && intf="all" - if [ -n "$domain" ]; then - domain=$(echo $domain | sed 's:^\.::') - #logger -t "omr-bypass" "Get IPs of $domain..." - if [ -z $BOOT ]; then - resolve=$(dig a +timeout=3 +nocmd +noall +answer $domain | awk '{print $5}') - for ip in $resolve; do - _bypass_ip $ip $intf - done - resolve=$(dig aaaa +timeout=3 +nocmd +noall +answer $domain | awk '{print $5}') - for ip in $resolve; do - _bypass_ip $ip $intf - done - fi - uci -q add_list dhcp.@dnsmasq[0].ipset="/$domain/omr_dst_bypass_$intf,omr6_dst_bypass_$intf" - #logger -t "omr-bypass" "Get IPs of $domain... Done" - fi -} - -_bypass_mac() { - local mac - local intf - config_get mac $1 mac - config_get intf $1 interface - local intfid="$(uci -q get omr-bypass.$intf.id)" - - [ -z "$intf" ] && intf="all" - [ -z "$mac" ] && return - if [ "$intf" = "all" ]; then - iptables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass -m mac --mac-source $mac -j MARK --set-mark 0x539 - COMMIT - EOF - ip6tables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -m mac --mac-source $mac -j MARK --set-mark 0x6539 - COMMIT - EOF - else - iptables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass -m mac --mac-source $mac -j MARK --set-mark 0x539$intfid - COMMIT - EOF - ip6tables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -m mac --mac-source $mac -j MARK --set-mark 0x6539$intfid - COMMIT - EOF - fi -} - -_bypass_lan_ip() { - local ip - local intf - config_get ip $1 ip - config_get intf $1 interface - local intfid="$(uci -q get omr-bypass.$intf.id)" - - [ -z "$intf" ] && intf="all" - [ -z "$ip" ] && return - if [ "$intf" = "all" ]; then - iptables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass -s $ip -j MARK --set-mark 0x539 - COMMIT - EOF - ip6tables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -s $ip -j MARK --set-mark 0x6539 - COMMIT - EOF - else - iptables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass -s $ip -j MARK --set-mark 0x539$intfid - COMMIT - EOF - ip6tables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -s $ip -j MARK --set-mark 0x6539$intfid - COMMIT - EOF - fi -} - -_bypass_proto() { - local proto - local intf - config_get proto $1 proto - config_get intf $1 interface - local intfid="$(uci -q get omr-bypass.$intf.id)" - - [ -z "$intf" ] && intf="all" - [ -z "$proto" ] && return - if [ "$intf" = "all" ]; then - iptables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-dpi -m ndpi --proto $proto -j MARK --set-mark 0x539 - COMMIT - EOF - ip6tables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6-dpi -m ndpi --proto $proto -j MARK --set-mark 0x6539 - COMMIT - EOF - else - iptables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass-dpi -m ndpi --proto $proto -j MARK --set-mark 0x539$intfid - COMMIT - EOF - ip6tables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6-dpi -m ndpi --proto $proto -j MARK --set-mark 0x6539$intfid - COMMIT - EOF - fi - # Use dnsmasq ipset to bypass domains of the proto - local domains - domains="$(cat /proc/net/xt_ndpi/host_proto | grep $proto: | sed -e "s/$proto://" -e 's/*//' -e 's/,/ /g')" - if [ -n "$domains" ]; then - for domain in $domains; do - if [ -n "$domain" ] && [ "$(uci -q show omr-bypass | grep $domain)" = "" ]; then - _bypass_domain $domain $intf - fi - done - fi -} - -_intf_rule() { - local intf - config_get intf $1 ifname - [ -z "$intf" ] && intf=$(ifstatus "$1" | jsonfilter -q -e '@["l3_device"]') - #count=$((count+1)) - config_get count $1 metric - local mode - #config_get mode $1 multipath "off" - #[ "$mode" = "off" ] && return - [ -z "$count" ] && return - [ -z "$intf" ] && return - [ "$(echo $1 | grep _dev)" != "" ] && return - ipset -q flush omr_dst_bypass_$intf > /dev/null 2>&1 - ipset -q flush omr6_dst_bypass_$intf > /dev/null 2>&1 - ipset -q --exist restore <<-EOF - create omr_dst_bypass_$intf hash:net hashsize 64 - create omr6_dst_bypass_$intf hash:net family inet6 hashsize 64 - EOF - if [ "$(uci -q get openmptcprouter.settings.uci_rules)" = "1" ]; then - uci -q batch <<-EOF >/dev/null - delete network.${1}_fw_rule=rule - set network.${1}_fw_rule=rule - set network.${1}_fw_rule.priority=1 - set network.${1}_fw_rule.mark=0x539${count} - set network.${1}_fw_rule.lookup=${count} - delete network.${1}_fw_rule6=rule6 - set network.${1}_fw_rule6=rule6 - set network.${1}_fw_rule6.priority=1 - set network.${1}_fw_rule6.mark=0x6539${count} - set network.${1}_fw_rule6.lookup=${count} - commit network - EOF - else - ip rule add prio 1 fwmark 0x539$count lookup $count pref 1 > /dev/null 2>&1 - ip -6 rule add prio 1 fwmark 0x6539$count lookup 6$count > /dev/null 2>&1 - fi - if [ "$(iptables -w 40 -t mangle -L | grep omr_dst_bypass_$intf)" = "" ]; then - iptables-restore --wait=60 --noflush <<-EOF - *mangle - -I omr-bypass 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count - COMMIT - EOF - fi - if [ "$(iptables -w 40 -t nat -L | grep ss_rules_pre_src)" != "" ] && [ "$(iptables -w 40 -t nat -L | grep omr_dst_bypass_$intf)" = "" ]; then - iptables-restore --wait=60 --noflush <<-EOF - *nat - -I ss_rules_dst 1 -m set --match-set omr_dst_bypass_$intf dst -j RETURN - -I ss_rules_local_out 1 -m set --match-set omr_dst_bypass_$intf dst -j RETURN - -I ss_rules_local_out 2 -m mark --mark 0x539$count -j RETURN - -I ss_rules_pre_src 1 -m set --match-set omr_dst_bypass_$intf dst -j MARK --set-mark 0x539$count - -I ss_rules_pre_src 2 -m mark --mark 0x539$count -j RETURN - COMMIT - EOF - fi - if [ "$(ip6tables -w 40 -t mangle -L | grep omr6_dst_bypass_$intf)" = "" ]; then - ip6tables-restore --wait=60 --noflush <<-EOF - *mangle - -I omr-bypass6 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count - COMMIT - EOF - fi - if [ "$(ip6tables -w 40 -t nat -L | grep ss_rules6_pre_src)" != "" ] && [ "$(ip6tables -w 40 -t nat -L | grep omr6_dst_bypass_$intf)" = "" ]; then - ip6tables-restore --wait=60 --noflush <<-EOF - *nat - -I ss_rules6_dst 1 -m set --match-set omr6_dst_bypass_$intf dst -j RETURN - -I ss_rules6_local_out 1 -m set --match-set omr6_dst_bypass_$intf dst -j RETURN - -I ss_rules6_local_out 2 -m mark --mark 0x6539$count -j RETURN - -I ss_rules6_pre_src 1 -m set --match-set omr6_dst_bypass_$intf dst -j MARK --set-mark 0x6539$count - -I ss_rules6_pre_src 2 -m mark --mark 0x6539$count -j RETURN - COMMIT - EOF - fi - uci -q set omr-bypass.$intf=interface - uci -q set omr-bypass.$intf.id=$count -} - -_bypass_ip_set() { - local ip - local interface - config_get ip $1 ip - config_get interface $1 interface - _bypass_ip $ip $interface -} - -_bypass_asn() { - local asn - local interface - config_get asn $1 asn - config_get interface $1 interface - local asnips - asnips=`curl --max-time 4 -s -k https://stat.ripe.net/data/announced-prefixes/data.json?resource=${asn} | jsonfilter -q -e '@.data.prefixes.*.prefix'` - for ip in $asnips; do - _bypass_ip $ip $interface - done - -} - -_bypass_omr_server() { - local ip - config_get ip $1 ip - _bypass_ip $ip -} - -boot() { - BOOT=1 - start "$@" -} - -start_service() { - #local count - logger -t "omr-bypass" "Starting OMR-ByPass..." - ipset -q flush omr_dst_bypass_all > /dev/null 2>&1 - ipset -q flush omr6_dst_bypass_all > /dev/null 2>&1 - ipset -q --exist restore <<-EOF - create omr_dst_bypass_all hash:net hashsize 64 - create omr6_dst_bypass_all hash:net family inet6 hashsize 64 - EOF - - iptables-save --counters | grep -v omr-bypass | iptables-restore --counters - iptables-restore --wait=60 --noflush <<-EOF - *mangle - :omr-bypass - - -I PREROUTING 1 -m addrtype ! --dst-type LOCAL -j omr-bypass - COMMIT - EOF - ip6tables-save --counters | grep -v omr-bypass6 | ip6tables-restore --counters - ip6tables-restore --wait=60 --noflush <<-EOF - *mangle - :omr-bypass6 - - -I PREROUTING 1 -m addrtype ! --dst-type LOCAL -j omr-bypass6 - COMMIT - EOF - - - config_load network - config_foreach _intf_rule interface - - local ndpi_rules="" - config_load openmptcprouter - config_foreach _bypass_omr_server server - config_load omr-bypass - config_foreach _bypass_ip_set ips - config_foreach _bypass_mac macs - config_foreach _bypass_lan_ip lan_ip - config_foreach _bypass_asn asns - dnsmasqipset=$(uci -q get dhcp.@dnsmasq[0].ipset | sed 's/ /\n/g' | grep -v dst_bypass) - uci -q delete dhcp.@dnsmasq[0].ipset - if [ -n "$dnsmasqipset" ]; then - for dnsipset in $dnsmasqipset; do - uci -q add_list dhcp.@dnsmasq[0].ipset=$dnsipset - done - fi - config_foreach _bypass_domains domains - uci -q commit dhcp - - ip rule add prio 1 fwmark 0x539 lookup 991337 > /dev/null 2>&1 - ip -6 rule add prio 1 fwmark 0x6539 lookup 6991337 > /dev/null 2>&1 - - if [ "$(iptables -w 40 -t mangle -L | grep 'match-set omr_dst_bypass_all dst MARK set')" = "" ]; then - iptables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539 - COMMIT - EOF - fi - if [ "$(iptables -w 40 -t nat -L | grep ss_rules_pre_src)" != "" ] && [ "$(iptables -w 40 -t nat -L | grep omr_dst_bypass_all)" = "" ]; then - iptables-restore --wait=60 --noflush <<-EOF - *nat - -I ss_rules_dst 1 -m set --match-set omr_dst_bypass_all dst -j RETURN - -I ss_rules_local_out 1 -m set --match-set omr_dst_bypass_all dst -j RETURN - -I ss_rules_local_out 2 -m mark --mark 0x539 -j RETURN - -I ss_rules_pre_src 1 -m set --match-set omr_dst_bypass_all dst -j MARK --set-mark 0x539 - -I ss_rules_pre_src 2 -m mark --mark 0x539 -j RETURN - COMMIT - EOF - fi - if [ "$(ip6tables -w 40 -t mangle -L | grep 'match-set omr6_dst_bypass_all dst MARK set')" = "" ]; then - ip6tables-restore --wait=60 --noflush <<-EOF - *mangle - -A omr-bypass6 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539 - COMMIT - EOF - fi - if [ "$(ip6tables -w 40 -t nat -L | grep ss_rules6_pre_src)" != "" ] && [ "$(ip6tables -w 40 -t nat -L | grep omr6_dst_bypass_all)" = "" ]; then - ip6tables-restore --wait=60 --noflush <<-EOF - *nat - -I ss_rules6_dst 1 -m set --match-set omr6_dst_bypass_all dst -j RETURN - -I ss_rules6_local_out 1 -m set --match-set omr6_dst_bypass_all dst -j RETURN - -I ss_rules6_local_out 2 -m mark --mark 0x6539 -j RETURN - -I ss_rules6_pre_src 1 -m set --match-set omr6_dst_bypass_all dst -j MARK --set-mark 0x6539 - -I ss_rules6_pre_src 2 -m mark --mark 0x6539 -j RETURN - COMMIT - EOF - fi - - iptables-save --counters | grep -v omr-bypass-dpi | iptables-restore --counters - iptables-restore --wait=60 --noflush <<-EOF - *mangle - :omr-bypass-dpi - - -A PREROUTING -m addrtype ! --dst-type LOCAL -j omr-bypass-dpi - -A POSTROUTING -m addrtype --dst-type LOCAL -j omr-bypass-dpi - COMMIT - EOF - ip6tables-save --counters | grep -v omr-bypass6-dpi | ip6tables-restore --counters - ip6tables-restore --wait=60 --noflush <<-EOF - *mangle - :omr-bypass6-dpi - - -A PREROUTING -m addrtype ! --dst-type LOCAL -j omr-bypass6-dpi - -A POSTROUTING -m addrtype --dst-type LOCAL -j omr-bypass6-dpi - COMMIT - EOF - config_load omr-bypass - config_foreach _bypass_proto dpis - - /etc/init.d/dnsmasq reload - logger -t "omr-bypass" "OMR-ByPass is running" -} - -stop_service() { - iptables-save --counters | grep -v omr-bypass | iptables-restore --counters - iptables-save --counters | grep -v omr_dst | iptables-restore --counters - ip6tables-save --counters | grep -v omr-bypass6 | ip6tables-restore --counters - ip6tables-save --counters | grep -v omr6_dst | ip6tables-restore --counters - for setname in $(ipset -n list | grep "omr_"); do - ipset destroy "$setname" 2>/dev/null || true - done -} - -service_triggers() { - PROCD_RELOAD_DELAY=1000 - procd_add_reload_trigger omr-bypass - procd_add_raw_trigger "interface.*" 2000 /etc/init.d/omr-bypass restart -} - -reload_service() { - [ "$( ipset -n list | grep omr_ )" = "" ] && return 0 - start -} diff --git a/luci-app-omr-bypass/root/etc/uci-defaults/41_omr-bypass b/luci-app-omr-bypass/root/etc/uci-defaults/41_omr-bypass deleted file mode 100755 index 9ce007f85..000000000 --- a/luci-app-omr-bypass/root/etc/uci-defaults/41_omr-bypass +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh - -uci -q batch <<-EOF >/dev/null - delete ucitrack.@omr-bypass[-1] - add ucitrack omr-bypass - set ucitrack.@omr-bypass[-1].init=omr-bypass - commit ucitrack -EOF - -if [ -n "$(uci -q get omr-bypass.dpi)" ]; then - proto=$(uci -q get omr-bypass.dpi.proto) - [ -n "$proto" ] && { - for pro in $proto; do - uci -q batch <<-EOF >/dev/null - set omr-bypass.dpi[-1]=dpi - set omr-bypass.dpi[-1].proto=$pro - set omr-bypass.dpi[-1].interface=all - EOF - done - uci -q commit omr-bypass - } -fi - -if [ -n "$(uci -q get omr-bypass.ips)" ]; then - ips=$(uci -q get omr-bypass.ips.ip) - [ -n "$ips" ] && { - for ip in $ips; do - uci -q batch <<-EOF >/dev/null - set omr-bypass.ips[-1]=ips - set omr-bypass.ips[-1].ip=$ip - set omr-bypass.ips[-1].interface=all - EOF - done - uci -q commit omr-bypass - } -fi - -if [ -n "$(uci -q get dhcp.dnsmasq[0].ipset)" ]; then - domains="$(uci -q get dhcp.dnsmasq[0].ipset | sed -e 's:/::' -e 's:/ss_rules_dst_bypass_all::' -e 's:/: :g')" - [ -n "$domains" ] && { - for domain in $domains; do - uci -q batch <<-EOF >/dev/null - set omr-bypass.domains[-1]=domains - set omr-bypass.domains[-1].name=$domain - set omr-bypass.domains[-1].interface=all - EOF - done - uci -q commit omr-bypass - } -fi - -if [ "$(uci -q get ucitrack.@shadowsocks-libev[-1].affects | grep omr-bypass)" != "" ]; then - uci -q batch <<-EOF >/dev/null - del_list ucitrack.@shadowsocks-libev[-1].affects=omr-bypass - EOF -fi - -if [ "$(uci -q get firewall.omr-bypass)" = "" ]; then - uci -q batch <<-EOF >/dev/null - set firewall.omr-bypass=include - set firewall.omr-bypass.path=/etc/firewall.omr-bypass - set firewall.omr-bypass.reload=1 - commit firewall - EOF -fi - -rm -f /tmp/luci-indexcache -exit 0 diff --git a/luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json b/luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json new file mode 100644 index 000000000..24cc23af3 --- /dev/null +++ b/luci-app-omr-bypass/root/usr/share/luci/menu.d/luci-app-omr-bypass.json @@ -0,0 +1,13 @@ +{ + "admin/services/omr-bypass": { + "title": "OMR-Bypass", + "order": 60, + "action": { + "type": "view", + "path": "services/omr-bypass" + }, + "depends": { + "acl": [ "luci-app-omr-bypass" ] + } + } +} diff --git a/luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json b/luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json new file mode 100644 index 000000000..0c8727a42 --- /dev/null +++ b/luci-app-omr-bypass/root/usr/share/rpcd/acl.d/luci-app-omr-bypass.json @@ -0,0 +1,19 @@ +{ + "luci-app-omr-bypass": { + "description": "Grant access to ndpi resources", + "read": { + "file": { + "/proc/net/xt_ndpi/proto": [ "read" ], + "/proc/net/xt_ndpi/host_proto": [ "read" ], + "/usr/share/omr-bypass/omr-bypass-proto.lst": [ "read" ] + }, + "ubus": { + "luci-rpc": [ "getHostHints" ] + }, + "uci": [ "omr-bypass" ] + }, + "write": { + "uci": [ "omr-bypass" ] + } + } +} \ No newline at end of file diff --git a/luci-app-omr-dscp/Makefile b/luci-app-omr-dscp/Makefile index 253ddac12..b099678d6 100644 --- a/luci-app-omr-dscp/Makefile +++ b/luci-app-omr-dscp/Makefile @@ -6,10 +6,10 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Interface to DSCP -#LUCI_DEPENDS:= - +LUCI_DEPENDS:=+LINUX_5_4:omr-dscp +!LINUX_5_4:omr-dscp-nft PKG_LICENSE:=GPLv3 -include ../luci/luci.mk +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua b/luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua index a2c17c22b..56168adb4 100644 --- a/luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua +++ b/luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua @@ -22,10 +22,10 @@ t:value("cs0", translate("CS0 - Normal/Best Effort")) t:value("cs1", translate("CS1 - Low priority")) t:value("cs2", translate("CS2 - High priority")) t:value("cs3", translate("CS3 - SIP")) -t:value("cs4", translate("CS4 - Streaming video")) -t:value("cs5", translate("CS5")) +t:value("cs4", translate("CS4 - Real-Time Interactive")) +t:value("cs5", translate("CS5 - Broadcast video")) t:value("cs6", translate("CS6 - Network routing")) -t:value("cs7", translate("CS7")) +t:value("cs7", translate("CS7 - Latency sensitive")) t:value("ef", translate("EF Voice")) c = s:option(Value, "comment", translate("Comment")) diff --git a/luci-app-omr-dscp/luasrc/model/cbi/dscp.lua b/luci-app-omr-dscp/luasrc/model/cbi/dscp.lua index 759c43909..767ed3f9a 100644 --- a/luci-app-omr-dscp/luasrc/model/cbi/dscp.lua +++ b/luci-app-omr-dscp/luasrc/model/cbi/dscp.lua @@ -1,4 +1,5 @@ -- Copyright 2008 Steven Barth +-- Copyright 2019 Ycarus (Yannick Chabanois) for OpenMPTCProuter -- Licensed to the public under the Apache License 2.0. local uci = luci.model.uci.cursor() @@ -73,10 +74,10 @@ t = s:option(ListValue, "class", translate("Class")) t:value("cs1", translate("CS1 - Low priority")) t:value("cs2", translate("CS2 - High priority")) t:value("cs3", translate("CS3 - SIP")) - t:value("cs4", translate("CS4 - Streaming video")) - t:value("cs5", translate("CS5")) + t:value("cs4", translate("CS4 - Real-Time Interactive")) + t:value("cs5", translate("CS5 - Broadcast Video")) t:value("cs6", translate("CS6 - Network routing")) - t:value("cs7", translate("CS7")) + t:value("cs7", translate("CS7 - Latency sensitive")) t:value("ef", translate("EF - Voice")) comment = s:option(Value, "comment", translate("Comment")) diff --git a/luci-app-omr-dscp/po/de/omr-dscp.po b/luci-app-omr-dscp/po/de/omr-dscp.po new file mode 100644 index 000000000..be6e36aa2 --- /dev/null +++ b/luci-app-omr-dscp/po/de/omr-dscp.po @@ -0,0 +1,175 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - normal/best effort" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS1 - Low priority" +msgstr "CS - Niedrige Priorität" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS2 - High priority" +msgstr "CS2 - Hohe Priorität" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS3 - SIP" +msgstr "CS3 - SIP/VoIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +msgid "CS5 - Broadcast video" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS6 - Network routing" +msgstr "CS6 - Netzwerk-Transportschicht" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "Class" +msgstr "Klasse" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 +msgid "Classification Rules" +msgstr "Klassifizierungs-Regeln" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 +msgid "Comment" +msgstr "Kommentar" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP-Domains" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP pro Domain" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 +msgid "Destination host" +msgstr "Ziel-Hostsystem" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 +msgid "Destination ports" +msgstr "Ziel-Port" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "Differentiated services" +msgstr "Differenzierte Dienste" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 +msgid "Direction" +msgstr "Richtung" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Domain" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domains" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 +msgid "EF - Voice" +msgstr "EF - Sprachübertragung" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF Sprachübertragung" + +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 +msgid "Protocol" +msgstr "Protokoll" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "DSCP domainspezifizisch einstellen" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 +msgid "Source host" +msgstr "Quell-Hostsystem" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 +msgid "Source ports" +msgstr "Quell-Ports" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Nutzdaten können nach verschiedenen Kriterien klassifiziert werden. Z.B. " +"nach Quell- oder Zieladresse, nach Daten-Typ oder speziell zugeordneter " +"Verkehrsklasse." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 +msgid "all" +msgstr "alle" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 +msgid "both" +msgstr "beide" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "download" +msgstr "Downstream" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "upload" +msgstr "Upstream" + +#~ msgid "CS4 - Streaming video" +#~ msgstr "CS4 - Video-Streaming" + +#~ msgid "CS5" +#~ msgstr "CS5" + +#~ msgid "CS7" +#~ msgstr "CS7" diff --git a/luci-app-omr-dscp/po/de/omr-dscp.po~ b/luci-app-omr-dscp/po/de/omr-dscp.po~ new file mode 100644 index 000000000..9efa17a88 --- /dev/null +++ b/luci-app-omr-dscp/po/de/omr-dscp.po~ @@ -0,0 +1,158 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - normal/best effort" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS1 - Low priority" +msgstr "CS - Niedrige Priorität" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS2 - High priority" +msgstr "CS2 - Hohe Priorität" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS3 - SIP" +msgstr "CS3 - SIP/VoIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS4 - Streaming video" +msgstr "CS4 - Video-Streaming" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS5" +msgstr "CS5" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS6 - Network routing" +msgstr "CS6 - Netzwerk-Transportschicht" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS7" +msgstr "CS7" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +msgid "Class" +msgstr "Klasse" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +msgid "Classification Rules" +msgstr "Klassifizierungs-Regeln" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +msgid "Comment" +msgstr "Kommentar" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP-Domains" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP pro Domain" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +msgid "Destination host" +msgstr "Ziel-Hostsystem" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +msgid "Destination ports" +msgstr "Ziel-Port" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +msgid "Differentiated services" +msgstr "Differenzierte Dienste" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +msgid "Direction" +msgstr "Richtung" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Domain" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domains" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "EF - Voice" +msgstr "EF - Sprachübertragung" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF Sprachübertragung" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +msgid "Protocol" +msgstr "Protokoll" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "DSCP domainspezifizisch einstellen" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +msgid "Source host" +msgstr "Quell-Hostsystem" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +msgid "Source ports" +msgstr "Quell-Ports" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Nutzdaten können nach verschiedenen Kriterien klassifiziert werden. Z.B. " +"nach Quell- oder Zieladresse, nach Daten-Typ oder speziell zugeordneter " +"Verkehrsklasse." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +msgid "all" +msgstr "alle" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "both" +msgstr "beide" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "download" +msgstr "Downstream" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +msgid "upload" +msgstr "Upstream" diff --git a/luci-app-omr-dscp/po/fr/omr-dscp.po b/luci-app-omr-dscp/po/fr/omr-dscp.po new file mode 100644 index 000000000..a7389d8f3 --- /dev/null +++ b/luci-app-omr-dscp/po/fr/omr-dscp.po @@ -0,0 +1,178 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - Effort normal / optimal" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS1 - Low priority" +msgstr "CS1 - Faible priorité" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS2 - High priority" +msgstr "CS2 - Haute priorité" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "CS4 - Temps réel interactif" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "CS5 - Diffusion vidéo" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +msgid "CS5 - Broadcast video" +msgstr "CS5 - Diffusion vidéo" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS6 - Network routing" +msgstr "CS6 - Routage réseau" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" +msgstr "CS7 - Sensible à la latence" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "Class" +msgstr "Classe" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 +msgid "Classification Rules" +msgstr "Règles de classification" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 +msgid "Comment" +msgstr "Commentaire" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP Domaines" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP par domaine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 +msgid "Destination host" +msgstr "Hôte de destination" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 +msgid "Destination ports" +msgstr "Ports de destination" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "Differentiated services" +msgstr "Services différenciés" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 +msgid "Direction" +msgstr "Direction" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Domaine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domaines" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 +msgid "EF - Voice" +msgstr "EF - Voix" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF - Voix" + +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "Permettre l'accès pour luci-app-dscp" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 +msgid "Protocol" +msgstr "Protocole" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "Configurer DSCP par domaine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 +msgid "Source host" +msgstr "Hôte source" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 +msgid "Source ports" +msgstr "Ports source" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Le trafic peut être classé selon de nombreux paramètres différents, tels que " +"l'adresse source, l'adresse de destination ou le type de trafic et attribué " +"à une classe de trafic spécifique." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 +msgid "all" +msgstr "Tous" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 +msgid "both" +msgstr "Les deux" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "download" +msgstr "Téléchargement" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "upload" +msgstr "Envoie" + +#~ msgid "CS4 - Streaming video" +#~ msgstr "CS4 - Vidéo en streaming" + +#~ msgid "CS5" +#~ msgstr "CS5" + +#~ msgid "CS7" +#~ msgstr "CS7" diff --git a/luci-app-omr-dscp/po/fr/omr-dscp.po~ b/luci-app-omr-dscp/po/fr/omr-dscp.po~ new file mode 100644 index 000000000..96fc1bf68 --- /dev/null +++ b/luci-app-omr-dscp/po/fr/omr-dscp.po~ @@ -0,0 +1,161 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2021-03-31 15:07+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - Effort normal / optimal" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS1 - Low priority" +msgstr "CS1 - Faible priorité" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS2 - High priority" +msgstr "CS2 - Haute priorité" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS4 - Streaming video" +msgstr "CS4 - Vidéo en streaming" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS5" +msgstr "CS5" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS6 - Network routing" +msgstr "CS6 - Routage réseau" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS7" +msgstr "CS7" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +msgid "Class" +msgstr "Classe" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +msgid "Classification Rules" +msgstr "Règles de classification" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +msgid "Comment" +msgstr "Commentaire" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP Domaines" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP par domaine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +msgid "Destination host" +msgstr "Hôte de destination" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +msgid "Destination ports" +msgstr "Ports de destination" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +msgid "Differentiated services" +msgstr "Services différenciés" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +msgid "Direction" +msgstr "Direction" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Domaine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domaines" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "EF - Voice" +msgstr "EF - Voix" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF - Voix" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +msgid "Protocol" +msgstr "Protocole" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "Configurer DSCP par domaine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +msgid "Source host" +msgstr "Hôte source" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +msgid "Source ports" +msgstr "Ports source" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Le trafic peut être classé selon de nombreux paramètres différents, tels que " +"l'adresse source, l'adresse de destination ou le type de trafic et attribué " +"à une classe de trafic spécifique." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +msgid "all" +msgstr "Tous" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "both" +msgstr "Les deux" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "download" +msgstr "Téléchargement" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +msgid "upload" +msgstr "Envoie" diff --git a/luci-app-omr-dscp/po/it/omr-dscp.po b/luci-app-omr-dscp/po/it/omr-dscp.po new file mode 100644 index 000000000..2ea86eaf8 --- /dev/null +++ b/luci-app-omr-dscp/po/it/omr-dscp.po @@ -0,0 +1,172 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2022-02-21 21:14+0000\n" +"Last-Translator: Deleted User \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.10.1\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - Normale / Miglior sforzo" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS1 - Low priority" +msgstr "CS1 - Priorità bassa" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS2 - High priority" +msgstr "CS2 - Alta priorità" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +msgid "CS5 - Broadcast video" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS6 - Network routing" +msgstr "CS6 - Routing di rete" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "Class" +msgstr "Classe" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 +msgid "Classification Rules" +msgstr "Regole di classificazione" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 +msgid "Comment" +msgstr "Commenti" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "Domini DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP per dominio" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 +msgid "Destination host" +msgstr "Host di destinazione" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 +msgid "Destination ports" +msgstr "Porte di destinazione" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "Differentiated services" +msgstr "Servizi differenziati" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 +msgid "Direction" +msgstr "Direzione" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Dominio" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domini" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 +msgid "EF - Voice" +msgstr "EF - Voce" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF - Voce" + +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 +msgid "OMR-DSCP" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 +msgid "Protocol" +msgstr "Protocollo" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "Imposta DSCP per domini." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 +msgid "Source host" +msgstr "Host di origine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 +msgid "Source ports" +msgstr "Porte di origine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Il traffico può essere classificato in base a molti parametri diversi, come " +"indirizzo di origine, indirizzo di destinazione o tipo di traffico e " +"assegnato a una classe di traffico specifica." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 +msgid "all" +msgstr "tutti" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 +msgid "both" +msgstr "entrambi" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "download" +msgstr "Scarica" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "upload" +msgstr "Carica" + +#~ msgid "CS4 - Streaming video" +#~ msgstr "CS4 - Streaming video" + +#~ msgid "CS5" +#~ msgstr "CS5" diff --git a/luci-app-omr-dscp/po/it/omr-dscp.po~ b/luci-app-omr-dscp/po/it/omr-dscp.po~ new file mode 100644 index 000000000..f6a098de2 --- /dev/null +++ b/luci-app-omr-dscp/po/it/omr-dscp.po~ @@ -0,0 +1,158 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-09-21 12:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - Normale / Miglior sforzo" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS1 - Low priority" +msgstr "CS1 - Priorità bassa" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS2 - High priority" +msgstr "CS2 - Alta priorità" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS4 - Streaming video" +msgstr "CS4 - Streaming video" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS5" +msgstr "CS5" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS6 - Network routing" +msgstr "CS6 - Routing di rete" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS7" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +msgid "Class" +msgstr "Classe" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +msgid "Classification Rules" +msgstr "Regole di classificazione" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +msgid "Comment" +msgstr "Commenti" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "Domini DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP per dominio" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +msgid "Destination host" +msgstr "Host di destinazione" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +msgid "Destination ports" +msgstr "Porte di destinazione" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +msgid "Differentiated services" +msgstr "Servizi differenziati" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +msgid "Direction" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Dominio" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domini" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "EF - Voice" +msgstr "EF - Voce" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF - Voce" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +msgid "OMR-DSCP" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +msgid "Protocol" +msgstr "Protocollo" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "Imposta DSCP per domini." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +msgid "Source host" +msgstr "Host di origine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +msgid "Source ports" +msgstr "Porte di origine" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Il traffico può essere classificato in base a molti parametri diversi, come " +"indirizzo di origine, indirizzo di destinazione o tipo di traffico e " +"assegnato a una classe di traffico specifica." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +msgid "all" +msgstr "tutti" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "both" +msgstr "entrambi" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "download" +msgstr "Scarica" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +msgid "upload" +msgstr "Carica" diff --git a/luci-app-omr-dscp/po/oc/omr-dscp.po b/luci-app-omr-dscp/po/oc/omr-dscp.po new file mode 100644 index 000000000..c585dd98a --- /dev/null +++ b/luci-app-omr-dscp/po/oc/omr-dscp.po @@ -0,0 +1,175 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-31 17:15+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - Esfòrç normal / optimal" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS1 - Low priority" +msgstr "CS1 - Prioritat febla" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS2 - High priority" +msgstr "CS2 - Prioritat nauta" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +msgid "CS5 - Broadcast video" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS6 - Network routing" +msgstr "CS6 - Partiment ret" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "Class" +msgstr "Classa" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 +msgid "Classification Rules" +msgstr "Règlas de classificacion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 +msgid "Comment" +msgstr "Comentari" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP Domenis" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP per domeni" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 +msgid "Destination host" +msgstr "Òste de destinacion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 +msgid "Destination ports" +msgstr "Pòrts de destinacion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "Differentiated services" +msgstr "Servicis diferenciats" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 +msgid "Direction" +msgstr "Direccion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Domeni" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domenis" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 +msgid "EF - Voice" +msgstr "EF - Votz" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF - Votz" + +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 +msgid "Protocol" +msgstr "Protocòl" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "Configurar DSCP per domeni." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 +msgid "Source host" +msgstr "Òste font" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 +msgid "Source ports" +msgstr "Pòrts fonts" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Lo trafic pòt èsser classat segon mantuns paramètres diferents, coma " +"l’adreça font, l’adreça de destinacion o lo tipe de trafic e atribuit a una " +"classa de trafic especifica." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 +msgid "all" +msgstr "totes" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 +msgid "both" +msgstr "Los dos" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "download" +msgstr "Telecargament" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "upload" +msgstr "Mandadís" + +#~ msgid "CS4 - Streaming video" +#~ msgstr "CS4 - Difusion vidèo" + +#~ msgid "CS5" +#~ msgstr "CS5" + +#~ msgid "CS7" +#~ msgstr "CS7" diff --git a/luci-app-omr-dscp/po/oc/omr-dscp.po~ b/luci-app-omr-dscp/po/oc/omr-dscp.po~ new file mode 100644 index 000000000..ed3a33083 --- /dev/null +++ b/luci-app-omr-dscp/po/oc/omr-dscp.po~ @@ -0,0 +1,158 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-31 17:15+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - Esfòrç normal / optimal" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS1 - Low priority" +msgstr "CS1 - Prioritat febla" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS2 - High priority" +msgstr "CS2 - Prioritat nauta" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS4 - Streaming video" +msgstr "CS4 - Difusion vidèo" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS5" +msgstr "CS5" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS6 - Network routing" +msgstr "CS6 - Partiment ret" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS7" +msgstr "CS7" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +msgid "Class" +msgstr "Classa" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +msgid "Classification Rules" +msgstr "Règlas de classificacion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +msgid "Comment" +msgstr "Comentari" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP Domenis" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP per domeni" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +msgid "Destination host" +msgstr "Òste de destinacion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +msgid "Destination ports" +msgstr "Pòrts de destinacion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +msgid "Differentiated services" +msgstr "Servicis diferenciats" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +msgid "Direction" +msgstr "Direccion" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "Domeni" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "Domenis" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "EF - Voice" +msgstr "EF - Votz" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF - Votz" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +msgid "Protocol" +msgstr "Protocòl" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "Configurar DSCP per domeni." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +msgid "Source host" +msgstr "Òste font" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +msgid "Source ports" +msgstr "Pòrts fonts" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"Lo trafic pòt èsser classat segon mantuns paramètres diferents, coma " +"l’adreça font, l’adreça de destinacion o lo tipe de trafic e atribuit a una " +"classa de trafic especifica." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +msgid "all" +msgstr "totes" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "both" +msgstr "Los dos" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "download" +msgstr "Telecargament" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +msgid "upload" +msgstr "Mandadís" diff --git a/luci-app-omr-dscp/po/templates/omr-dscp.pot b/luci-app-omr-dscp/po/templates/omr-dscp.pot new file mode 100644 index 000000000..cc022398e --- /dev/null +++ b/luci-app-omr-dscp/po/templates/omr-dscp.pot @@ -0,0 +1,154 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS0 - Normal/Best Effort" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS1 - Low priority" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS2 - High priority" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS3 - SIP" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +msgid "CS5 - Broadcast video" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS6 - Network routing" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "Class" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 +msgid "Classification Rules" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 +msgid "Comment" +msgstr "" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 +msgid "Destination host" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 +msgid "Destination ports" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "Differentiated services" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 +msgid "Direction" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 +msgid "EF - Voice" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "" + +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 +msgid "OMR-DSCP" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 +msgid "Protocol" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 +msgid "Source host" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 +msgid "Source ports" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 +msgid "all" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 +msgid "both" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "download" +msgstr "" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "upload" +msgstr "" diff --git a/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po b/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po new file mode 100644 index 000000000..cecea8c87 --- /dev/null +++ b/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po @@ -0,0 +1,174 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - 正常/尽量" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS1 - Low priority" +msgstr "CS1 - 低优先级" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS2 - High priority" +msgstr "CS2 - 高优先级" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS4 - Real-Time Interactive" +msgstr "CS4 - 实时交互" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS5 - Broadcast Video" +msgstr "CS5 - 视频广播" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +msgid "CS5 - Broadcast video" +msgstr "CS5 - 视频广播" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS6 - Network routing" +msgstr "CS6-网络路由" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "CS7 - Latency sensitive" +msgstr "CS7 - 时延敏感" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "Class" +msgstr "类" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:16 +msgid "Classification Rules" +msgstr "分类规则" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:83 +msgid "Comment" +msgstr "注释" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP域" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP按域名" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:58 +msgid "Destination host" +msgstr "目标主机" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:64 +msgid "Destination ports" +msgstr "目的端口" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "Differentiated services" +msgstr "差异化服务" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:29 +msgid "Direction" +msgstr "目的" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "域" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "域名" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:81 +msgid "EF - Voice" +msgstr "EF-语音" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF 语音" + +#: luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json:3 +msgid "Grant UCI access for luci-app-dscp" +msgstr "授予luci-app-dscp UCI访问权限" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +#: luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json:3 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:36 +msgid "Protocol" +msgstr "协议" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "按域设置DSCP." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:47 +msgid "Source host" +msgstr "源主机" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:52 +msgid "Source ports" +msgstr "源端口" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:12 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"可以通过许多不同的参数(例如源地址,目标地址或流量类型)对流量进行分类,并将" +"其分配给特定的流量类别." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:49 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:54 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:60 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:66 +msgid "all" +msgstr "所有" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:34 +msgid "both" +msgstr "都" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "download" +msgstr "下载" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "upload" +msgstr "上传" + +#~ msgid "CS4 - Streaming video" +#~ msgstr "CS4 - 视频流" + +#~ msgid "CS5" +#~ msgstr "CS5" + +#~ msgid "CS7" +#~ msgstr "CS7" diff --git a/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po~ b/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po~ new file mode 100644 index 000000000..0a2da9832 --- /dev/null +++ b/luci-app-omr-dscp/po/zh_Hans/omr-dscp.po~ @@ -0,0 +1,157 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-06-11 16:36+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:21 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:72 +msgid "CS0 - Normal/Best Effort" +msgstr "CS0 - 正常/尽量" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:22 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:73 +msgid "CS1 - Low priority" +msgstr "CS1 - 低优先级" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:23 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:74 +msgid "CS2 - High priority" +msgstr "CS2 - 高优先级" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:24 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:75 +msgid "CS3 - SIP" +msgstr "CS3 - SIP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:25 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:76 +msgid "CS4 - Streaming video" +msgstr "CS4 - 视频流" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:26 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:77 +msgid "CS5" +msgstr "CS5" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:27 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:78 +msgid "CS6 - Network routing" +msgstr "CS6-网络路由" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:28 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:79 +msgid "CS7" +msgstr "CS7" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:20 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:71 +msgid "Class" +msgstr "类" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:15 +msgid "Classification Rules" +msgstr "分类规则" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:31 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:82 +msgid "Comment" +msgstr "注释" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:6 +msgid "DSCP" +msgstr "DSCP" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:7 +msgid "DSCP Domains" +msgstr "DSCP域" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "DSCP by domain" +msgstr "DSCP按域名" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:57 +msgid "Destination host" +msgstr "目标主机" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:63 +msgid "Destination ports" +msgstr "目的端口" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:10 +msgid "Differentiated services" +msgstr "差异化服务" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:28 +msgid "Direction" +msgstr "目的" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:15 +msgid "Domain" +msgstr "域名" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:10 +msgid "Domains" +msgstr "域" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:80 +msgid "EF - Voice" +msgstr "EF-语音" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:29 +msgid "EF Voice" +msgstr "EF 语音" + +#: luci-app-omr-dscp/luasrc/controller/omr-dscp.lua:4 +msgid "OMR-DSCP" +msgstr "OMR-DSCP" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:35 +msgid "Protocol" +msgstr "协议" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp-domains.lua:8 +msgid "Set DSCP by domains." +msgstr "按域设置DSCP." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:46 +msgid "Source host" +msgstr "源主机" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:51 +msgid "Source ports" +msgstr "源端口" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:11 +msgid "" +"Traffic may be classified by many different parameters, such as source " +"address, destination address or traffic type and assigned to a specific " +"traffic class." +msgstr "" +"可以通过许多不同的参数(例如源地址,目标地址或流量类型)对流量进行分类,并将" +"其分配给特定的流量类别." + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:48 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:53 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:59 +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:65 +msgid "all" +msgstr "所有" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:33 +msgid "both" +msgstr "都" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:32 +msgid "download" +msgstr "下载" + +#: luci-app-omr-dscp/luasrc/model/cbi/dscp.lua:31 +msgid "upload" +msgstr "上传" diff --git a/luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json b/luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json new file mode 100644 index 000000000..bd3fe3960 --- /dev/null +++ b/luci-app-omr-dscp/root/usr/share/luci/menu.d/luci-app-omr-dscp.json @@ -0,0 +1,13 @@ +{ + "admin/network/omr-dscp": { + "title": "OMR-DSCP", + "order": 80, + "action": { + "type": "cbi", + "path": "dscp" + }, + "depends": { + "acl": [ "luci-app-omr-dscp" ] + } + } +} diff --git a/luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json b/luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json new file mode 100644 index 000000000..ec318e6ee --- /dev/null +++ b/luci-app-omr-dscp/root/usr/share/rpcd/acl.d/luci-app-omr-dscp.json @@ -0,0 +1,11 @@ +{ + "luci-app-omr-dscp": { + "description": "Grant UCI access for luci-app-dscp", + "read": { + "uci": [ "dscp" ] + }, + "write": { + "uci": [ "dscp" ] + } + } +} \ No newline at end of file diff --git a/luci-app-omr-quota/Makefile b/luci-app-omr-quota/Makefile index a3af82c4e..a4b20e8b0 100644 --- a/luci-app-omr-quota/Makefile +++ b/luci-app-omr-quota/Makefile @@ -9,6 +9,7 @@ LUCI_DEPENDS:=+omr-quota PKG_LICENSE:=GPLv3 -include ../luci/luci.mk +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm b/luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm index 9ee30d310..97ee647d2 100644 --- a/luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm +++ b/luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm @@ -2,7 +2,7 @@ <% if self.invalid_cts then -%>
<% end %> diff --git a/luci-app-omr-quota/po/de/omr-quota.po b/luci-app-omr-quota/po/de/omr-quota.po new file mode 100644 index 000000000..842f61f5e --- /dev/null +++ b/luci-app-omr-quota/po/de/omr-quota.po @@ -0,0 +1,62 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-05 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Hinzufügen" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Aktivieren" + +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Anschlüsse" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Abstand zwischen den Überfprüfungen (in Sekunden)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Ungültig" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Monatliches Maximalvolumen" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 +msgid "Quota" +msgstr "Quota" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "Empfangsvolumen-Grenze (in kBytes)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Das monatliche maximale Übertragungsvolumen bei dessen Erreichen der " +"Anschluss nicht weiter genutzt wird." + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "Sendevolumen-Grenze (in kBytes)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "Gesamtvolumen-Grenze (Rx+Tx in kBytes)" diff --git a/luci-app-omr-quota/po/de/omr-quota.po~ b/luci-app-omr-quota/po/de/omr-quota.po~ new file mode 100644 index 000000000..0c553322d --- /dev/null +++ b/luci-app-omr-quota/po/de/omr-quota.po~ @@ -0,0 +1,57 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-05 12:39+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Hinzufügen" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Aktivieren" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Anschlüsse" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Abstand zwischen den Überfprüfungen (in Sekunden)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Ungültig" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Monatliches Maximalvolumen" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +msgid "Quota" +msgstr "Quota" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "Empfangsvolumen-Grenze (in kBytes)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Das monatliche maximale Übertragungsvolumen bei dessen Erreichen der " +"Anschluss nicht weiter genutzt wird." + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "Sendevolumen-Grenze (in kBytes)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "Gesamtvolumen-Grenze (Rx+Tx in kBytes)" diff --git a/luci-app-omr-quota/po/fr/omr-quota.po b/luci-app-omr-quota/po/fr/omr-quota.po index 0d8590ea5..e67782587 100644 --- a/luci-app-omr-quota/po/fr/omr-quota.po +++ b/luci-app-omr-quota/po/fr/omr-quota.po @@ -1,43 +1,69 @@ msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" -"Last-Translator: Ycarus \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" "Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 msgid "Add" msgstr "Ajouter" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 msgid "Enable" -msgstr "Activé" +msgstr "Activer" +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "Permettre l'accès à luci-app-omr-quota" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 msgid "Interfaces" msgstr "Interfaces" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 msgid "Interval between check (s)" msgstr "Intervalle entre les essais (s)" +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 msgid "Invalid" msgstr "Invalide" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Quota mensuel" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 msgid "Quota" -msgstr "" +msgstr "Quota" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 msgid "RX quota (kbit)" +msgstr "Quota de réception (RX en kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" msgstr "" +"Configurer le quota mensuel, quand le quota est atteint l'interface est " +"désactivée" -msgid "Set quota, when quota is reached interface state is set to down" -msgstr "Configurer le quota, quand le quota est atteint l'interface est désactivée" - +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 msgid "TX quota (kbit)" -msgstr "" +msgstr "Quota de transmission (TX en kbit)" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 msgid "TX+RX quota (kbit)" -msgstr "" +msgstr "Quota de transmission+réception (TX+RX en kbit)" + +#~ msgid "Set quota, when quota is reached interface state is set to down" +#~ msgstr "" +#~ "Configurer le quota, quand le quota est atteint l'interface est désactivée" diff --git a/luci-app-omr-quota/po/fr/omr-quota.po~ b/luci-app-omr-quota/po/fr/omr-quota.po~ new file mode 100644 index 000000000..d61b27717 --- /dev/null +++ b/luci-app-omr-quota/po/fr/omr-quota.po~ @@ -0,0 +1,64 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Ajouter" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Activer" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Interfaces" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Intervalle entre les essais (s)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Invalide" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Quota mensuel" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +msgid "Quota" +msgstr "Quota" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "Quota de réception (RX en kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Configurer le quota mensuel, quand le quota est atteint l'interface est " +"désactivée" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "Quota de transmission (TX en kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "Quota de transmission+réception (TX+RX en kbit)" + +#~ msgid "Set quota, when quota is reached interface state is set to down" +#~ msgstr "" +#~ "Configurer le quota, quand le quota est atteint l'interface est désactivée" diff --git a/luci-app-omr-quota/po/it/omr-quota.po b/luci-app-omr-quota/po/it/omr-quota.po new file mode 100644 index 000000000..be100e360 --- /dev/null +++ b/luci-app-omr-quota/po/it/omr-quota.po @@ -0,0 +1,62 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2022-02-20 20:24+0000\n" +"Last-Translator: tiziano \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.10.1\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Aggiungi" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Attivare" + +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Interfacce" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Intervallo tra i controlli (s)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Non valido" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Quota mensile" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 +msgid "Quota" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Imposta la quota mensile, quando viene raggiunta la quota, lo stato " +"dell'interfaccia è impostato su inattivo" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "" diff --git a/luci-app-omr-quota/po/it/omr-quota.po~ b/luci-app-omr-quota/po/it/omr-quota.po~ new file mode 100644 index 000000000..41412af9e --- /dev/null +++ b/luci-app-omr-quota/po/it/omr-quota.po~ @@ -0,0 +1,57 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-09-21 12:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Aggiungi" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Attivare" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Interfaccia" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Intervallo tra i controlli (s)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Non valido" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Quota mensile" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +msgid "Quota" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Imposta la quota mensile, quando viene raggiunta la quota, lo stato " +"dell'interfaccia è impostato su inattivo" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "" diff --git a/luci-app-omr-quota/po/oc/omr-quota.po b/luci-app-omr-quota/po/oc/omr-quota.po new file mode 100644 index 000000000..dc0cc96e4 --- /dev/null +++ b/luci-app-omr-quota/po/oc/omr-quota.po @@ -0,0 +1,61 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-21 20:21+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Ajustar" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Activat" + +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Interfàcias" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Interval entre las verificacions (s)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Invalid" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Quòta mesadièra" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 +msgid "Quota" +msgstr "Quòta" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "RX quòta (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Definir la quòta mesadièra, quand es atenguda l'interfàcia es desactivada" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "TX quòta (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "TX+RX quòta (kbit)" diff --git a/luci-app-omr-quota/po/oc/omr-quota.po~ b/luci-app-omr-quota/po/oc/omr-quota.po~ new file mode 100644 index 000000000..87f906d16 --- /dev/null +++ b/luci-app-omr-quota/po/oc/omr-quota.po~ @@ -0,0 +1,56 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-21 20:21+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Ajustar" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Activat" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Interfàcias" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Interval entre las verificacions (s)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Invalid" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Quòta mesadièra" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +msgid "Quota" +msgstr "Quòta" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "RX quòta (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Definir la quòta mesadièra, quand es atenguda l'interfàcia es desactivada" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "TX quòta (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "TX+RX quòta (kbit)" diff --git a/luci-app-omr-quota/po/ru/omr-quota.po b/luci-app-omr-quota/po/ru/omr-quota.po new file mode 100644 index 000000000..2d9591607 --- /dev/null +++ b/luci-app-omr-quota/po/ru/omr-quota.po @@ -0,0 +1,62 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "Добавить" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "Включено" + +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "Разрешить доступ к UCI для luci-app-omr-quota" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "Интерфейсы" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "Интервал между проверками (сек.)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Неправильный" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "Месячная квота" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 +msgid "Quota" +msgstr "Квота" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "Ограничение на прием (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "" +"Установить ежемесячную квоту, при достижении квоты интерфейс отключается" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "Ограничение на отправку (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "Общее размер квоты (отправка и прием в kbit)" diff --git a/luci-app-omr-quota/po/templates/omr-quota.pot b/luci-app-omr-quota/po/templates/omr-quota.pot index 31c86eaff..da48e9212 100644 --- a/luci-app-omr-quota/po/templates/omr-quota.pot +++ b/luci-app-omr-quota/po/templates/omr-quota.pot @@ -1,32 +1,51 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 msgid "Add" msgstr "" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 msgid "Enable" msgstr "" +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 msgid "Interfaces" msgstr "" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 msgid "Interval between check (s)" msgstr "" +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 msgid "Invalid" msgstr "" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 msgid "Quota" msgstr "" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 msgid "RX quota (kbit)" msgstr "" -msgid "Set quota, when quota is reached interface state is set to down" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" msgstr "" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 msgid "TX quota (kbit)" msgstr "" +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 msgid "TX+RX quota (kbit)" msgstr "" diff --git a/luci-app-omr-quota/po/zh_Hans/omr-quota.po b/luci-app-omr-quota/po/zh_Hans/omr-quota.po new file mode 100644 index 000000000..f3157f768 --- /dev/null +++ b/luci-app-omr-quota/po/zh_Hans/omr-quota.po @@ -0,0 +1,60 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "添加" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "启用" + +#: luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json:3 +msgid "Grant UCI access for luci-app-omr-quota" +msgstr "授予luci-app-omr-quota UCI访问权限" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "接口" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "两次检查间隔 (秒)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "无效的" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "每月配额" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +#: luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json:3 +msgid "Quota" +msgstr "配额" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "接收配额 (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "设置每月配额,达到配额后将接口状态设置为关闭" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "发送配额 (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "发送+接收配额 (kbit)" diff --git a/luci-app-omr-quota/po/zh_Hans/omr-quota.po~ b/luci-app-omr-quota/po/zh_Hans/omr-quota.po~ new file mode 100644 index 000000000..b896c0b3e --- /dev/null +++ b/luci-app-omr-quota/po/zh_Hans/omr-quota.po~ @@ -0,0 +1,55 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-06-11 16:36+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:8 +msgid "Add" +msgstr "添加" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:21 +msgid "Enable" +msgstr "开启" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:10 +msgid "Interfaces" +msgstr "网卡" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:33 +msgid "Interval between check (s)" +msgstr "两次检查间隔 (秒)" + +#: luci-app-omr-quota/luasrc/view/omr-quota/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "无效" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Monthly Quota" +msgstr "每月配额" + +#: luci-app-omr-quota/luasrc/controller/quota.lua:11 +msgid "Quota" +msgstr "配额" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:27 +msgid "RX quota (kbit)" +msgstr "接收配额 (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:8 +msgid "Set monthly quota, when quota is reached interface state is set to down" +msgstr "设置每月配额,达到配额后将接口状态设置为关闭" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:24 +msgid "TX quota (kbit)" +msgstr "发送配额 (kbit)" + +#: luci-app-omr-quota/luasrc/model/cbi/quota/quota.lua:30 +msgid "TX+RX quota (kbit)" +msgstr "发送+接收配额 (kbit)" diff --git a/luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json b/luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json new file mode 100644 index 000000000..73ac0e6f4 --- /dev/null +++ b/luci-app-omr-quota/root/usr/share/luci/menu.d/luci-app-omr-quota.json @@ -0,0 +1,13 @@ +{ + "admin/network/quota": { + "title": "Quota", + "order": 90, + "action": { + "type": "cbi", + "path": "quota/quota" + }, + "depends": { + "acl": [ "luci-app-omr-quota" ] + } + } +} diff --git a/luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json b/luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json new file mode 100644 index 000000000..1fb134623 --- /dev/null +++ b/luci-app-omr-quota/root/usr/share/rpcd/acl.d/luci-app-omr-quota.json @@ -0,0 +1,11 @@ +{ + "luci-app-omr-quota": { + "description": "Grant UCI access for luci-app-omr-quota", + "read": { + "uci": [ "omr-quota" ] + }, + "write": { + "uci": [ "omr-quota" ] + } + } +} \ No newline at end of file diff --git a/luci-app-omr-tracker/Makefile b/luci-app-omr-tracker/Makefile index 6e439a44b..03bf7e30e 100644 --- a/luci-app-omr-tracker/Makefile +++ b/luci-app-omr-tracker/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) +# Copyright (C) 2018-2023 Ycarus (Yannick Chabanois) # # @@ -10,6 +10,7 @@ LUCI_DEPENDS:=+omr-tracker PKG_LICENSE:=GPLv3 -include ../luci/luci.mk +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/interface.js b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/interface.js new file mode 100644 index 000000000..2a0f428a3 --- /dev/null +++ b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/interface.js @@ -0,0 +1,305 @@ +'use strict'; +'require form'; +'require fs'; +'require view'; +'require uci'; + +var cfgtypes = ['defaults','interface']; + +return view.extend({ + load: function() { + return Promise.all([ + L.resolveDefault(fs.stat('/usr/bin/httping'), {}), + L.resolveDefault(fs.stat('/usr/bin/dig'), {}), +// L.resolveDefault(fs.stat('/usr/bin/nping'), {}), +// L.resolveDefault(fs.stat('/usr/bin/arping'), {}), + uci.load('network') + ]); + }, + + render: function (stats) { + var m, s, o; + + m = new form.Map('omr-tracker', _('OMR-Tracker - Interfaces'), + _('Names must match the interface name found in /etc/config/network.') + '
' + + _('Names may contain characters A-Z, a-z, 0-9, _ and no spaces-')); + + //s = m.section(form.GridSection, 'defaults'); + s = m.section(form.GridSection); + s.addremove = true; + s.anonymous = false; + s.nodescriptions = true; + s.cfgsections = function() { + return this.map.data.sections(this.map.config) + .filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; }) + .map(function(s) { return s['.name']; }); + }; + + s.handleAdd = function(ev) { + this.sectiontype = 'interface'; + var promise = form.GridSection.prototype.handleAdd.apply(this, arguments); + this.sectiontype = undefined; + return promise; + }; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = false; + + o = s.option(form.ListValue, 'initial_state', _('Initial state'), + _('Expect interface state on up event')); + o.default = 'online'; + o.value('online', _('Online')); + o.value('offline', _('Offline')); + o.modalonly = true; + + o = s.option(form.ListValue, 'family', _('Internet Protocol')); + o.default = 'ipv4'; + o.value('ipv4', _('IPv4')); + o.value('ipv6', _('IPv6')); + o.value('ipv4ipv6', _('IPv4 & IPv6')); + o.modalonly = true; + + o = s.option(form.DynamicList, 'hosts', _('Tracking hostname or IP address'), + _('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to use defaults settings.')); + //o.datatype = 'hosts'; + o.modalonly = true; + o.rmempty = false; + + o = s.option(form.DynamicList, 'hosts6', _('Tracking hostname or IP address for IPv6'), + _('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to use defaults settings.')); + //o.datatype = 'hosts'; + o.modalonly = true; + o.depends('family', 'ipv4ipv6'); + o.depends('family', 'ipv6'); + o.rmempty = false; + + o = s.option(form.ListValue, 'type', _('Tracking method'),_('Always ping gateway, then test connection by ping, httping or dns. None mode only ping gateway.')); + o.default = 'ping'; + o.value('none'); + o.value('ping'); + if (stats[0].type === 'file') { + o.value('httping'); + } + if (stats[1].type === 'file') { + o.value('dns'); + } + /* + if (stats[2].type === 'file') { + o.value('nping-tcp'); + o.value('nping-udp'); + o.value('nping-icmp'); + o.value('nping-arp'); + } + if (stats[3].type === 'file') { + o.value('arping'); + } + */ + o = s.option(form.Flag, 'server_http_test', _('Server http test'), + _('Check if connection work with http by sending a request to server API')); + o.rmempty = false; + o.modalonly = true; + + o = s.option(form.Flag, 'server_test', _('Server test'), + _('Check if connection work by sending a ping or http request to server over all interfaces, failed if only current interface is not able to.')); + o.rmempty = false; + o.modalonly = true; + + o = s.option(form.Flag, 'mail_alert', _('Mail alert'), + _('Send a mail when connection status change. You need to configure e-mail settings here.')); + o.rmempty = false; + o.modalonly = true; + + /* + o = s.option(form.Flag, 'httping_ssl', _('Enable ssl tracking'), + _('Enables https tracking on ssl port 443')); + o.depends('type', 'httping'); + o.rmempty = false; + o.modalonly = true; + */ + /* + o = s.option(form.Value, 'reliability', _('Tracking reliability'), + _('Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up')); + o.datatype = 'range(1, 100)'; + o.default = '1'; + */ + + o = s.option(form.ListValue, 'count', _('Ping count')); + o.default = '1'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.modalonly = true; + + o = s.option(form.Value, 'size', _('Ping size')); + o.default = '56'; + o.depends('type', 'ping'); + o.value('8'); + o.value('24'); + o.value('56'); + o.value('120'); + o.value('248'); + o.value('504'); + o.value('1016'); + o.value('1472'); + o.value('2040'); + o.datatype = 'range(1, 65507)'; + o.modalonly = true; + + o =s.option(form.Value, 'max_ttl', _('Max TTL')); + o.default = '60'; + o.depends('type', 'ping'); + o.value('10'); + o.value('20'); + o.value('30'); + o.value('40'); + o.value('50'); + o.value('60'); + o.value('70'); + o.datatype = 'range(1, 255)'; + o.modalonly = true; + + o = s.option(form.Flag, 'check_quality', _('Check link quality')); + o.depends('type', 'ping'); + o.default = false; + o.modalonly = true; + + o = s.option(form.Value, 'failure_latency', _('Failure latency [ms]')); + o.depends('check_quality', '1'); + o.default = '1000'; + o.value('25'); + o.value('50'); + o.value('75'); + o.value('100'); + o.value('150'); + o.value('200'); + o.value('250'); + o.value('300'); + o.modalonly = true; + + o = s.option(form.Value, 'failure_loss', _('Failure packet loss [%]')); + o.depends('check_quality', '1'); + o.default = '40'; + o.value('2'); + o.value('5'); + o.value('10'); + o.value('20'); + o.value('25'); + o.modalonly = true; + + o = s.option(form.Value, 'recovery_latency', _('Recovery latency [ms]')); + o.depends('check_quality', '1'); + o.default = '500'; + o.value('25'); + o.value('50'); + o.value('75'); + o.value('100'); + o.value('150'); + o.value('200'); + o.value('250'); + o.value('300'); + o.modalonly = true; + + o = s.option(form.Value, 'recovery_loss', _('Recovery packet loss [%]')); + o.depends('check_quality', '1'); + o.default = '10'; + o.value('2'); + o.value('5'); + o.value('10'); + o.value('20'); + o.value('25'); + o.modalonly = true; + + o = s.option(form.Value, "timeout", _("Ping timeout")); + o.default = '4'; + o.value('1', _('%d second').format('1')); + for (var i = 2; i <= 10; i++) + o.value(String(i), _('%d seconds').format(i)); + o.rmempty = false; + o.modalonly = true; + + o = s.option(form.Value, 'interval', _('Ping interval')); + o.default = '10'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + o.rmempty = false; + + o = s.option(form.Value, 'failure_interval', _('Failure interval'), + _('Ping interval during failure detection')); + o.default = '5'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + + o = s.option(form.Flag, 'keep_failure_interval', _('Keep failure interval'), + _('Keep ping failure interval during failure state')); + o.default = false; + o.modalonly = true; + + o = s.option(form.ListValue, 'tries', _('Interface down'), + _('Interface will be deemed down after this many failed ping tests')); + o.default = '5'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); + + o = s.option(form.ListValue, 'tries_up', _('Interface up'), + _('Downed interface will be deemed up after this many successful ping tests')); + o.default = "5"; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); + + o = s.option(form.Flag, 'restart_down', _('Restart if down'), + _('Restart interface if detected as down.')); + o.rmempty = false; + o.modalonly = true; + + + /* + o = s.option(form.DynamicList, 'flush_conntrack', _('Flush conntrack table'), + _('Flush global firewall conntrack table on interface events')); + o.value('ifup', _('ifup (netifd)')); + o.value('ifdown', _('ifdown (netifd)')); + o.modalonly = true; + */ + + return m.render(); + } +}) diff --git a/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/proxy.js b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/proxy.js new file mode 100644 index 000000000..0a4b80e86 --- /dev/null +++ b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/proxy.js @@ -0,0 +1,186 @@ +'use strict'; +'require form'; +'require fs'; +'require view'; +'require uci'; + +var cfgtypes = ['proxy']; + +return view.extend({ + load: function() { + return Promise.all([ + L.resolveDefault(fs.stat('/usr/bin/httping'), {}), + L.resolveDefault(fs.stat('/usr/bin/dig'), {}), +// L.resolveDefault(fs.stat('/usr/bin/nping'), {}), +// L.resolveDefault(fs.stat('/usr/bin/arping'), {}), + uci.load('network') + ]); + }, + + render: function (stats) { + var m, s, o; + + m = new form.Map('omr-tracker', _('OMR-Tracker - Proxy'), + _('Detect if proxy is down and stop redirection over it.')); + + //s = m.section(form.GridSection, 'defaults'); + s = m.section(form.GridSection); + //s.addremove = true; + s.anonymous = false; + s.nodescriptions = true; + s.cfgsections = function() { + return this.map.data.sections(this.map.config) + .filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; }) + .map(function(s) { return s['.name']; }); + }; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = false; + + o = s.option(form.ListValue, 'initial_state', _('Initial state'), + _('Expect interface state on up event')); + o.default = 'online'; + o.value('online', _('Online')); + o.value('offline', _('Offline')); + o.modalonly = true; + + o = s.option(form.ListValue, 'family', _('Internet Protocol')); + o.default = 'ipv4ipv6'; + //o.value('ipv4', _('IPv4')); + //o.value('ipv6', _('IPv6')); + o.value('ipv4ipv6', _('IPv4 & IPv6')); + o.modalonly = true; + + o = s.option(form.DynamicList, 'hosts', _('Tracking hostname or IP address'), + _('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online')); + o.datatype = 'hosts'; + o.modalonly = true; + + o = s.option(form.DynamicList, 'hosts6', _('Tracking hostname or IP address for IPv6'), + _('This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online')); + o.datatype = 'hosts'; + o.modalonly = true; + o.depends('family', 'ipv4ipv6'); + o.depends('family', 'ipv6'); + + /* + o = s.option(form.Flag, 'httping_ssl', _('Enable ssl tracking'), + _('Enables https tracking on ssl port 443')); + o.depends('track_method', 'httping'); + o.rmempty = false; + o.modalonly = true; + */ + + o = s.option(form.Flag, 'mail_alert', _('Mail alert'), + _('Send a mail when connection status change. You need to configure e-mail settings here.')); + o.rmempty = false; + o.modalonly = true; + + +/* + o = s.option(form.Value, 'reliability', _('Tracking reliability'), + _('Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up')); + o.datatype = 'range(1, 100)'; + o.default = '1'; +*/ + o = s.option(form.ListValue, 'tries', _('Test count')); + o.default = '1'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.modalonly = true; + + o = s.option(form.ListValue, "timeout", _("Test timeout")); + o.default = '4'; + o.value('1', _('%d second').format('1')); + for (var i = 2; i <= 10; i++) + o.value(String(i), _('%d seconds').format(i)); + o.modalonly = true; + + o = s.option(form.ListValue, 'interval', _('Test interval')); + o.default = '10'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); +/* + o = s.option(form.Value, 'failure_interval', _('Failure interval'), + _('Ping interval during failure detection')); + o.default = '5'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + + o = s.option(form.Flag, 'keep_failure_interval', _('Keep failure interval'), + _('Keep ping failure interval during failure state')); + o.default = false; + o.modalonly = true; + + o = s.option(form.Value, 'recovery_interval', _('Recovery interval'), + _('Ping interval during failure recovering')); + o.default = '5'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + + o = s.option(form.ListValue, 'tries', _('Proxy down'), + _('Proxy will be deemed down after this many failed tests')); + o.default = '5'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); + + o = s.option(form.ListValue, 'tries_up', _('Interface up'), + _('Downed interface will be deemed up after this many successful ping tests')); + o.default = "5"; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); +*/ + return m.render(); + } +}) diff --git a/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/server.js b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/server.js new file mode 100644 index 000000000..841095f28 --- /dev/null +++ b/luci-app-omr-tracker/htdocs/luci-static/resources/view/omr-tracker/network/server.js @@ -0,0 +1,216 @@ +'use strict'; +'require form'; +'require fs'; +'require view'; +'require uci'; + +var cfgtypes = ['server']; + +return view.extend({ + load: function() { + return Promise.all([ + L.resolveDefault(fs.stat('/usr/bin/httping'), {}), + L.resolveDefault(fs.stat('/usr/bin/dig'), {}), +// L.resolveDefault(fs.stat('/usr/bin/nping'), {}), +// L.resolveDefault(fs.stat('/usr/bin/arping'), {}), + uci.load('network') + ]); + }, + + render: function (stats) { + var m, s, o; + + m = new form.Map('omr-tracker', _('OMR-Tracker - Server'), + _('Detect if server is down and use defined backup server in this case.')); + + //s = m.section(form.GridSection, 'defaults'); + s = m.section(form.GridSection); + //s.addremove = true; + s.anonymous = false; + s.nodescriptions = true; + s.cfgsections = function() { + return this.map.data.sections(this.map.config) + .filter(function(s) { return cfgtypes.indexOf(s['.type']) !== -1; }) + .map(function(s) { return s['.name']; }); + }; + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.default = false; + + o = s.option(form.ListValue, 'initial_state', _('Initial state'), + _('Expect interface state on up event')); + o.default = 'online'; + o.value('online', _('Online')); + o.value('offline', _('Offline')); + o.modalonly = true; + + o = s.option(form.ListValue, 'type', _('Tracking method'),_('Check if VPS api answer or/and ping server IPs.')); + o.default = 'apiping'; + o.value('apiping',_('API & Ping')); + o.value('api',_('API')); + o.value('ping',_('Ping')); + o.value('none',_('None')); + + o = s.option(form.Flag, 'mail_alert', _('Mail alert'), + _('Send a mail when connection status change. You need to configure e-mail settings here.')); + o.rmempty = false; + o.modalonly = true; +/* + o = s.option(form.Value, 'reliability', _('Tracking reliability'), + _('Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up')); + o.datatype = 'range(1, 100)'; + o.default = '1'; +*/ + o = s.option(form.ListValue, 'tries', _('Test count')); + o.default = '1'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.modalonly = true; + + o = s.option(form.Flag, 'check_quality', _('Check link quality')); + o.depends('type', 'ping'); + o.depends('type', 'apiping'); + o.default = false; + o.modalonly = true; + + o = s.option(form.Value, 'failure_latency', _('Failure latency [ms]')); + o.depends('check_quality', '1'); + o.default = '1000'; + o.value('25'); + o.value('50'); + o.value('75'); + o.value('100'); + o.value('150'); + o.value('200'); + o.value('250'); + o.value('300'); + o.modalonly = true; + + o = s.option(form.Value, 'failure_loss', _('Failure packet loss [%]')); + o.depends('check_quality', '1'); + o.default = '40'; + o.value('2'); + o.value('5'); + o.value('10'); + o.value('20'); + o.value('25'); + o.modalonly = true; + + o = s.option(form.Value, 'recovery_latency', _('Recovery latency [ms]')); + o.depends('check_quality', '1'); + o.default = '500'; + o.value('25'); + o.value('50'); + o.value('75'); + o.value('100'); + o.value('150'); + o.value('200'); + o.value('250'); + o.value('300'); + o.modalonly = true; + + o = s.option(form.Value, 'recovery_loss', _('Recovery packet loss [%]')); + o.depends('check_quality', '1'); + o.default = '10'; + o.value('2'); + o.value('5'); + o.value('10'); + o.value('20'); + o.value('25'); + o.modalonly = true; + + o = s.option(form.ListValue, "timeout", _("Test timeout")); + o.default = '4'; + o.value('1', _('%d second').format('1')); + for (var i = 2; i <= 10; i++) + o.value(String(i), _('%d seconds').format(i)); + o.modalonly = true; + + o = s.option(form.ListValue, 'interval', _('Test interval')); + o.default = '10'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); +/* + o = s.option(form.Value, 'failure_interval', _('Failure interval'), + _('Ping interval during failure detection')); + o.default = '5'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + + o = s.option(form.Flag, 'keep_failure_interval', _('Keep failure interval'), + _('Keep ping failure interval during failure state')); + o.default = false; + o.modalonly = true; + + o = s.option(form.Value, 'recovery_interval', _('Recovery interval'), + _('Ping interval during failure recovering')); + o.default = '5'; + o.value('1', _('%d second').format('1')); + o.value('3', _('%d seconds').format('3')); + o.value('5', _('%d seconds').format('5')); + o.value('10', _('%d seconds').format('10')); + o.value('20', _('%d seconds').format('20')); + o.value('30', _('%d seconds').format('30')); + o.value('60', _('%d minute').format('1')); + o.value('300', _('%d minutes').format('5')); + o.value('600', _('%d minutes').format('10')); + o.value('900', _('%d minutes').format('15')); + o.value('1800', _('%d minutes').format('30')); + o.value('3600', _('%d hour').format('1')); + o.modalonly = true; + + o = s.option(form.ListValue, 'down', _('Interface down'), + _('Interface will be deemed down after this many failed ping tests')); + o.default = '5'; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); + + o = s.option(form.ListValue, 'up', _('Interface up'), + _('Downed interface will be deemed up after this many successful ping tests')); + o.default = "5"; + o.value('1'); + o.value('2'); + o.value('3'); + o.value('4'); + o.value('5'); + o.value('6'); + o.value('7'); + o.value('8'); + o.value('9'); + o.value('10'); +*/ + return m.render(); + } +}) diff --git a/luci-app-omr-tracker/luasrc/controller/omr-tracker.lua b/luci-app-omr-tracker/luasrc/controller/omr-tracker.lua deleted file mode 100644 index a4fcb23e7..000000000 --- a/luci-app-omr-tracker/luasrc/controller/omr-tracker.lua +++ /dev/null @@ -1,6 +0,0 @@ -module("luci.controller.omr-tracker", package.seeall) - -function index() - --entry({"admin", "openmptcprouter", "omr-tracker"}, cbi("omr-tracker"), _("OMR-Tracker")) - entry({"admin", "services", "omr-tracker"}, cbi("omr-tracker"), _("OMR-Tracker")) -end diff --git a/luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua b/luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua deleted file mode 100644 index f96451db4..000000000 --- a/luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua +++ /dev/null @@ -1,138 +0,0 @@ -local net = require "luci.model.network".init() -local sys = require "luci.sys" -local m, s, o - -m = Map("omr-tracker", translate("OMR-Tracker")) - -s = m:section(TypedSection, "shadowsocks", translate("ShadowSocks tracker Settings"), translate("Detect if ShadowSocks is down and stop traffic redirection over it.")) -s.anonymous = true -s.addremove = false - -local sdata = m:get('shadowsocks') -if not sdata then - m:set('shadowsocks', nil, 'shadowsocks') - m:set('shadowsocks', 'enabled', "1") -end - -o = s:option(Flag, "enabled", translate("Enable"), translate("When tracker is disabled, connection failover is also disabled")) -o.rmempty = false - -o = s:option(Value, "timeout", translate("Timeout (s)")) -o.placeholder = "1" -o.default = "1" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "tries", translate("Tries")) -o.placeholder = "4" -o.default = "4" -o.datatype = "range(1, 10)" -o.rmempty = false - -o = s:option(Value, "interval", translate("Retry interval (s)")) -o.placeholder = "2" -o.default = "2" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(DynamicList, "hosts", translate("Hosts"), translate("IPs or domains must be available over http")) -o.placeholder = "bing.com" -o.default = { "bing.com", "google.com" } -o.rmempty = false - - -s = m:section(TypedSection, "defaults", translate("Defaults Settings"), translate("OMR-Tracker detect when a connection is down and execute needed scripts")) -s.anonymous = true - -o = s:option(Flag, "enabled", translate("Enable"), translate("When tracker is disabled, connection failover is also disabled")) -o.rmempty = false - -o = s:option(Value, "timeout", translate("Timeout (s)")) -o.placeholder = "1" -o.default = "1" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "tries", translate("Tries")) -o.placeholder = "4" -o.default = "4" -o.datatype = "range(1, 10)" -o.rmempty = false - -o = s:option(Value, "interval", translate("Retry interval (s)")) -o.placeholder = "2" -o.default = "2" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(ListValue, "type", translate("Type"), translate("Always ping gateway, then test connection by ping, httping or dns. None mode only ping gateway.")) -o:value("ping","ping") -o:value("httping","httping") -o:value("dns","dns") -o:value("none","none") - -o = s:option(Flag, "mail_alert", translate("Mail alert"), translate("Send a mail when connection state change")) -o.optional = false -o.rmempty = false -o.default = false -o.disabled = 0 -o.enabled = 1 - -o = s:option(DynamicList, "hosts", translate("Hosts")) -o.placeholder = "4.2.2.1" -o.default = { "4.2.2.1", "8.8.8.8" } -o.rmempty = false - -s = m:section(TypedSection, "interface", translate("Interfaces")) -s.template_addremove = "omr-tracker/cbi-select-add" -s.addremove = true -s.add_select_options = { } -s.add_select_options[''] = '' -for _, iface in ipairs(net:get_networks()) do - if not (iface:name() == "loopback") then - s.add_select_options[iface:name()] = iface:name() - end -end - -o = s:option(Flag, "enabled", translate("Enable")) -o.rmempty = false - -o = s:option(Value, "timeout", translate("Timeout (s)")) -o.placeholder = "1" -o.default = "1" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(Value, "tries", translate("Tries")) -o.placeholder = "4" -o.default = "4" -o.datatype = "range(1, 10)" -o.rmempty = false - -o = s:option(Value, "interval", translate("Retry interval (s)")) -o.placeholder = "2" -o.default = "2" -o.datatype = "range(1, 100)" -o.rmempty = false - -o = s:option(ListValue, "type", translate("Type"), translate("Always ping gateway, then test connection by ping, httping or dns. None mode only ping gateway.")) -o:value("ping","ping") -o:value("httping","httping") -o:value("dns","dns") -o:value("none","none") - -o = s:option(Flag, "mail_alert", translate("Mail alert"), translate("Send a mail when connection status change. You need to configure e-mail settings
here.")) -o.optional = false -o.rmempty = false -o.default = false -o.disabled = 0 -o.enabled = 1 - - -o = s:option(DynamicList, "hosts", translate("Hosts")) -o.placeholder = "4.2.2.1" -o.default = { "4.2.2.1", "8.8.8.8" } -o.rmempty = false - - -return m diff --git a/luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm b/luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm deleted file mode 100644 index 9ee30d310..000000000 --- a/luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm +++ /dev/null @@ -1,10 +0,0 @@ -
- <% if self.invalid_cts then -%>
<% end %> - - - <% if self.invalid_cts then %>
<%:Invalid%>
<% end %> -
diff --git a/luci-app-omr-tracker/po/de/omr-tracker.po b/luci-app-omr-tracker/po/de/omr-tracker.po new file mode 100644 index 000000000..5a60906e0 --- /dev/null +++ b/luci-app-omr-tracker/po/de/omr-tracker.po @@ -0,0 +1,175 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +#, fuzzy +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Die Auswahl 'immer' prüft den Server auf ping und dann alle Anschlüsse auf " +"Ping und DNS-Verfügbarkeit. 'nie' führt nur Server-Pings durch." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Werkseinstellungen" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +msgid "Hosts" +msgstr "Hostsysteme" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "OMR-Tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "Der OMR_Tracker erkennt Störungen an Anschlüssen." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 +msgid "Retry interval (s)" +msgstr "Wiederhol-Abstand (in Sekunden)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 +msgid "Timeout (s)" +msgstr "Wartezeit (in Sekunden)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 +msgid "Tries" +msgstr "Versuche" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +msgid "Type" +msgstr "Typ" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/de/omr-tracker.po~ b/luci-app-omr-tracker/po/de/omr-tracker.po~ new file mode 100644 index 000000000..41b194360 --- /dev/null +++ b/luci-app-omr-tracker/po/de/omr-tracker.po~ @@ -0,0 +1,151 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-14 08:04+0000\n" +"Last-Translator: Andreas Dorfer \n" +"Language-Team: German \n" +"Language: de\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +#, fuzzy +#| msgid "" +#| "Always ping gateway, then test connection by ping or dns. None mode only " +#| "ping gateway." +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Die Auswahl 'immer' prüft den Server auf ping und dann alle Anschlüsse auf " +"Ping und DNS-Verfügbarkeit. 'nie' führt nur Server-Pings durch." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Werkseinstellungen" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:146 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:187 +msgid "Hosts" +msgstr "Hostsysteme" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:135 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "OMR-Tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +#| msgid "OMR-Tracker detect when a connection is down" +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "Der OMR_Tracker erkennt Störungen an Anschlüssen." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:161 +msgid "Retry interval (s)" +msgstr "Wiederhol-Abstand (in Sekunden)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +msgid "Timeout (s)" +msgstr "Wartezeit (in Sekunden)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:155 +msgid "Tries" +msgstr "Versuche" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +msgid "Type" +msgstr "Typ" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:167 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/fr/omr-tracker.po b/luci-app-omr-tracker/po/fr/omr-tracker.po index 9ff2772b6..16d168881 100644 --- a/luci-app-omr-tracker/po/fr/omr-tracker.po +++ b/luci-app-omr-tracker/po/fr/omr-tracker.po @@ -1,44 +1,189 @@ msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" -"Last-Translator: Ycarus \n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"PO-Revision-Date: 2021-05-17 17:36+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" "Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "Ajouter" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "" -"Always ping gateway, then test connection by ping or dns. None mode only " -"ping gateway." +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." msgstr "" -"Ping toujours la passerelle, puis teste la connexion par ping ou DNS. Le " -"mode \"none\" ping uniquement la passerelle." +"Ping toujours la passerelle, puis teste la connexion par ping, httping ou " +"DNS. Le mode \"none\" ping uniquement la passerelle." +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "" +"Vérifiez si la connexion fonctionne avec http en envoyant une demande au " +"serveur" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 msgid "Defaults Settings" msgstr "Paramètres par défaut" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" +"Détectez si le proxy est en panne et arrêtez la redirection du trafic dessus." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" +"Détectez si le serveur est en panne et utilisez le serveur de sauvegarde " +"défini dans ce cas." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "Activer" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "Accorder l'accès UCI pour luci-app-tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 msgid "Hosts" msgstr "Hôtes" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "Hôtes IPv6" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "Les adresses IP ou les domaines doivent être disponibles via http" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "Interfaces" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Invalide" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "Alerte mail" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "Doit être des adresses IP et non des domaines" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 msgid "OMR-Tracker" +msgstr "OMR-Tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" msgstr "" +"OMR-Tracker crée les routes nécessaires et détecte lorsqu'une connexion est " +"en panne" -msgid "OMR-Tracker detect when a connection is down" -msgstr "OMR-Tracker détecte quand une connexion ne fonctionne plus" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "Paramètres de suivi du proxy" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "Redémarrer si en panne" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "Redémarrez l'interface si elle est détectée comme étant en panne" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 msgid "Retry interval (s)" msgstr "Intervalle entre les essais (s)" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "Envoyer un e-mail lorsque l'état de la connexion change" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" +"Envoyer un mail lorsque l'état de la connexion change. Vous devez configurer " +"les paramètres e-mail ici." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "Test http du serveur" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "Paramètres de suivi du serveur" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 msgid "Timeout (s)" msgstr "Délais d'attente (s)" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 msgid "Tries" msgstr "Essais" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "Type" +msgstr "Type" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "Attendre après un test échoué (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" msgstr "" +"Lorsque le tracker est désactivé, le basculement de connexion est également " +"désactivé" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" +"Lorsque le tracker est désactivé, le basculement du serveur est également " +"désactivé" diff --git a/luci-app-omr-tracker/po/fr/omr-tracker.po~ b/luci-app-omr-tracker/po/fr/omr-tracker.po~ new file mode 100644 index 000000000..7cb6f825e --- /dev/null +++ b/luci-app-omr-tracker/po/fr/omr-tracker.po~ @@ -0,0 +1,159 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2021-04-30 16:16+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "Ajouter" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Ping toujours la passerelle, puis teste la connexion par ping, httping ou " +"DNS. Le mode \"none\" ping uniquement la passerelle." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Paramètres par défaut" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" +"Détectez si le proxy est en panne et arrêtez la redirection du trafic dessus." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" +"Détectez si le serveur est en panne et utilisez le serveur de sauvegarde " +"défini dans ce cas." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:146 +msgid "Enable" +msgstr "Activer" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "Accorder l'accès UCI pour luci-app-tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:187 +msgid "Hosts" +msgstr "Hôtes" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "Les adresses IP ou les domaines doivent être disponibles via http" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:135 +msgid "Interfaces" +msgstr "Interfaces" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "Invalide" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "Mail alert" +msgstr "Alerte mail" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Must be IPs and not domains" +msgstr "Doit être des adresses IP et non des domaines" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "OMR-Tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "" +"OMR-Tracker crée les routes nécessaires et détecte lorsqu'une connexion est " +"en panne" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "Paramètres de suivi du proxy" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:161 +msgid "Retry interval (s)" +msgstr "Intervalle entre les essais (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +msgid "Send a mail when connection state change" +msgstr "Envoyer un e-mail lorsque l'état de la connexion change" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" +"Envoyer un mail lorsque l'état de la connexion change. Vous devez configurer " +"les paramètres e-mail ici." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "Paramètres de suivi du serveur" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +msgid "Timeout (s)" +msgstr "Délais d'attente (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:155 +msgid "Tries" +msgstr "Essais" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +msgid "Type" +msgstr "Type" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:167 +msgid "Wait after a failed test (s)" +msgstr "Attendre après un test échoué (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" +"Lorsque le tracker est désactivé, le basculement de connexion est également " +"désactivé" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" +"Lorsque le tracker est désactivé, le basculement du serveur est également " +"désactivé" diff --git a/luci-app-omr-tracker/po/it/omr-tracker.po b/luci-app-omr-tracker/po/it/omr-tracker.po new file mode 100644 index 000000000..337631a7f --- /dev/null +++ b/luci-app-omr-tracker/po/it/omr-tracker.po @@ -0,0 +1,175 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2022-02-20 20:24+0000\n" +"Last-Translator: tiziano \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.10.1\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "Aggiungi" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +#, fuzzy +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Esegui sempre il ping del gateway, quindi verifica la connessione tramite " +"ping o DNS." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Impostazioni predefinite" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +msgid "Hosts" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "Interfacce" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "OMR-Tracker rileva quando una connessione è interrotta" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 +msgid "Retry interval (s)" +msgstr "Intervallo di ripetizione (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 +msgid "Timeout (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 +msgid "Tries" +msgstr "Tentativi" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +msgid "Type" +msgstr "Tipo" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/it/omr-tracker.po~ b/luci-app-omr-tracker/po/it/omr-tracker.po~ new file mode 100644 index 000000000..61ebe850d --- /dev/null +++ b/luci-app-omr-tracker/po/it/omr-tracker.po~ @@ -0,0 +1,151 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-09-21 12:51+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: Italian \n" +"Language: it\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +#, fuzzy +#| msgid "" +#| "Always ping gateway, then test connection by ping or dns. None mode only " +#| "ping gateway." +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Esegui sempre il ping del gateway, quindi verifica la connessione tramite " +"ping o DNS." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Impostazioni predefinite" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:146 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:187 +msgid "Hosts" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:135 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +#| msgid "OMR-Tracker detect when a connection is down" +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "OMR-Tracker rileva quando una connessione è interrotta" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:161 +msgid "Retry interval (s)" +msgstr "Intervallo di ripetizione (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +msgid "Timeout (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:155 +msgid "Tries" +msgstr "Tentativi" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +msgid "Type" +msgstr "Tipo" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:167 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/oc/omr-tracker.po b/luci-app-omr-tracker/po/oc/omr-tracker.po new file mode 100644 index 000000000..0ed531bb0 --- /dev/null +++ b/luci-app-omr-tracker/po/oc/omr-tracker.po @@ -0,0 +1,175 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-18 17:37+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +#, fuzzy +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Totjorn enviar un ping a la palanca puèi la connexion via ping o DNS. Lo " +"mòde \"none\" ping sonque la palanca." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Paramètres per defaut" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +msgid "Hosts" +msgstr "Òstes" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "OMR-Tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "OMR-Tracker detècta quand una connexion fonciona pas mai" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 +msgid "Retry interval (s)" +msgstr "Interval entre ensages" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 +msgid "Timeout (s)" +msgstr "Relambi d'espèra (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 +msgid "Tries" +msgstr "Ensages" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +msgid "Type" +msgstr "Tipe" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/oc/omr-tracker.po~ b/luci-app-omr-tracker/po/oc/omr-tracker.po~ new file mode 100644 index 000000000..6e2159871 --- /dev/null +++ b/luci-app-omr-tracker/po/oc/omr-tracker.po~ @@ -0,0 +1,151 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-08-18 17:37+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +#, fuzzy +#| msgid "" +#| "Always ping gateway, then test connection by ping or dns. None mode only " +#| "ping gateway." +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" +"Totjorn enviar un ping a la palanca puèi la connexion via ping o DNS. Lo " +"mòde \"none\" ping sonque la palanca." + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "Paramètres per defaut" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:146 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:187 +msgid "Hosts" +msgstr "Òstes" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:135 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "OMR-Tracker" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +#, fuzzy +#| msgid "OMR-Tracker detect when a connection is down" +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "OMR-Tracker detècta quand una connexion fonciona pas mai" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:161 +msgid "Retry interval (s)" +msgstr "Interval entre ensages" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:179 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +msgid "Timeout (s)" +msgstr "Relambi d'espèra (s)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:155 +msgid "Tries" +msgstr "Ensages" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:173 +msgid "Type" +msgstr "Tipe" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:167 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/templates/omr-tracker.pot b/luci-app-omr-tracker/po/templates/omr-tracker.pot index 49e4ca635..4cdce9be1 100644 --- a/luci-app-omr-tracker/po/templates/omr-tracker.pot +++ b/luci-app-omr-tracker/po/templates/omr-tracker.pot @@ -1,31 +1,162 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -msgid "" -"Always ping gateway, then test connection by ping or dns. None mode only " -"ping gateway." +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 msgid "Defaults Settings" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 msgid "Hosts" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 msgid "OMR-Tracker" msgstr "" -msgid "OMR-Tracker detect when a connection is down" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 msgid "Retry interval (s)" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 msgid "Timeout (s)" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 msgid "Tries" msgstr "" +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 msgid "Type" msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "" diff --git a/luci-app-omr-tracker/po/zh_Hans/omr-tracker.po b/luci-app-omr-tracker/po/zh_Hans/omr-tracker.po new file mode 100644 index 000000000..43d1ab8dc --- /dev/null +++ b/luci-app-omr-tracker/po/zh_Hans/omr-tracker.po @@ -0,0 +1,173 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-13 21:38+0000\n" +"Last-Translator: justbin <419989953@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:8 +msgid "Add" +msgstr "添加" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +msgid "" +"Always ping gateway, then test connection by ping, httping or dns. None mode " +"only ping gateway." +msgstr "总是ping网关,然后通过ping, http或dns测试连接。无模式仅ping网关。" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Check if connection work with http by sending a request to server" +msgstr "通过向服务器发送请求,检查连接是否与http工作" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "Defaults Settings" +msgstr "默认设置" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Detect if Proxy is down and stop traffic redirection over it." +msgstr "检测代理是否关闭并停止通过它的流量重定向。" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Detect if Server is down and use defined backup server in this case." +msgstr "检测服务器是否关闭,并在这种情况下使用定义的备份服务器。" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:165 +msgid "Enable" +msgstr "启用" + +#: luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json:3 +msgid "Grant UCI access for luci-app-omr-tracker" +msgstr "授权UCI访问聚合跟踪器" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +msgid "Hosts" +msgstr "主机" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Hosts IPv6" +msgstr "IPv6 主机" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:44 +msgid "IPs or domains must be available over http" +msgstr "ip或域必须在http上可用" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:154 +msgid "Interfaces" +msgstr "接口" + +#: luci-app-omr-tracker/luasrc/view/omr-tracker/cbi-select-add.htm:9 +msgid "Invalid" +msgstr "无效的" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "Mail alert" +msgstr "邮件提醒" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:144 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:149 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:219 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:224 +msgid "Must be IPs and not domains" +msgstr "必须是ip而不是域" + +#: luci-app-omr-tracker/luasrc/controller/omr-tracker.lua:5 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:5 +#: luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json:3 +msgid "OMR-Tracker" +msgstr "聚合跟踪器" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:87 +msgid "" +"OMR-Tracker create needed routes and detect when a connection is down or up" +msgstr "聚合跟踪器创建所需的路径,并检测连接何时断开或接通" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:7 +msgid "Proxy tracker Settings" +msgstr "代理跟踪设置" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart if down" +msgstr "如果关闭,重新启动" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:137 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:212 +msgid "Restart interface if detected as down" +msgstr "如果检测到接口关闭,重新启动接口" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:32 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:75 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:105 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:180 +msgid "Retry interval (s)" +msgstr "重试时间间隔(秒)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:130 +msgid "Send a mail when connection state change" +msgstr "当连接状态改变时发送邮件" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:205 +msgid "" +"Send a mail when connection status change. You need to configure e-mail " +"settings here." +msgstr "" +"当连接状态发生变化时发送邮件。你需要配置电子邮件设置这里。" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:123 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:198 +msgid "Server http test" +msgstr "服务器http测试" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:50 +msgid "Server tracker Settings" +msgstr "服务器跟踪设置" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:20 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:63 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:93 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:168 +msgid "Timeout (s)" +msgstr "超时(秒)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:26 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:69 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:99 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:174 +msgid "Tries" +msgstr "尝试" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:117 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:192 +msgid "Type" +msgstr "类型" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:38 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:81 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:111 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:186 +msgid "Wait after a failed test (s)" +msgstr "在测试失败后等待(秒)" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:17 +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:90 +msgid "When tracker is disabled, connection failover is also disabled" +msgstr "禁用跟踪器时,也禁用连接故障转移" + +#: luci-app-omr-tracker/luasrc/model/cbi/omr-tracker.lua:60 +msgid "When tracker is disabled, server failover is also disabled" +msgstr "禁用跟踪器时,也禁用服务器故障转移" diff --git a/luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json b/luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json new file mode 100644 index 000000000..fbe9e0b6c --- /dev/null +++ b/luci-app-omr-tracker/root/usr/share/luci/menu.d/luci-app-omr-tracker.json @@ -0,0 +1,36 @@ +{ + "admin/services/omr-tracker": { + "title": "OMR-Tracker Manager", + "order": 60, + "action": { + "type": "firstchild" + }, + "depends": { + "acl": [ "luci-app-omr-tracker" ] + } + }, + "admin/services/omr-tracker/interface": { + "title": "Interface", + "order": 10, + "action": { + "type": "view", + "path": "omr-tracker/network/interface" + } + }, + "admin/services/omr-tracker/proxy": { + "title": "Proxy", + "order": 20, + "action": { + "type": "view", + "path": "omr-tracker/network/proxy" + } + }, + "admin/services/omr-tracker/server": { + "title": "Server", + "order": 30, + "action": { + "type": "view", + "path": "omr-tracker/network/server" + } + } +} diff --git a/luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json b/luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json new file mode 100644 index 000000000..31a2a4b62 --- /dev/null +++ b/luci-app-omr-tracker/root/usr/share/rpcd/acl.d/luci-app-omr-tracker.json @@ -0,0 +1,17 @@ +{ + "luci-app-omr-tracker": { + "description": "Grant UCI access for luci-app-omr-tracker", + "read": { + "uci": [ "omr-tracker" ], + "file": { + "/usr/bin/httping": [ "list" ], + "/usr/bin/dig": [ "list" ], + "/usr/bin/nping": [ "list" ], + "/usr/bin/arping": [ "list" ] + } + }, + "write": { + "uci": [ "omr-tracker" ] + } + } +} \ No newline at end of file diff --git a/luci-app-openmptcprouter/Makefile b/luci-app-openmptcprouter/Makefile index f32fa7092..38a5aab6a 100644 --- a/luci-app-openmptcprouter/Makefile +++ b/luci-app-openmptcprouter/Makefile @@ -6,10 +6,11 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Support for OpenMPTCProuter -LUCI_DEPENDS:=+luci-lib-json +rdisc6 +curl +bind-dig +tracebox +LUCI_DEPENDS:=+luci-lib-json +openmptcprouter-api PKG_LICENSE:=GPLv3 -include ../luci/luci.mk +#include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk define Package/luci-app-openmptcprouter/conffiles /etc/sysctl.d/zzz_openmptcprouter.conf diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter.png b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter.png new file mode 100644 index 000000000..f4683f2c5 Binary files /dev/null and b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter.png differ diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css index 461c9090f..b4a8d7a02 100644 --- a/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css +++ b/luci-app-openmptcprouter/htdocs/luci-static/resources/openmptcprouter/css/wanstatus.css @@ -1,6 +1,6 @@ .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: 1044px; + max-width: 1500px; } #interface_field { padding: 12px 20px 20px 20px; @@ -31,12 +31,9 @@ text-align: center; } /* Mwan3 ligthed CSS */ -.container { - /* container for entire page. fixes bootstrap theme's ridiculously small page width */ - max-width: 1044px; -} #interface_field { padding: 0px; + max-width: 1200px; } #interface_field td { padding: 0px; @@ -71,7 +68,7 @@ ul { -moz-transition: all 0.5s; } .tree ul ul { - padding-left: 85px; + padding-left: 5px; position: relative; } .tree > ul > li:first-child { @@ -96,7 +93,7 @@ ul { width: 85px; height: 50%; float: left; - z-index: -10; + /*z-index: -10;*/ /* position: absolute; top: 0; @@ -152,7 +149,7 @@ right connector from last child*/ top: 50%; left: 0; border-top: 2px solid black; - width: 85px; + width: 7px; height: 100%; } .tree li a { @@ -194,7 +191,7 @@ right connector from last child*/ border-left: 2px solid black; border-bottom: none; width: 2px; - height: 30px; + height: 20em; z-index: -10; } .remote-from-lease a { @@ -212,16 +209,18 @@ right connector from last child*/ width: 85px; height: 0; } -.tree ul li#networkRootNode:not(:first-child) td::before { +.tree ul li#networkRootNode:not(:first-child) tr.spaceline td { content: ''; position: absolute; - top: 0; + /*top: 0; + top: 75px;*/ border-left: 2px solid black; border-bottom: none; width: 2px; - height: 50%; - left: 200px; - z-index: -10; + /*height: 50%;*/ + height: 55px; + left: 240px; + /* z-index: -10;*/ } /*Time for some hover effects*/ /*We will apply the hover effect the the lineage of the element also*/ @@ -241,11 +240,11 @@ Thanks :)*/ .network-node { position: relative; background-color: #f3f3f3; - padding: 12px; - width: 400px; - max-width: 400px; + padding: 8px; + width: 480px; + max-width: 480px; box-sizing: border-box; - height: 170px; + min-height: 170px; } .network-node .equipment-icon { position: relative; @@ -280,7 +279,7 @@ Thanks :)*/ .network-node .info { position: relative; float: right; - width: 250px; + width: 330px; text-align: left; font-size: 12px; color: #757575; @@ -291,6 +290,13 @@ Thanks :)*/ font-weight: 700; color: #333333; } + +.network-node .info .title i { + font-weight: lighter; + font-size: 0.8em; + text-transform: uppercase; +} + .network-node .info .status-message { display: block; } @@ -310,14 +316,19 @@ Thanks :)*/ width:5px; border-right:2px dotted black; height:70px; - padding-right: 195px; + padding-right: 240px; } #omr { - height: 190px; + min-height: 190px; } #omr-vps { - height: 160px; + min-height: 160px; } .space { height: 55px; -} \ No newline at end of file +} +.spaceline { + height: 55px; + z-index: -10; + position: relative; +} diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/overthebox.png b/luci-app-openmptcprouter/htdocs/luci-static/resources/overthebox.png deleted file mode 100644 index 7b578c01f..000000000 Binary files a/luci-app-openmptcprouter/htdocs/luci-static/resources/overthebox.png and /dev/null differ diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/proxy.js b/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/proxy.js new file mode 100644 index 000000000..d7b9300b6 --- /dev/null +++ b/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/proxy.js @@ -0,0 +1,18 @@ +'use strict'; +'require baseclass'; +'require form'; + +return baseclass.extend({ + trigger: _('Proxy status (service: proxy)'), + kernel: false, + addFormOptions: function(s){ + var o; + + o = s.option(form.ListValue, 'proxy_status', _('Proxy Status')); + o.rmempty = true; + o.modalonly = true; + o.value('up', _('Up')); + o.value('down', _('Down')); + o.depends('trigger','proxy'); + } +}); diff --git a/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/vpn.js b/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/vpn.js new file mode 100644 index 000000000..85f28a8a2 --- /dev/null +++ b/luci-app-openmptcprouter/htdocs/luci-static/resources/view/system/led-trigger/vpn.js @@ -0,0 +1,18 @@ +'use strict'; +'require baseclass'; +'require form'; + +return baseclass.extend({ + trigger: _('VPN status (service: vpn)'), + kernel: false, + addFormOptions: function(s){ + var o; + + o = s.option(form.ListValue, 'vpn_status', _('VPN Status')); + o.rmempty = true; + o.modalonly = true; + o.value('up', _('Up')); + o.value('down', _('Down')); + o.depends('trigger','vpn'); + } +}); diff --git a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua index e9821938c..2c7713fa3 100644 --- a/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua +++ b/luci-app-openmptcprouter/luasrc/controller/openmptcprouter.lua @@ -1,31 +1,36 @@ local math = require "math" -local tools = require "luci.tools.status" local sys = require "luci.sys" local json = require("luci.json") local fs = require("nixio.fs") local net = require "luci.model.network".init() local ucic = luci.model.uci.cursor() +local ipc = require "luci.ip" module("luci.controller.openmptcprouter", package.seeall) function index() --- entry({"admin", "openmptcprouter"}, firstchild(), _("OpenMPTCProuter"), 19).index = true --- entry({"admin", "openmptcprouter", "wizard"}, template("openmptcprouter/wizard"), _("Wizard"), 1).leaf = true --- entry({"admin", "openmptcprouter", "wizard_add"}, post("wizard_add")).leaf = true - entry({"admin", "system", "openmptcprouter"}, alias("admin", "system", "openmptcprouter", "wizard"), _("OpenMPTCProuter"), 1) - entry({"admin", "system", "openmptcprouter", "wizard"}, template("openmptcprouter/wizard"), _("Settings Wizard"), 1) - entry({"admin", "system", "openmptcprouter", "wizard_add"}, post("wizard_add")) - entry({"admin", "system", "openmptcprouter", "status"}, template("openmptcprouter/wanstatus"), _("Status"), 2).leaf = true - entry({"admin", "system", "openmptcprouter", "interfaces_status"}, call("interfaces_status")).leaf = true - entry({"admin", "system", "openmptcprouter", "settings"}, template("openmptcprouter/settings"), _("Advanced Settings"), 3).leaf = true - entry({"admin", "system", "openmptcprouter", "settings_add"}, post("settings_add")).leaf = true - entry({"admin", "system", "openmptcprouter", "update_vps"}, post("update_vps")).leaf = true - entry({"admin", "system", "openmptcprouter", "debug"}, template("openmptcprouter/debug"), _("Show all settings"), 5).leaf = true + local ucic = luci.model.uci.cursor() + menuentry = ucic:get("openmptcprouter","settings","menu") or "OpenMPTCProuter" + entry({"admin", "system", menuentry:lower()}, alias("admin", "system", menuentry:lower(), "wizard"), _(menuentry), 1) + entry({"admin", "system", menuentry:lower(), "wizard"}, template("openmptcprouter/wizard"), _("Settings Wizard"), 1) + entry({"admin", "system", menuentry:lower(), "wizard_add"}, post("wizard_add")) + entry({"admin", "system", menuentry:lower(), "status"}, template("openmptcprouter/wanstatus"), _("Status"), 2).leaf = true + entry({"admin", "system", menuentry:lower(), "interfaces_status"}, call("interfaces_status")).leaf = true + entry({"admin", "system", menuentry:lower(), "settings"}, template("openmptcprouter/settings"), _("Advanced Settings"), 3).leaf = true + entry({"admin", "system", menuentry:lower(), "settings_add"}, post("settings_add")) + entry({"admin", "system", menuentry:lower(), "update_vps"}, post("update_vps")) + entry({"admin", "system", menuentry:lower(), "backup"}, template("openmptcprouter/backup"), _("Backup on server"), 3).leaf = true + entry({"admin", "system", menuentry:lower(), "backupgr"}, post("backupgr")) + entry({"admin", "system", menuentry:lower(), "debug"}, template("openmptcprouter/debug"), _("Show all settings"), 5).leaf = true end function interface_from_device(dev) for _, iface in ipairs(net:get_networks()) do local ifacen = iface:name() - local ifacename = ucic:get("network",ifacen,"ifname") + local ifacename = "" + ifacename = ucic:get("network",ifacen,"device") + if ifacename == "" then + ifacename = ucic:get("network",ifacen,"ifname") + end if ifacename == dev then return ifacen end @@ -33,19 +38,40 @@ function interface_from_device(dev) return "" end +function uci_device_from_interface(intf) + intfname = ucic:get("network",intf,"device") + deviceuci = "" + ucic:foreach("network", "device", function(s) + if intfname == ucic:get("network",s[".name"],"name") then + deviceuci = s[".name"] + end + end) + return deviceuci +end + function wizard_add() local gostatus = true + + -- Force WAN zone firewall members to be a list + local fwwan = sys.exec("uci -q get firewall.zone_wan.network") + luci.sys.call("uci -q delete firewall.zone_wan.network") + for interface in fwwan:gmatch("%S+") do + luci.sys.call("uci -q add_list firewall.zone_wan.network=" .. interface) + end + ucic:save("firewall") + -- Add new server local add_server = luci.http.formvalue("add_server") or "" local add_server_name = luci.http.formvalue("add_server_name") or "" if add_server ~= "" and add_server_name ~= "" then ucic:set("openmptcprouter",add_server_name:gsub("[^%w_]+","_"),"server") + ucic:set("openmptcprouter",add_server_name:gsub("[^%w_]+","_"),"username","openmptcprouter") gostatus = false end -- Remove existing server local delete_server = luci.http.formvaluetable("deleteserver") or "" - if delete_server ~= "" then + if delete_server ~= "" and next(delete_server) ~= nil then for serverdel, _ in pairs(delete_server) do ucic:foreach("network", "interface", function(s) local sectionname = s[".name"] @@ -53,13 +79,35 @@ function wizard_add() end) ucic:delete("network","server_" .. serverdel .. "_default_route") ucic:delete("openmptcprouter",serverdel) + ucic:delete("iperf",serverdel) ucic:save("openmptcprouter") ucic:commit("openmptcprouter") ucic:save("network") ucic:commit("network") - luci.http.redirect(luci.dispatcher.build_url("admin/system/openmptcprouter/wizard")) - return end + local nbserver = 0 + local server_ip = '' + ucic:foreach("openmptcprouter", "server", function(s) + local servername = s[".name"] + nbserver = nbserver + 1 + server_ips = ucic:get_list("openmptcprouter",servername,"ip") + server_ip = server_ips[1] + end) + if nbserver == 1 and server_ip ~= "" and server_ip ~= nil then + ucic:set("shadowsocks-libev","sss0","server",server_ip) + ucic:set("shadowsocks-rust","sss0","server",server_ip) + ucic:set("glorytun","vpn","host",server_ip) + ucic:set("glorytun-udp","vpn","host",server_ip) + ucic:set("dsvpn","vpn","host",server_ip) + ucic:set("mlvpn","general","host",server_ip) + ucic:set("ubond","general","host",server_ip) + luci.sys.call("uci -q del openvpn.omr.remote") + luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) + ucic:set("qos","serverin","srchost",server_ip) + ucic:set("qos","serverout","dsthost",server_ip) + end + luci.http.redirect(luci.dispatcher.build_url("admin/system/openmptcprouter/wizard")) + return end -- Add new interface @@ -71,7 +119,9 @@ function wizard_add() ucic:foreach("network", "interface", function(s) local sectionname = s[".name"] if sectionname:match("^wan(%d+)$") then - i = i + 1 + if i <= tonumber(string.match(sectionname, '%d+')) then + i = tonumber(string.match(sectionname, '%d+')) + 1 + end end if ucic:get("network",sectionname,"multipath") == "master" then multipath_master = true @@ -79,7 +129,10 @@ function wizard_add() end) local defif = "eth0" if add_interface_ifname == "" then - local defif1 = ucic:get("network","wan1_dev","ifname") or "" + local defif1 = ucic:get("network","wan1_dev","device") or "" + if defif1 == "" then + defif1 = ucic:get("network","wan1_dev","ifname") or "" + end if defif1 ~= "" then defif = defif1 end @@ -92,26 +145,45 @@ function wizard_add() if ointf ~= "" then if ucic:get("network",ointf,"type") == "" then ucic:set("network",ointf,"type","macvlan") + ucic:set("network",ointf,"device",ointf) + ucic:set("network",ointf .. "_dev","device") + ucic:set("network",ointf .. "_dev","type","macvlan") + ucic:set("network",ointf .. "_dev","mode","vepa") + ucic:set("network",ointf .. "_dev","ifname",defif) + ucic:set("network",ointf .. "_dev","name",ointf) end wanif = "wan" .. i end ucic:set("network","wan" .. i,"interface") - ucic:set("network","wan" .. i,"ifname",defif) + ucic:set("network","wan" .. i,"device",defif) ucic:set("network","wan" .. i,"proto","static") + ucic:set("openmptcprouter","wan" .. i,"interface") if ointf ~= "" then ucic:set("network","wan" .. i,"type","macvlan") + ucic:set("network","wan" .. i,"device","wan" .. i) + ucic:set("network","wan" .. i,"masterintf",defif) + ucic:set("network","wan" .. i .. "_dev","device") + ucic:set("network","wan" .. i .. "_dev","type","macvlan") + ucic:set("network","wan" .. i .. "_dev","mode","vepa") + ucic:set("network","wan" .. i .. "_dev","ifname",defif) + ucic:set("network","wan" .. i .. "_dev","name","wan" .. i) + ucic:set("network","wan" .. i .. "_dev","txqueuelen","1000") end ucic:set("network","wan" .. i,"ip4table","wan") if multipath_master then ucic:set("network","wan" .. i,"multipath","on") + ucic:set("openmptcprouter","wan" .. i,"multipath","on") else ucic:set("network","wan" .. i,"multipath","master") + ucic:set("openmptcprouter","wan" .. i,"multipath","master") end ucic:set("network","wan" .. i,"defaultroute","0") ucic:reorder("network","wan" .. i, i + 2) ucic:save("network") ucic:commit("network") + ucic:save("openmptcprouter") + ucic:commit("openmptcprouter") ucic:set("qos","wan" .. i,"interface") ucic:set("qos","wan" .. i,"classgroup","Default") @@ -127,15 +199,17 @@ function wizard_add() else ucic:set("sqm","wan" .. i,"interface",defif) end - ucic:set("sqm","wan" .. i,"qdisc","fq_codel") - ucic:set("sqm","wan" .. i,"script","simple.qos") + ucic:set("sqm","wan" .. i,"qdisc","cake") + ucic:set("sqm","wan" .. i,"script","piece_of_cake.qos") ucic:set("sqm","wan" .. i,"qdisc_advanced","0") ucic:set("sqm","wan" .. i,"linklayer","none") - ucic:set("sqm","wan" .. i,"enabled","0") + ucic:set("sqm","wan" .. i,"enabled","1") ucic:set("sqm","wan" .. i,"debug_logging","0") ucic:set("sqm","wan" .. i,"verbosity","5") ucic:set("sqm","wan" .. i,"download","0") ucic:set("sqm","wan" .. i,"upload","0") + ucic:set("sqm","wan" .. i,"iqdisc_opts","autorate-ingress dual-dsthost") + ucic:set("sqm","wan" .. i,"eqdisc_opts","dual-srchost") ucic:save("sqm") ucic:commit("sqm") @@ -143,10 +217,11 @@ function wizard_add() luci.sys.call("uci -q commit vnstat") -- Dirty way to add new interface to firewall... - luci.sys.call("uci -q add_list firewall.@zone[1].network=wan" .. i) + luci.sys.call("uci -q add_list firewall.zone_wan.network=wan" .. i) luci.sys.call("uci -q commit firewall") luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/vnstat restart >/dev/null 2>/dev/null") gostatus = false end @@ -154,9 +229,14 @@ function wizard_add() local delete_intf = luci.http.formvaluetable("delete") or "" if delete_intf ~= "" then for intf, _ in pairs(delete_intf) do - local defif = ucic:get("network",intf,"ifname") + local defif = ucic:get("network",intf,"ifname") or "" + if defif == "" then + defif = ucic:get("network",intf,"ifname") + end ucic:delete("network",intf) - ucic:delete("network",intf .. "_dev") + if ucic:get("network",intf .. "_dev") ~= "" then + ucic:delete("network",intf .. "_dev") + end ucic:save("network") ucic:commit("network") ucic:delete("sqm",intf) @@ -165,35 +245,192 @@ function wizard_add() ucic:delete("qos",intf) ucic:save("qos") ucic:commit("qos") - if defif ~= "" then + ucic:delete("openmptcprouter",intf) + ucic:save("openmptcprouter") + ucic:commit("openmptcprouter") + if defif ~= nil and defif ~= "" then luci.sys.call("uci -q del_list vnstat.@vnstat[-1].interface=" .. defif) end luci.sys.call("uci -q commit vnstat") - luci.sys.call("uci -q del_list firewall.@zone[1].network=" .. intf) + luci.sys.call("uci -q del_list firewall.zone_wan.network=" .. intf) luci.sys.call("uci -q commit firewall") gostatus = false end end + -- Enable/disable IPv6 + local disableipv6 = luci.http.formvalue("enableipv6") or "1" + ucic:set("openmptcprouter","settings","disable_ipv6",disableipv6) + + -- Set interfaces settings + local downloadmax = 0 + local uploadmax = 0 local interfaces = luci.http.formvaluetable("intf") for intf, _ in pairs(interfaces) do + local label = luci.http.formvalue("cbid.network.%s.label" % intf) or "" local proto = luci.http.formvalue("cbid.network.%s.proto" % intf) or "static" + local typeintf = luci.http.formvalue("cbid.network.%s.type" % intf) or "" + local masterintf = luci.http.formvalue("cbid.network.%s.masterintf" % intf) or "" + local ifname = luci.http.formvalue("cbid.network.%s.intf" % intf) or "" + local vlan = luci.http.formvalue("cbid.network.%s.vlan" % intf) or "" + local device_ncm = luci.http.formvalue("cbid.network.%s.device.ncm" % intf) or "" + local device_qmi = luci.http.formvalue("cbid.network.%s.device.qmi" % intf) or "" + local device_modemmanager = luci.http.formvalue("cbid.network.%s.device.modemmanager" % intf) or "" local ipaddr = luci.http.formvalue("cbid.network.%s.ipaddr" % intf) or "" + local ip6addr = luci.http.formvalue("cbid.network.%s.ip6addr" % intf) or "" local netmask = luci.http.formvalue("cbid.network.%s.netmask" % intf) or "" local gateway = luci.http.formvalue("cbid.network.%s.gateway" % intf) or "" + local ip6gw = luci.http.formvalue("cbid.network.%s.ip6gw" % intf) or "" + local ipv6 = luci.http.formvalue("cbid.network.%s.ipv6" % intf) or "0" + local apn = luci.http.formvalue("cbid.network.%s.apn" % intf) or "" + local pincode = luci.http.formvalue("cbid.network.%s.pincode" % intf) or "" + local delay = luci.http.formvalue("cbid.network.%s.delay" % intf) or "" + local username = luci.http.formvalue("cbid.network.%s.username" % intf) or "" + local password = luci.http.formvalue("cbid.network.%s.password" % intf) or "" + local auth = luci.http.formvalue("cbid.network.%s.auth" % intf) or "" + local mode = luci.http.formvalue("cbid.network.%s.mode" % intf) or "" local sqmenabled = luci.http.formvalue("cbid.sqm.%s.enabled" % intf) or "0" + local sqmautorate = luci.http.formvalue("cbid.sqm.%s.autorate" % intf) or "0" + local qosenabled = luci.http.formvalue("cbid.qos.%s.enabled" % intf) or "0" + local multipath = luci.http.formvalue("cbid.network.%s.multipath" % intf) or "on" + local lan = luci.http.formvalue("cbid.network.%s.lan" % intf) or "0" + local ttl = luci.http.formvalue("cbid.network.%s.ttl" % intf) or "" + if typeintf ~= "" then + if typeintf == "normal" then + typeintf = "" + end + ucic:set("network",intf,"type",typeintf) + end + if vlan ~= "" then + ifname = ifname .. '.' .. vlan + end + if typeintf == "macvlan" and masterintf ~= "" then + ucic:set("network",intf,"type","macvlan") + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","type","macvlan") + ucic:set("network",intf .. "_dev","ifname",masterintf) + ucic:set("network",intf .. "_dev","mode","vepa") + ucic:set("network",intf .. "_dev","name",intf) + ucic:set("network",intf,"device",intf) + ucic:set("network",intf,"masterintf",masterintf) + elseif typeintf == "" and ifname ~= "" and (proto == "static" or proto == "dhcp" or proto == "dhcpv6") then + ucic:set("network",intf,"device",ifname) + if uci_device_from_interface(intf) == "" then + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","name",ifname) + end + elseif typeintf == "" and device ~= "" and proto == "ncm" then + ucic:set("network",intf,"device",device_ncm) + if uci_device_from_interface(intf) == "" then + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","name",device_ncm) + end + elseif typeintf == "" and device ~= "" and proto == "qmi" then + ucic:set("network",intf,"device",device_qmi) + if uci_device_from_interface(intf) == "" then + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","name",device_qmi) + end + elseif typeintf == "" and device ~= "" and proto == "modemmanager" then + ucic:set("network",intf,"device",device_manager) + if uci_device_from_interface(intf) == "" then + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","name",device_manager) + end + elseif typeintf == "" and ifname ~= "" and proto == "static" then + ucic:set("network",intf,"device",ifname) + if uci_device_from_interface(intf) == "" then + ucic:set("network",intf .. "_dev","device") + ucic:set("network",intf .. "_dev","name",ifname) + end + end + if typeintf ~= "macvlan" then + if ucic:get("network",intf .. "_dev","type") == "macvlan" then + ucic:delete("network",intf .. "_dev","type") + ucic:delete("network",intf .. "_dev","mode") + ucic:delete("network",intf .. "_dev","ifname") + ucic:delete("network",intf .. "_dev","macaddr") + end + ucic:delete("network",intf,"masterintf") + end + if proto == "pppoe" then + ucic:set("network",intf,"pppd_options","persist maxfail 0") + end if proto ~= "other" then ucic:set("network",intf,"proto",proto) end - ucic:set("network",intf,"ipaddr",ipaddr) - ucic:set("network",intf,"netmask",netmask) - ucic:set("network",intf,"gateway",gateway) + + uci_device = uci_device_from_interface(intf) + if uci_device == "" then + uci_device = intf .. "_dev" + ucic:set("network",uci_device,"device") + end + ucic:set("network",uci_device,"ttl",ttl) + + ucic:set("network",intf,"apn",apn) + ucic:set("network",intf,"pincode",pincode) + ucic:set("network",intf,"delay",delay) + ucic:set("network",intf,"username",username) + ucic:set("network",intf,"password",password) + ucic:set("network",intf,"auth",auth) + ucic:set("network",intf,"mode",mode) + ucic:set("network",intf,"label",label) + ucic:set("network",intf,"ipv6",ipv6) + if lan == "1" then + ucic:set("network",intf,"multipath","off") + else + ucic:set("network",intf,"multipath",multipath) + ucic:set("openmptcprouter",intf,"multipath",multipath) + end + ucic:set("network",intf,"defaultroute",0) + ucic:set("network",intf,"peerdns",0) + ucic:set("network",intf,"delegate",0) + if ipaddr ~= "" then + ucic:set("network",intf,"ipaddr",ipaddr:gsub("%s+", "")) + ucic:set("network",intf,"netmask",netmask:gsub("%s+", "")) + ucic:set("network",intf,"gateway",gateway:gsub("%s+", "")) + else + ucic:set("network",intf,"ipaddr","") + ucic:set("network",intf,"netmask","") + ucic:set("network",intf,"gateway","") + end + if ip6addr ~= "" then + ucic:set("network",intf,"ip6addr",ip6addr:gsub("%s+", "")) + ucic:set("network",intf,"ip6gw",ip6gw:gsub("%s+", "")) + ucic:set("network",intf,"ipv6","1") + elseif proto ~= "static" and proto ~= "dhcp" and disableipv6 ~= "1" then + ucic:set("network",intf,"ip6addr","") + ucic:set("network",intf,"ip6gw","") + ucic:set("network",intf,"ipv6","1") + else + ucic:set("network",intf,"ip6addr","") + ucic:set("network",intf,"ip6gw","") + ucic:set("network",intf,"ipv6","0") + end + + if proto == "dhcpv6" then + ucic:set("network",intf,"reqaddress","try") + ucic:set("network",intf,"reqprefix","no") + ucic:set("network",intf,"iface_map","0") + ucic:set("network",intf,"iface_dslite","0") + ucic:set("network",intf,"iface_464xlate","0") + ucic:set("network",intf,"ipv6","1") + end + + ucic:delete("openmptcprouter",intf,"lc") + ucic:save("openmptcprouter") + + local multipathvpn = luci.http.formvalue("multipathvpn.%s.enabled" % intf) or "0" + ucic:set("openmptcprouter",intf,"multipathvpn",multipathvpn) + ucic:save("openmptcprouter") local downloadspeed = luci.http.formvalue("cbid.sqm.%s.download" % intf) or "0" local uploadspeed = luci.http.formvalue("cbid.sqm.%s.upload" % intf) or "0" + local testspeed = luci.http.formvalue("cbid.sqm.%s.testspeed" % intf) or "0" - if not ucic:get("qos",intf) ~= "" then + local qos_settings = ucic:get("qos",intf) or "" + if qos_settings == "" then ucic:set("qos",intf,"interface") ucic:set("qos",intf,"classgroup","Default") ucic:set("qos",intf,"enabled","0") @@ -201,50 +438,94 @@ function wizard_add() ucic:set("qos",intf,"download","100000") end - if not ucic:get("sqm",intf) ~= "" then + local sqm_settings = ucic:get("sqm",intf) or "" + if sqm_settings == "" then local defif = get_device(intf) if defif == "" then - defif = ucic:get("network",intf,"ifname") or "" + defif = ucic:get("network",intf,"device") or "" + if defif == "" then + defif = ucic:get("network",intf,"ifname") or "" + end end ucic:set("sqm",intf,"queue") ucic:set("sqm",intf,"interface",defif) - ucic:set("sqm",intf,"qdisc","fq_codel") - ucic:set("sqm",intf,"script","simple.qos") + ucic:set("sqm",intf,"qdisc","cake") + ucic:set("sqm",intf,"script","piece_of_cake.qos") ucic:set("sqm",intf,"qdisc_advanced","0") - ucic:set("sqm",intf,"linklayer","none") + ucic:set("sqm",intf,"linklayer","atm") + ucic:set("sqm",intf,"overhead","44") ucic:set("sqm",intf,"enabled","0") ucic:set("sqm",intf,"debug_logging","0") ucic:set("sqm",intf,"verbosity","5") ucic:set("sqm",intf,"download","0") ucic:set("sqm",intf,"upload","0") + ucic:set("sqm",intf,"iqdisc_opts","autorate-ingress") + --ucic:set("sqm",intf,"iqdisc_opts","autorate-ingress dual-dsthost") + --ucic:set("sqm",intf,"eqdisc_opts","dual-srchost") + end + ucic:set("sqm",intf,"autorate",sqmautorate) + + if sqmautorate == "1" then + ucic:set("sqm",intf,"qdisc","cake") + ucic:set("sqm",intf,"script","piece_of_cake.qos") + end + ucic:set("openmptcprouter",intf,"testspeed",testspeed) + if testspeed == "1" then + ucic:delete("openmptcprouter",intf,"testspeed_lc") + end + if downloadspeed ~= "0" and downloadspeed ~= "" then + if sqmautorate == "1" and (ucic:get("network",intf,"downloadspeed") ~= downloadspeed or ucic:get("sqm",intf,"max_download") == "" or ucic:get("sqm",intf,"download") == "0") then + ucic:set("sqm",intf,"download",math.ceil(downloadspeed*65/100)) + ucic:set("sqm",intf,"min_download",math.ceil(downloadspeed*10/100)) + ucic:set("sqm",intf,"max_download",downloadspeed) + elseif sqmautorate ~= "1" then + ucic:set("sqm",intf,"download",math.ceil(downloadspeed*95/100)) + end + ucic:set("network",intf,"downloadspeed",downloadspeed) + ucic:set("qos",intf,"download",math.ceil(downloadspeed*95/100)) + downloadmax = downloadmax + tonumber(downloadspeed) + else + ucic:delete("network",intf,"downloadspeed") + ucic:set("sqm",intf,"download","0") + ucic:set("qos",intf,"download","0") + end + if uploadspeed ~= "0" and uploadspeed ~= "" then + if sqmautorate == "1" and (ucic:get("network",intf,"uploadspeed") ~= uploadspeed or ucic:get("sqm",intf,"max_upload") == "" or ucic:get("sqm",intf,"upload") == "0") then + ucic:set("sqm",intf,"upload",math.ceil(uploadspeed*65/100)) + ucic:set("sqm",intf,"min_upload",math.ceil(uploadspeed*10/100)) + ucic:set("sqm",intf,"max_upload",uploadspeed) + elseif sqmautorate ~= "1" then + ucic:set("sqm",intf,"upload",math.ceil(uploadspeed*95/100)) + end + ucic:set("network",intf,"uploadspeed",uploadspeed) + ucic:set("qos",intf,"upload",math.ceil(uploadspeed*95/100)) + uploadmax = uploadmax + tonumber(uploadspeed) + else + ucic:delete("network",intf,"uploadspeed") + ucic:set("sqm",intf,"upload","0") + ucic:set("qos",intf,"upload","0") end - if downloadspeed ~= "0" and uploadspeed ~= "0" then - ucic:set("network",intf,"downloadspeed",downloadspeed) - ucic:set("network",intf,"uploadspeed",uploadspeed) - ucic:set("sqm",intf,"download",math.ceil(downloadspeed*95/100)) - ucic:set("sqm",intf,"upload",math.ceil(uploadspeed*95/100)) - if sqmenabled == "1" then - ucic:set("sqm",intf,"enabled","1") - else - ucic:set("sqm",intf,"enabled","0") - end - ucic:set("qos",intf,"download",math.ceil(downloadspeed*95/100)) - ucic:set("qos",intf,"upload",math.ceil(uploadspeed*95/100)) - if sqmenabled == "1" then - ucic:set("qos",intf,"enabled","1") - else - ucic:set("qos",intf,"enabled","0") - end + if sqmenabled == "1" then + ucic:set("sqm",intf,"iqdisc_opts","autorate-ingress") + --ucic:set("sqm",intf,"iqdisc_opts","autorate-ingress dual-dsthost") + --ucic:set("sqm",intf,"eqdisc_opts","dual-srchost") + ucic:set("sqm",intf,"enabled","1") else - ucic:set("sqm",intf,"download","0") - ucic:set("sqm",intf,"upload","0") ucic:set("sqm",intf,"enabled","0") - ucic:set("qos",intf,"download","0") - ucic:set("qos",intf,"upload","0") + end + if qosenabled == "1" then + ucic:set("qos",intf,"enabled","1") + else ucic:set("qos",intf,"enabled","0") end end + -- Disable multipath on LAN, VPN and loopback + ucic:set("network","loopback","multipath","off") + ucic:set("network","lan","multipath","off") + ucic:set("network","omr6in4","multipath","off") + ucic:set("network","omrvpn","multipath","off") + ucic:save("sqm") ucic:commit("sqm") ucic:save("qos") @@ -252,9 +533,10 @@ function wizard_add() ucic:save("network") ucic:commit("network") - -- Enable/disable IPv6 - local disable_ipv6 = luci.http.formvalue("enableipv6") or "1" - set_ipv6_state(disable_ipv6) + --local ut = require "luci.util" + --local result = ut.ubus("openmptcprouter", "set_ipv6_state", { disable_ipv6 = disableipv6 }) + local ula = luci.http.formvalue("ula") or "" + ucic:set("network","globals","ula_prefix",ula) -- Get VPN set by default local default_vpn = luci.http.formvalue("default_vpn") or "glorytun_tcp" @@ -263,51 +545,254 @@ function wizard_add() if default_vpn:match("^glorytun.*") then vpn_port = 65001 vpn_intf = "tun0" - ucic:set("network","omrvpn","proto","dhcp") + --ucic:set("network","omrvpn","proto","dhcp") + ucic:set("network","omrvpn","proto","none") elseif default_vpn == "mlvpn" then vpn_port = 65201 vpn_intf = "mlvpn0" ucic:set("network","omrvpn","proto","dhcp") + elseif default_vpn == "ubond" then + vpn_port = 65251 + vpn_intf = "ubond0" + ucic:set("network","omrvpn","proto","dhcp") + elseif default_vpn == "dsvpn" then + vpn_port = 65011 + vpn_intf = "tun0" + ucic:set("network","omrvpn","proto","none") elseif default_vpn == "openvpn" then vpn_port = 65301 vpn_intf = "tun0" ucic:set("network","omrvpn","proto","dhcp") + elseif default_vpn == "openvpn_bonding" then + vpn_intf = "bonding-omrvpn" + ucic:set("network","omrvpn","proto","bonding") end + --if downloadmax ~= 0 and uploadmax ~= 0 then + -- ucic:set("sqm","omrvpn","enabled","1") + -- ucic:set("sqm","omrvpn","max_download",downloadmax) + -- ucic:set("sqm","omrvpn","max_upload",uploadmax) + -- ucic:set("sqm","omrvpn","download",math.ceil(downloadmax*50/100)) + -- ucic:set("sqm","omrvpn","min_download",math.ceil(downloadmax*8/100)) + -- ucic:set("sqm","omrvpn","upload",math.ceil(uploadmax*50/100)) + -- ucic:set("sqm","omrvpn","min_upload",math.ceil(uploadmax*8/100)) + --else + -- ucic:set("sqm","omrvpn","enabled","0") + --end + + ucic:set("sqm","omrvpn","enabled","0") + ucic:set("sqm","omrvpn","download","0") + ucic:set("sqm","omrvpn","upload","0") + if vpn_intf ~= "" then - ucic:set("network","omrvpn","ifname",vpn_intf) + ucic:set("network","omrvpn","device",vpn_intf) + ucic:set("sqm","omrvpn","interface",vpn_intf) ucic:save("network") ucic:commit("network") + ucic:save("sqm") + ucic:commit("sqm") end + local force_retrieve = luci.http.formvalue("forceretrieve") or "" -- Retrieve all server settings local serversnb = 0 + local disablednb = 0 local servers = luci.http.formvaluetable("server") for server, _ in pairs(servers) do - local server_ip = luci.http.formvalue("%s.server_ip" % server) or "" + local serverips = luci.http.formvaluetable("%s.serverip" % server) or {} + local aserverips = {} + for _, ip in pairs(serverips) do + if ip ~= "" and ip ~= nil then + table.insert(aserverips,ip) + end + end + if disableipv6 == "1" then + if table.getn(aserverips) == 2 then + table.remove(aserverips, 2) + end + end + local master = luci.http.formvalue("master") or "" -- OpenMPTCProuter VPS local openmptcprouter_vps_key = luci.http.formvalue("%s.openmptcprouter_vps_key" % server) or "" - ucic:set("openmptcprouter",server,"server") - ucic:set("openmptcprouter",server,"username","openmptcprouter") - ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key) + local openmptcprouter_vps_username = luci.http.formvalue("%s.openmptcprouter_vps_username" % server) or "" + local openmptcprouter_vps_disabled = luci.http.formvalue("%s.openmptcprouter_vps_disabled" % server) or "" if master == server or (master == "" and serversnb == 0) then - ucic:set("openmptcprouter",server,"get_config","1") + if ucic:get("openmptcprouter",server,"password") == "" or ucic:get("openmptcprouter",server,"password") ~= openmptcprouter_vps_key or ucic:get("openmptcprouter",server,"username") ~= openmptcprouter_vps_username or force_retrieve ~= "" then + ucic:set("openmptcprouter",server,"get_config","1") + end ucic:set("openmptcprouter",server,"master","1") + ucic:set("openmptcprouter",server,"current","1") ucic:set("openmptcprouter",server,"backup","0") + ucic:set("xray","omrout","s_shadowsocks_email",openmptcprouter_vps_username:gsub("%s+", "")) else ucic:set("openmptcprouter",server,"get_config","0") ucic:set("openmptcprouter",server,"master","0") + ucic:set("openmptcprouter",server,"current","0") ucic:set("openmptcprouter",server,"backup","1") end - ucic:set("openmptcprouter",server,"ip",server_ip) - ucic:set("openmptcprouter",server,"port","65500") - ucic:save("openmptcprouter") - if server_ip ~= "" then + if openmptcprouter_vps_disabled == "1" then + disablednb = disablednb + 1 + end + if next(aserverips) ~= nil then serversnb = serversnb + 1 end + ucic:set("openmptcprouter",server,"server") + ucic:set("openmptcprouter",server,"username",openmptcprouter_vps_username:gsub("%s+", "")) + ucic:set("openmptcprouter",server,"password",openmptcprouter_vps_key:gsub("%s+", "")) + ucic:set("openmptcprouter",server,"disabled",openmptcprouter_vps_disabled) + if ucic:get_list("openmptcprouter",server,"ip") ~= aserverips then + ucic:set_list("openmptcprouter",server,"ip",aserverips) + if ucic:get("openmptcprouter",server,"master") == "1" then + ucic:set("openmptcprouter",server,"get_config","1") + end + end + ucic:set("openmptcprouter",server,"port","65500") + ucic:set("openmptcprouter",server,"set_firewall","1") + ucic:delete("openmptcprouter",server,"detected_ss_ipv4") + ucic:delete("openmptcprouter",server,"detected_ss_ipv6") + ucic:delete("openmptcprouter",server,"detected_public_ipv4") + ucic:delete("openmptcprouter",server,"detected_public_ipv6") + ucic:save("openmptcprouter") end + -- Get VPN used for MPTCP over VPN + local mptcpovervpn_vpn = luci.http.formvalue("mptcpovervpn_vpn") or "wireguard" + ucic:set("openmptcprouter","settings","mptcpovervpn",mptcpovervpn_vpn) + ucic:save("openmptcprouter") + + -- Get Country + local country = luci.http.formvalue("country") or "world" + ucic:set("openmptcprouter","settings","country",country) + ucic:save("openmptcprouter") + + -- Get DNS64 + local dns64 = luci.http.formvalue("dns64") or "0" + ucic:set("openmptcprouter","settings","dns64",dns64) + ucic:save("openmptcprouter") + if dns64 == "1" then + ucic:set("unbound","ub_main","dns64","1") + ucic:set("unbound","ub_main","validator","0") + else + ucic:set("unbound","ub_main","dns64","0") + + end + ucic:save("unbound") + ucic:commit("unbound") + + -- Get Proxy set by default + local default_proxy = luci.http.formvalue("default_proxy") or "shadowsocks-rust" + if default_proxy == "shadowsocks" and serversnb > 0 and serversnb > disablednb then + --ucic:set("shadowsocks-libev","sss0","disabled","0") + ucic:set("v2ray","main","enabled","0") + ucic:set("xray","main","enabled","0") + ucic:foreach("shadowsocks-libev", "server", function(s) + local sectionname = s[".name"] + if sectionname:match("^sss.*") and ucic:get("shadowsocks-libev",sectionname,"server") ~= "" then + ucic:set("shadowsocks-libev",sectionname,"disabled","0") + end + end) + ucic:foreach("shadowsocks-rust", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-rust",sectionname,"disabled","1") + end) + elseif default_proxy == "shadowsocks-rust" and serversnb > 0 and serversnb > disablednb then + --ucic:set("shadowsocks-libev","sss0","disabled","0") + ucic:set("v2ray","main","enabled","0") + ucic:set("xray","main","enabled","0") + ucic:foreach("shadowsocks-rust", "server", function(s) + local sectionname = s[".name"] + if sectionname:match("^sss.*") and ucic:get("shadowsocks-rust",sectionname,"server") ~= "" then + ucic:set("shadowsocks-rust",sectionname,"disabled","0") + end + end) + ucic:foreach("shadowsocks-libev", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-libev",sectionname,"disabled","1") + end) + elseif (default_proxy == "v2ray" or default_proxy == "v2ray-vmess" or default_proxy == "v2ray-trojan" or default_proxy == "v2ray-socks") and serversnb > 0 and serversnb > disablednb then + --ucic:set("shadowsocks-libev","sss0","disabled","1") + ucic:set("xray","main","enabled","0") + ucic:set("v2ray","main","enabled","1") + if default_proxy == "v2ray" then + ucic:set("v2ray","omrout","protocol","vless") + elseif default_proxy == "v2ray-vmess" then + ucic:set("v2ray","omrout","protocol","vmess") + elseif default_proxy == "v2ray-trojan" then + ucic:set("v2ray","omrout","protocol","trojan") + elseif default_proxy == "v2ray-socks" then + ucic:set("v2ray","omrout","protocol","socks") + end + ucic:foreach("shadowsocks-libev", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-libev",sectionname,"disabled","1") + end) + ucic:foreach("shadowsocks-rust", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-rust",sectionname,"disabled","1") + end) + elseif (default_proxy == "xray" or default_proxy == "xray-vless-reality" or default_proxy == "xray-vmess" or default_proxy == "xray-trojan" or default_proxy == "xray-shadowsocks" or default_proxy == "xray-socks") and serversnb > 0 and serversnb > disablednb then + --ucic:set("shadowsocks-libev","sss0","disabled","1") + ucic:set("v2ray","main","enabled","0") + ucic:set("xray","main","enabled","1") + if default_proxy == "xray" then + ucic:set("xray","omrout","protocol","vless") + elseif default_proxy == "xray-vless-reality" then + ucic:set("xray","omrout","protocol","vless-reality") + elseif default_proxy == "xray-vmess" then + ucic:set("xray","omrout","protocol","vmess") + elseif default_proxy == "xray-trojan" then + ucic:set("xray","omrout","protocol","trojan") + elseif default_proxy == "xray-socks" then + ucic:set("xray","omrout","protocol","socks") + elseif default_proxy == "xray-shadowsocks" then + ucic:set("xray","omrout","protocol","shadowsocks") + end + ucic:foreach("shadowsocks-libev", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-libev",sectionname,"disabled","1") + end) + ucic:foreach("shadowsocks-rust", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-rust",sectionname,"disabled","1") + end) + else + --ucic:set("shadowsocks-libev","sss0","disabled","1") + ucic:set("v2ray","main","enabled","0") + ucic:set("xray","main","enabled","0") + ucic:foreach("shadowsocks-libev", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-libev",sectionname,"disabled","1") + end) + ucic:foreach("shadowsocks-rust", "server", function(s) + local sectionname = s[".name"] + ucic:set("shadowsocks-rust",sectionname,"disabled","1") + end) + end + ucic:set("openmptcprouter","settings","proxy",default_proxy) + ucic:save("openmptcprouter") + ucic:save("shadowsocks-libev") + ucic:save("shadowsocks-rust") + ucic:save("v2ray") + ucic:save("xray") + + ucic:foreach("shadowsocks-libev","server", function(s) + local sectionname = s[".name"] + if sectionname:match("^sss.*") then + ucic:delete("shadowsocks-libev",sectionname,"ip") + ucic:set("shadowsocks-libev",sectionname,"disabled","1") + ucic:delete("openmptcprouter","omr","ss_" .. sectionname) + end + end) + ucic:foreach("shadowsocks-rust","server", function(s) + local sectionname = s[".name"] + if sectionname:match("^sss.*") then + ucic:delete("shadowsocks-rust",sectionname,"ip") + ucic:set("shadowsocks-rust",sectionname,"disabled","1") + ucic:delete("openmptcprouter","omr","ss_" .. sectionname) + end + end) + local ss_servers_nginx = {} local ss_servers_ha = {} local vpn_servers = {} @@ -316,48 +801,126 @@ function wizard_add() for server, _ in pairs(servers) do local master = luci.http.formvalue("master") or "" - local server_ip = luci.http.formvalue("%s.server_ip" % server) or "" + local server_ips = luci.http.formvaluetable("%s.serverip" % server) or {} + local server_ip = "" + for _, ip in pairs(server_ips) do + if server_ip == "" and ip ~= "" and ip ~= nil then + server_ip=ip + end + end -- We have an IP, so set it everywhere - if server_ip ~= "" then + if server_ip ~= "" and server_ip ~= nil and luci.http.formvalue("%s.openmptcprouter_vps_disabled" % server) ~= "1" then -- Check if we have more than one IP, in this case use Nginx HA if serversnb > 1 then if master == server then ss_ip=server_ip - table.insert(ss_servers_nginx,server_ip .. ":65101 max_fails=2 fail_timeout=20s") - table.insert(ss_servers_ha,server_ip .. ":65101 check") - if vpn_port ~= "" then - table.insert(vpn_servers,server_ip .. ":" .. vpn_port .. " max_fails=2 fail_timeout=20s") + --ucic:set("shadowsocks-libev","sss0","server",server_ip) + ucic:set("glorytun","vpn","host",server_ip) + ucic:set("glorytun-udp","vpn","host",server_ip) + ucic:set("dsvpn","vpn","host",server_ip) + ucic:set("mlvpn","general","host",server_ip) + ucic:set("ubond","general","host",server_ip) + ucic:set("v2ray","omrout","s_vmess_address",server_ip) + ucic:set("v2ray","omrout","s_vless_address",server_ip) + ucic:set("v2ray","omrout","s_trojan_address",server_ip) + ucic:set("v2ray","omrout","s_socks_address",server_ip) + ucic:set("xray","omrout","s_vmess_address",server_ip) + ucic:set("xray","omrout","s_vless_address",server_ip) + ucic:set("xray","omrout","s_vless_reality_address",server_ip) + ucic:set("xray","omrout","s_trojan_address",server_ip) + ucic:set("xray","omrout","s_socks_address",server_ip) + ucic:set("xray","omrout","s_shadowsocks_address",server_ip) + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + luci.sys.call("uci -q del openvpn." .. sectionname .. ".remote") + luci.sys.call("uci -q add_list openvpn." .. sectionname .. ".remote=" .. server_ip) + end + end) + --luci.sys.call("uci -q del openvpn.omr.remote") + --luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) + ucic:set("qos","serverin","srchost",server_ip) + ucic:set("qos","serverout","dsthost",server_ip) + local nbip = 0 + for _, ssip in pairs(server_ips) do + ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip) + if default_proxy == "shadowsocks" and serversnb > disablednb and ssip ~= "" then + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") + end + ucic:set("shadowsocks-rust","sss" .. nbip,"server",ssip) + if default_proxy == "shadowsocks-rust" and serversnb > disablednb and ssip ~= "" then + ucic:set("shadowsocks-rust","sss" .. nbip,"disabled","0") + end + nbip = nbip + 1 + if disableipv6 == "1" and nbip > 0 then + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","1") + ucic:set("shadowsocks-rust","sss" .. nbip,"disabled","1") + break + end end - else - table.insert(ss_servers_nginx,server_ip .. ":65101 backup") - table.insert(ss_servers_ha,server_ip .. ":65101 backup") - if vpn_port ~= "" then - table.insert(vpn_servers,server_ip .. ":" .. vpn_port .. " backup") + if nbip == 1 then + --ucic:set("shadowsocks-libev","sss" .. nbip,"server",server_ip) + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","1") + ucic:set("shadowsocks-rust","sss" .. nbip,"disabled","1") end end k = k + 1 - ucic:set("nginx-ha","ShadowSocks","enable","1") - ucic:set("nginx-ha","VPN","enable","1") - ucic:set("nginx-ha","ShadowSocks","upstreams",ss_servers_nginx) - ucic:set("nginx-ha","VPN","upstreams",vpn_servers) + ucic:set("nginx-ha","ShadowSocks","enable","0") + ucic:set("nginx-ha","VPN","enable","0") ucic:set("haproxy-tcp","general","enable","0") - ucic:set("haproxy-tcp","general","upstreams",ss_servers_ha) - server_ip = "127.0.0.1" - --ucic:set("shadowsocks-libev","sss0","server",ss_ip) + ucic:set("openmptcprouter","settings","ha","1") else + ucic:set("openmptcprouter","settings","ha","0") ucic:set("nginx-ha","ShadowSocks","enable","0") ucic:set("nginx-ha","VPN","enable","0") --ucic:set("shadowsocks-libev","sss0","server",server_ip) - --ucic:set("openmptcprouter","vps","ip",server_ip) - --ucic:save("openmptcprouter") + ucic:set("glorytun","vpn","host",server_ip) + ucic:set("glorytun-udp","vpn","host",server_ip) + ucic:set("dsvpn","vpn","host",server_ip) + ucic:set("mlvpn","general","host",server_ip) + ucic:set("ubond","general","host",server_ip) + ucic:set("v2ray","omrout","s_vmess_address",server_ip) + ucic:set("v2ray","omrout","s_vless_address",server_ip) + ucic:set("v2ray","omrout","s_trojan_address",server_ip) + ucic:set("v2ray","omrout","s_socks_address",server_ip) + ucic:set("xray","omrout","s_vmess_address",server_ip) + ucic:set("xray","omrout","s_vless_address",server_ip) + ucic:set("xray","omrout","s_vless_reality_address",server_ip) + ucic:set("xray","omrout","s_trojan_address",server_ip) + ucic:set("xray","omrout","s_socks_address",server_ip) + ucic:set("xray","omrout","s_shadowsocks_address",server_ip) + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + luci.sys.call("uci -q del openvpn." .. sectionname .. ".remote") + luci.sys.call("uci -q add_list openvpn." .. sectionname .. ".remote=" .. server_ip) + end + end) + --luci.sys.call("uci -q del openvpn.omr.remote") + --luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) + ucic:set("qos","serverin","srchost",server_ip) + ucic:set("qos","serverout","dsthost",server_ip) + local nbip = 0 + for _, ssip in pairs(server_ips) do + ucic:set("shadowsocks-libev","sss" .. nbip,"server",ssip) + if default_proxy == "shadowsocks" and serversnb > disablednb and ssip ~= "" then + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","0") + end + ucic:set("shadowsocks-rust","sss" .. nbip,"server",ssip) + if default_proxy == "shadowsocks-rust" and serversnb > disablednb and ssip ~= "" then + ucic:set("shadowsocks-rust","sss" .. nbip,"disabled","0") + end + nbip = nbip + 1 + if disableipv6 == "1" and nbip > 0 then + break + end + end + if nbip == 1 then + -- ucic:set("shadowsocks-libev","sss" .. nbip,"server",server_ip) + ucic:set("shadowsocks-libev","sss" .. nbip,"disabled","1") + ucic:set("shadowsocks-rust","sss" .. nbip,"disabled","1") + end end - ucic:set("shadowsocks-libev","sss0","server",server_ip) - ucic:set("glorytun","vpn","host",server_ip) - ucic:set("mlvpn","general","host",server_ip) - luci.sys.call("uci -q del openvpn.omr.remote") - luci.sys.call("uci -q add_list openvpn.omr.remote=" .. server_ip) - ucic:set("qos","serverin","srchost",server_ip) - ucic:set("qos","serverout","dsthost",server_ip) end end @@ -366,35 +929,224 @@ function wizard_add() ucic:save("nginx-ha") ucic:commit("nginx-ha") ucic:save("openvpn") - ucic:commit("openvpn") + --ucic:commit("openvpn") ucic:save("mlvpn") - ucic:commit("mlvpn") + ucic:save("ubond") + ucic:save("v2ray") + ucic:save("xray") + --ucic:commit("mlvpn") + ucic:save("dsvpn") + --ucic:commit("dsvpn") ucic:save("glorytun") - ucic:commit("glorytun") + ucic:save("glorytun-udp") + --ucic:commit("glorytun") ucic:save("shadowsocks-libev") - ucic:commit("shadowsocks-libev") + ucic:save("shadowsocks-rust") + --ucic:commit("shadowsocks-libev") + local encryption = luci.http.formvalue("encryption") + if encryption == "none" then + ucic:set("openmptcprouter","settings","encryption","none") + ucic:set("shadowsocks-libev","sss0","method","none") + ucic:set("shadowsocks-libev","sss1","method","none") + ucic:set("shadowsocks-rust","sss0","method","none") + ucic:set("shadowsocks-rust","sss1","method","none") + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"cipher","none") + end + end) + --ucic:set("openvpn","omr","cipher","none") + ucic:set("mlvpn","general","cleartext_data","1") + ucic:set("v2ray","omrout","s_vmess_user_security","none") + ucic:set("v2ray","omrout","s_vless_user_security","none") + ucic:set("v2ray","omrout","s_trojan_user_security","none") + ucic:set("v2ray","omrout","s_socks_user_security","none") + ucic:set("xray","omrout","s_vmess_user_security","none") + ucic:set("xray","omrout","s_vless_user_security","none") + ucic:set("xray","omrout","s_vless_reality_user_security","none") + ucic:set("xray","omrout","s_trojan_user_security","none") + ucic:set("xray","omrout","s_socks_user_security","none") + --ucic:set("xray","omrout","s_shadowsocks_method","none") + ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-aes-256-gcm") + elseif encryption == "aes-256-gcm" then + ucic:set("openmptcprouter","settings","encryption","aes-256-gcm") + ucic:set("shadowsocks-libev","sss0","method","aes-256-gcm") + ucic:set("shadowsocks-libev","sss1","method","aes-256-gcm") + ucic:set("glorytun","vpn","chacha20","0") + ucic:set("glorytun-udp","vpn","chacha","0") + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"cipher","AES-256-GCM") + end + end) + --ucic:set("openvpn","omr","cipher","AES-256-GCM") + ucic:set("mlvpn","general","cleartext_data","0") + ucic:set("v2ray","omrout","s_vmess_user_security","aes-128-gcm") + ucic:set("v2ray","omrout","s_vless_user_security","aes-128-gcm") + ucic:set("v2ray","omrout","s_trojan_user_security","aes-128-gcm") + ucic:set("v2ray","omrout","s_socks_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vmess_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vless_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vless_reality_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_trojan_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_socks_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-aes-256-gcm") + ucic:set("shadowsocks-rust","sss0","method","2022-blake3-aes-256-gcm") + ucic:set("shadowsocks-rust","sss1","method","2022-blake3-aes-256-gcm") + elseif encryption == "aes-256-cfb" then + ucic:set("openmptcprouter","settings","encryption","aes-256-cfb") + ucic:set("shadowsocks-libev","sss0","method","aes-256-cfb") + ucic:set("shadowsocks-libev","sss1","method","aes-256-cfb") + ucic:set("glorytun","vpn","chacha20","0") + ucic:set("glorytun-udp","vpn","chacha","0") + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"cipher","AES-256-CFB") + end + end) + --ucic:set("openvpn","omr","cipher","AES-256-CFB") + ucic:set("mlvpn","general","cleartext_data","0") + ucic:set("v2ray","omrout","s_vmess_user_security","aes-128-gcm") + ucic:set("v2ray","omrout","s_vless_user_security","aes-128-gcm") + ucic:set("v2ray","omrout","s_trojan_user_security","aes-128-gcm") + ucic:set("v2ray","omrout","s_socks_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vmess_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vless_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_vless_reality_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_trojan_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_socks_user_security","aes-128-gcm") + ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-aes-256-gcm") + ucic:set("shadowsocks-rust","sss0","method","2022-blake3-aes-256-gcm") + ucic:set("shadowsocks-rust","sss1","method","2022-blake3-aes-256-gcm") + elseif encryption == "chacha20-ietf-poly1305" then + ucic:set("openmptcprouter","settings","encryption","chacha20") + ucic:set("shadowsocks-libev","sss0","method","chacha20-ietf-poly1305") + ucic:set("shadowsocks-libev","sss1","method","chacha20-ietf-poly1305") + ucic:set("glorytun","vpn","chacha20","1") + ucic:set("glorytun-udp","vpn","chacha","1") + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"cipher","chacha20-poly1305") + end + end) + --ucic:set("openvpn","omr","cipher","chacha20-poly1305") + ucic:set("mlvpn","general","cleartext_data","0") + ucic:set("v2ray","omrout","s_vmess_user_security","chacha20-poly1305") + ucic:set("v2ray","omrout","s_vless_user_security","chacha20-poly1305") + ucic:set("v2ray","omrout","s_trojan_user_security","chacha20-poly1305") + ucic:set("v2ray","omrout","s_socks_user_security","chacha20-poly1305") + ucic:set("xray","omrout","s_vmess_user_security","chacha20-poly1305") + ucic:set("xray","omrout","s_vless_user_security","chacha20-poly1305") + ucic:set("xray","omrout","s_vless_reality_user_security","chacha20-poly1305") + ucic:set("xray","omrout","s_trojan_user_security","chacha20-poly1305") + ucic:set("xray","omrout","s_socks_user_security","chacha20-poly1305") + --ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-chacha20-poly1305") + ucic:set("xray","omrout","s_shadowsocks_method","2022-blake3-aes-256-gcm") + --ucic:set("shadowsocks-rust","sss0","method","2022-blake3-chacha20-poly1305") + --ucic:set("shadowsocks-rust","sss1","method","2022-blake3-chacha20-poly1305") + ucic:set("shadowsocks-rust","sss0","method","2022-blake3-aes-256-gcm") + ucic:set("shadowsocks-rust","sss1","method","2022-blake3-aes-256-gcm") + else + ucic:set("openmptcprouter","settings","encryption","other") + end + ucic:save("openvpn") + ucic:save("glorytun") + ucic:save("glorytun-udp") + ucic:save("shadowsocks-libev") + ucic:save("v2ray") + ucic:save("xray") + -- Set ShadowSocks settings local shadowsocks_key = luci.http.formvalue("shadowsocks_key") - local shadowsocks_disable = luci.http.formvalue("disableshadowsocks") or "0" + --local shadowsocks_disable = luci.http.formvalue("disableshadowsocks") or "0" + --if disablednb == serversnb then + -- shadowsocks_disable = 1 + --end if shadowsocks_key ~= "" then ucic:set("shadowsocks-libev","sss0","key",shadowsocks_key) - --ucic:set("shadowsocks-libev","sss0","method","chacha20") + ucic:set("shadowsocks-libev","sss1","key",shadowsocks_key) + --ucic:set("shadowsocks-libev","sss0","method","chacha20-ietf-poly1305") --ucic:set("shadowsocks-libev","sss0","server_port","65101") - ucic:set("shadowsocks-libev","sss0","disabled",shadowsocks_disable) + --ucic:set("shadowsocks-libev","sss0","disabled",shadowsocks_disable) ucic:save("shadowsocks-libev") ucic:commit("shadowsocks-libev") + if shadowsocks_disable == "1" then + luci.sys.call("/etc/init.d/shadowsocks-libev rules_down >/dev/null 2>/dev/null") + end else + if serversnb == 0 then + ucic:set("shadowsocks-libev","sss0","disabled","1") + ucic:set("shadowsocks-libev","sss1","disabled","1") + end ucic:set("shadowsocks-libev","sss0","key","") - ucic:set("shadowsocks-libev","sss0","disabled",shadowsocks_disable) + ucic:set("shadowsocks-libev","sss1","key","") ucic:save("shadowsocks-libev") ucic:commit("shadowsocks-libev") - luci.sys.call("/etc/init.d/shadowsocks rules_down >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/shadowsocks-libev rules_down >/dev/null 2>/dev/null") + end + -- Set ShadowSocks 2022 settings + local shadowsocks2022_key = luci.http.formvalue("shadowsocks2022_key") + if shadowsocks2022_key ~= "" then + ucic:set("shadowsocks-rust","sss0","password",shadowsocks2022_key) + ucic:set("shadowsocks-rust","sss1","password",shadowsocks2022_key) + ucic:set("xray","omrout","s_shadowsocks_password",shadowsocks2022_key) + ucic:save("shadowsocks-rust") + ucic:commit("shadowsocks-rust") + if shadowsocks_disable == "1" then + luci.sys.call("/etc/init.d/shadowsocks-rust rules_down >/dev/null 2>/dev/null") + end + else + if serversnb == 0 then + ucic:set("shadowsocks-rust","sss0","disabled","1") + ucic:set("shadowsocks-rust","sss1","disabled","1") + end + ucic:set("shadowsocks-rust","sss0","password","") + ucic:set("shadowsocks-rust","sss1","password","") + ucic:set("xray","omrout","s_shadowsocks_password","") + ucic:save("shadowsocks-rust") + ucic:commit("shadowsocks-rust") + luci.sys.call("/etc/init.d/shadowsocks-rust rules_down >/dev/null 2>/dev/null") end + -- Enable/disable v2ray/xray udp + local v2rayudp = luci.http.formvalue("v2rayudp") or "0" + ucic:set("v2ray","main_transparent_proxy","redirect_udp",v2rayudp) + ucic:save("v2ray") + ucic:commit("v2ray") + ucic:set("xray","main_transparent_proxy","redirect_udp",v2rayudp) + ucic:save("xray") + ucic:commit("xray") + + local v2ray_user = luci.http.formvalue("v2ray_user") + ucic:set("v2ray","omrout","s_vmess_user_id",v2ray_user) + ucic:set("v2ray","omrout","s_vless_user_id",v2ray_user) + ucic:set("v2ray","omrout","s_trojan_user_id",v2ray_user) + ucic:set("v2ray","omrout","s_socks_user_id",v2ray_user) + ucic:save("v2ray") + ucic:commit("v2ray") + local xray_user = luci.http.formvalue("xray_user") + ucic:set("xray","omrout","s_vmess_user_id",xray_user) + ucic:set("xray","omrout","s_vless_user_id",xray_user) + ucic:set("xray","omrout","s_vless_reality_user_id",xray_user) + ucic:set("xray","omrout","s_trojan_user_id",xray_user) + ucic:set("xray","omrout","s_socks_user_id",xray_user) + ucic:save("xray") + ucic:commit("xray") + + ucic:save("shadowsocks-libev") + ucic:commit("shadowsocks-libev") + ucic:save("shadowsocks-rust") + ucic:commit("shadowsocks-rust") + + -- Set Glorytun settings - if default_vpn:match("^glorytun.*") then + if default_vpn:match("glorytun_tcp") and disablednb ~= serversnb then ucic:set("glorytun","vpn","enable",1) else ucic:set("glorytun","vpn","enable",0) @@ -405,23 +1157,74 @@ function wizard_add() ucic:set("glorytun","vpn","port","65001") ucic:set("glorytun","vpn","key",glorytun_key) ucic:set("glorytun","vpn","mptcp",1) - ucic:set("glorytun","vpn","chacha20",1) - if default_vpn == "glorytun_udp" then - ucic:set("glorytun","vpn","proto","udp") - else + if default_vpn == "glorytun_tcp" then ucic:set("glorytun","vpn","proto","tcp") + ucic:set("glorytun","vpn","localip","10.255.255.2") + ucic:set("glorytun","vpn","remoteip","10.255.255.1") + ucic:set("network","omr6in4","ipaddr","10.255.255.2") + ucic:set("network","omr6in4","peeraddr","10.255.255.1") + ucic:set("network","omrvpn","proto","none") end else ucic:set("glorytun","vpn","key","") - ucic:set("glorytun","vpn","enable",0) + --ucic:set("glorytun","vpn","enable",0) ucic:set("glorytun","vpn","proto","tcp") end ucic:save("glorytun") ucic:commit("glorytun") + if default_vpn:match("glorytun_udp") and disablednb ~= serversnb then + ucic:set("glorytun-udp","vpn","enable",1) + else + ucic:set("glorytun-udp","vpn","enable",0) + end + + local glorytun_key = luci.http.formvalue("glorytun_key") + if glorytun_key ~= "" then + ucic:set("glorytun-udp","vpn","port","65001") + ucic:set("glorytun-udp","vpn","key",glorytun_key) + if default_vpn == "glorytun_udp" then + ucic:set("glorytun-udp","vpn","localip","10.255.254.2") + ucic:set("glorytun-udp","vpn","remoteip","10.255.254.1") + ucic:set("network","omr6in4","ipaddr","10.255.254.2") + ucic:set("network","omr6in4","peeraddr","10.255.254.1") + ucic:set("network","omrvpn","proto","none") + end + else + ucic:set("glorytun-udp","vpn","key","") + end + ucic:save("glorytun-udp") + ucic:commit("glorytun-udp") + + -- Set A Dead Simple VPN settings + if default_vpn == "dsvpn" and disablednb ~= serversnb then + ucic:set("dsvpn","vpn","enable",1) + else + ucic:set("dsvpn","vpn","enable",0) + end + + local dsvpn_key = luci.http.formvalue("dsvpn_key") + if dsvpn_key ~= "" then + ucic:set("dsvpn","vpn","port","65401") + ucic:set("dsvpn","vpn","key",dsvpn_key) + ucic:set("dsvpn","vpn","localip","10.255.251.2") + ucic:set("dsvpn","vpn","remoteip","10.255.251.1") + if default_vpn == "dsvpn" then + ucic:set("network","omr6in4","ipaddr","10.255.251.2") + ucic:set("network","omr6in4","peeraddr","10.255.251.1") + ucic:set("network","omrvpn","proto","none") + end + else + ucic:set("dsvpn","vpn","key","") + --ucic:set("dsvpn","vpn","enable",0) + end + ucic:save("dsvpn") + ucic:commit("dsvpn") + -- Set MLVPN settings - if default_vpn == "mlvpn" then + if default_vpn == "mlvpn" and disablednb ~= serversnb then ucic:set("mlvpn","general","enable",1) + ucic:set("network","omrvpn","proto","dhcp") else ucic:set("mlvpn","general","enable",0) end @@ -438,40 +1241,72 @@ function wizard_add() ucic:save("mlvpn") ucic:commit("mlvpn") - -- Set OpenVPN settings - local openvpn_key = luci.http.formvalue("openvpn_key") - if openvpn_key ~= "" then - local openvpn_key_path = "/etc/luci-uploads/openvpn.key" - local fp - luci.http.setfilehandler( - function(meta, chunk, eof) - if not fp and meta and meta.name == "openvpn_key" then - fp = io.open(openvpn_key_path, "w") - end - if fp and chunk then - fp:write(chunk) - end - if fp and eof then - fp:close() - end - end) - ucic:set("openvpn","omr","secret",openvpn_key_path) + -- Set UBOND settings + if default_vpn == "ubond" and disablednb ~= serversnb then + ucic:set("ubond","general","enable",1) + ucic:set("network","omrvpn","proto","dhcp") + else + ucic:set("ubond","general","enable",0) end - if default_vpn == "openvpn" then - ucic:set("openvpn","omr","enabled",1) + local ubond_password = luci.http.formvalue("ubond_password") + if ubond_password ~= "" then + ucic:set("ubond","general","password",ubond_password) + ucic:set("ubond","general","firstport","65251") + ucic:set("ubond","general","interface_name","ubond0") else - ucic:set("openvpn","omr","enabled",0) + --ucic:set("ubond","general","enable",0) + ucic:set("ubond","general","password","") + end + ucic:save("ubond") + ucic:commit("ubond") + + if default_vpn == "openvpn" and disablednb ~= serversnb then + if ucic:get("openmptcprouter","settings","openvpn_lb") == "0" then + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"enabled",0) + ucic:set("network",sectionname,"proto","none") + end + end) + ucic:set("openvpn","omr","enabled",1) + else + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:set("openvpn",sectionname,"enabled",1) + ucic:set("network",sectionname,"proto","none") + end + end) + --ucic:set("openvpn","omr","enabled",1) + end + --ucic:set("network","omrvpn","proto","none") + else + ucic:foreach("openvpn","openvpn", function(s) + local sectionname = s[".name"] + if sectionname:match("^omr.*") then + ucic:delete("openvpn",sectionname,"enabled") + end + end) + --ucic:delete("openvpn","omr","enabled") end ucic:save("openvpn") ucic:commit("openvpn") + ucic:save("v2ray") + ucic:commit("v2ray") + ucic:save("xray") + ucic:commit("xray") + + ucic:save("network") + ucic:commit("network") + -- OpenMPTCProuter VPS --local openmptcprouter_vps_key = luci.http.formvalue("openmptcprouter_vps_key") or "" --ucic:set("openmptcprouter","vps","username","openmptcprouter") --ucic:set("openmptcprouter","vps","password",openmptcprouter_vps_key) --ucic:set("openmptcprouter","vps","get_config","1") - local shadowsocks_disable = luci.http.formvalue("disableshadowsocks") or "0" ucic:set("openmptcprouter","settings","shadowsocks_disable",shadowsocks_disable) ucic:set("openmptcprouter","settings","vpn",default_vpn) ucic:delete("openmptcprouter","settings","master_lcintf") @@ -479,23 +1314,39 @@ function wizard_add() ucic:commit("openmptcprouter") -- Restart all - luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/mptcp restart >/dev/null 2>/dev/null") - if openmptcprouter_vps_key ~= "" then - luci.sys.call("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") - os.execute("sleep 2") - end - luci.sys.call("/etc/init.d/shadowsocks restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/glorytun restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/mlvpn restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/openvpn restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/omr-tracker restart >/dev/null 2>/dev/null") - luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") + menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter" if gostatus == true then - luci.http.redirect(luci.dispatcher.build_url("admin/system/openmptcprouter/status")) + --luci.sys.call("/etc/init.d/macvlan restart >/dev/null 2>/dev/null") + luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null") + luci.sys.call("ip addr flush dev tun0 >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/omr-tracker stop >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/mptcp restart >/dev/null 2>/dev/null") + --if openmptcprouter_vps_key ~= "" then + -- luci.sys.call("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") + -- luci.sys.call("sleep 2") + --end + luci.sys.call("/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/shadowsocks-rust restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/glorytun restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/glorytun-udp restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/mlvpn restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/ubond restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/mptcpovervpn restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/openvpn restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/openvpnbonding restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/dsvpn restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/omr-tracker start >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/vnstat restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/v2ray restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/xray restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/sqm restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/omr-bypass restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/sqm-autorate restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/sysntpd restart >/dev/null 2>/dev/null") + luci.http.redirect(luci.dispatcher.build_url("admin/system/" .. menuentry:lower() .. "/status")) else - luci.http.redirect(luci.dispatcher.build_url("admin/system/openmptcprouter/wizard")) + luci.http.redirect(luci.dispatcher.build_url("admin/system/" .. menuentry:lower() .. "/wizard")) end return end @@ -505,8 +1356,10 @@ function settings_add() local servers = luci.http.formvaluetable("server") local redirect_ports = luci.http.formvaluetable("redirect_ports") for server, _ in pairs(servers) do - local value = luci.http.formvalue("redirect_ports.%s" % server) or "0" - ucic:set("openmptcprouter",server,"redirect_ports",value) + local redirectports = luci.http.formvalue("redirect_ports.%s" % server) or "0" + ucic:set("openmptcprouter",server,"redirect_ports",redirectports) + local nofwredirect = luci.http.formvalue("nofwredirect.%s" % server) or "0" + ucic:set("openmptcprouter",server,"nofwredirect",nofwredirect) end -- Set tcp_keepalive_time @@ -523,34 +1376,182 @@ function settings_add() local tcp_syn_retries = luci.http.formvalue("tcp_syn_retries") luci.sys.exec("sysctl -w net.ipv4.tcp_syn_retries=%s" % tcp_syn_retries) luci.sys.exec("sed -i 's:^net.ipv4.tcp_syn_retries=[0-9]*:net.ipv4.tcp_syn_retries=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_syn_retries) - + + -- Set tcp_retries1 + local tcp_retries1 = luci.http.formvalue("tcp_retries1") + luci.sys.exec("sysctl -w net.ipv4.tcp_retries1=%s" % tcp_retries1) + luci.sys.exec("sed -i 's:^net.ipv4.tcp_retries1=[0-9]*:net.ipv4.tcp_retries1=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_retries1) + + -- Set tcp_retries2 + local tcp_retries2 = luci.http.formvalue("tcp_retries2") + luci.sys.exec("sysctl -w net.ipv4.tcp_retries2=%s" % tcp_retries2) + luci.sys.exec("sed -i 's:^net.ipv4.tcp_retries2=[0-9]*:net.ipv4.tcp_retries2=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_retries2) + + -- Set ip_default_ttl + local ip_default_ttl = luci.http.formvalue("ip_default_ttl") + luci.sys.exec("sysctl -w net.ipv4.ip_default_ttl=%s" % ip_default_ttl) + luci.sys.exec("sed -i 's:^net.ipv4.ip_default_ttl=[0-9]*:net.ipv4.ip_default_ttl=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % ip_default_ttl) + -- Set tcp_fastopen local tcp_fastopen = luci.http.formvalue("tcp_fastopen") + local disablefastopen = luci.http.formvalue("disablefastopen") or "0" + if disablefastopen == "1" then + tcp_fastopen = "0" + elseif tcp_fastopen == "0" and disablefastopen == "0" then + tcp_fastopen = "3" + end luci.sys.exec("sysctl -w net.ipv4.tcp_fastopen=%s" % tcp_fastopen) luci.sys.exec("sed -i 's:^net.ipv4.tcp_fastopen=[0-3]*:net.ipv4.tcp_fastopen=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % tcp_fastopen) + ucic:set("openmptcprouter", "settings","disable_fastopen", disablefastopen) -- Disable IPv6 local disable_ipv6 = luci.http.formvalue("enableipv6") or "1" - set_ipv6_state(disable_ipv6) + ucic:set("openmptcprouter","settings","disable_ipv6",disable_ipv6) + --local dump = require("luci.util").ubus("openmptcprouter", "disableipv6", { disable_ipv6 = tonumber(disable_ipv6)}) + + -- Disable 6in4 + local disable_6in4 = luci.http.formvalue("enable6in4") or "0" + ucic:set("openmptcprouter","settings","disable_6in4",disable_6in4) + + -- Disable ModemManager + local disable_modemmanager = luci.http.formvalue("disablemodemmanager") or "0" + ucic:set("openmptcprouter","settings","disable_modemmanager",disable_modemmanager) + if disable_modemmanager == "1" then + luci.sys.exec("/etc/init.d/modemmanager stop") + end -- Enable/disable external check local externalcheck = luci.http.formvalue("externalcheck") or "1" ucic:set("openmptcprouter","settings","external_check",externalcheck) - ucic:commit("openmptcprouter") + + -- Enable/disable OpenVPN multiple clients + local openvpnlb = luci.http.formvalue("openvpnlb") or "1" + if ucic:get("openmptcprouter","settings","openvpn_lb") ~= openvpnlb then + ucic:set("openmptcprouter","settings","openvpn_lb",openvpnlb) + ucic:foreach("openmptcprouter", "server", function(s) + local sectionname = s[".name"] + ucic:set("openmptcprouter",sectionname,"get_config","1") + end) + + end + + -- Enable/disable restrict proxy to LAN + local restricttolan = luci.http.formvalue("restricttolan") or "0" + ucic:set("openmptcprouter","settings","restrict_to_lan",restricttolan) + + -- Enable/disable debug + local debug = luci.http.formvalue("debug") or "0" + ucic:set("openmptcprouter","settings","debug",debug) + ucic:foreach("shadowsocks-libev", "ss_redir", function (section) + ucic:set("shadowsocks-libev",section[".name"],"verbose",debug) + end) + + -- Enable/disable vnstat backup + local savevnstat = luci.http.formvalue("savevnstat") or "0" + luci.sys.exec("uci -q set openmptcprouter.settings.vnstat_backup=%s" % savevnstat) + ucic:commit("vnstat") + + -- Enable/disable gateway ping + local disablegwping = luci.http.formvalue("disablegwping") or "0" + ucic:set("openmptcprouter","settings","disablegwping",disablegwping) + + -- VPS timeout + local status_vps_timeout = luci.http.formvalue("status_vps_timeout") or "1" + ucic:set("openmptcprouter","settings","status_vps_timeout",status_vps_timeout) + + -- IP timeout + local status_getip_timeout = luci.http.formvalue("status_getip_timeout") or "1" + ucic:set("openmptcprouter","settings","status_getip_timeout",status_getip_timeout) + + -- Whois timeout + local status_whois_timeout = luci.http.formvalue("status_whois_timeout") or "2" + ucic:set("openmptcprouter","settings","status_whois_timeout",status_whois_timeout) + + -- Enable/disable loop detection + local disableloopdetection = luci.http.formvalue("disableloopdetection") or "0" + ucic:set("openmptcprouter","settings","disableloopdetection",disableloopdetection) + + -- Enable/disable http test + local disableserverhttptest = luci.http.formvalue("disableserverhttptest") or "0" + ucic:set("openmptcprouter","settings","disableserverhttptest",disableserverhttptest) + + -- Enable/disable renaming intf + local disableintfrename = luci.http.formvalue("disableintfrename") or "0" + ucic:set("openmptcprouter","settings","disableintfrename",disableintfrename) + + -- Enable/disable default gateway + local disabledefaultgw = luci.http.formvalue("disabledefaultgw") or "1" + ucic:set("openmptcprouter","settings","defaultgw",disabledefaultgw) + + -- Enable/disable tracebox + local tracebox = luci.http.formvalue("disabletracebox") or "1" + ucic:set("openmptcprouter","settings","tracebox",tracebox) + + -- Enable/disable ModemManager + local modemmanager = luci.http.formvalue("disablemodemmanager") or "1" + ucic:set("openmptcprouter","settings","modemmanager",modemmanager) + + -- Enable/disable server ping + local disableserverping = luci.http.formvalue("disableserverping") or "0" + ucic:set("openmptcprouter","settings","disableserverping",disableserverping) + + -- Enable/disable multipath check + local disablemultipathtest = luci.http.formvalue("disablemultipathtest") or "0" + ucic:set("openmptcprouter","settings","disablemultipathtest",disablemultipathtest) + + -- Enable/disable shadowsocks udp + local shadowsocksudp = luci.http.formvalue("shadowsocksudp") or "0" + ucic:set("openmptcprouter","settings","shadowsocksudp",shadowsocksudp) + + -- Enable/disable v2ray/xray udp + local v2rayudp = luci.http.formvalue("v2rayudp") or "0" + ucic:set("v2ray","main_transparent_proxy","redirect_udp",v2rayudp) + ucic:save("v2ray") + ucic:commit("v2ray") + ucic:set("xray","main_transparent_proxy","redirect_udp",v2rayudp) + ucic:save("xray") + ucic:commit("xray") + + -- Enable/disable nDPI + local ndpi = luci.http.formvalue("ndpi") or "1" + ucic:set("openmptcprouter","settings","ndpi",ndpi) + + -- Enable/disable fast open + local disablefastopen = luci.http.formvalue("disablefastopen") or "0" + if disablefastopen == "0" then + fastopen = "1" + else + fastopen = "0" + end + ucic:foreach("shadowsocks-libev", "ss_redir", function (section) + ucic:set("shadowsocks-libev",section[".name"],"fast_open",fastopen) + end) + ucic:foreach("shadowsocks-libev", "ss_local", function (section) + ucic:set("shadowsocks-libev",section[".name"],"fast_open",fastopen) + end) + + -- Enable/disable no delay + local nodelay = luci.http.formvalue("enablenodelay") or "0" + ucic:set("openmptcprouter","settings","enable_nodelay",nodelay) + luci.sys.exec("sysctl -w net.ipv4.tcp_low_latency=%s" % nodelay) + luci.sys.exec("sed -i 's:^net.ipv4.tcp_low_latency=[0-9]*:net.ipv4.tcp_low_latency=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % nodelay) + ucic:foreach("shadowsocks-libev", "ss_redir", function (section) + ucic:set("shadowsocks-libev",section[".name"],"no_delay",nodelay) + end) + ucic:foreach("shadowsocks-libev", "ss_local", function (section) + ucic:set("shadowsocks-libev",section[".name"],"no_delay",nodelay) + end) + -- Enable/disable obfs local obfs = luci.http.formvalue("obfs") or "0" local obfs_plugin = luci.http.formvalue("obfs_plugin") or "v2ray" local obfs_type = luci.http.formvalue("obfs_type") or "http" - ucic:foreach("shadowsocks-libev", "ss_redir", function (section) + ucic:foreach("shadowsocks-libev", "server", function (section) ucic:set("shadowsocks-libev",section[".name"],"obfs",obfs) ucic:set("shadowsocks-libev",section[".name"],"obfs_plugin",obfs_plugin) ucic:set("shadowsocks-libev",section[".name"],"obfs_type",obfs_type) end) - ucic:set("shadowsocks-libev","tracker","obfs",obfs) - ucic:set("shadowsocks-libev","tracker","obfs_plugin",obfs_plugin) - ucic:set("shadowsocks-libev","tracker","obfs_type",obfs_type) - ucic:save("shadowsocks-libev") ucic:commit("shadowsocks-libev") @@ -576,14 +1577,27 @@ function settings_add() ucic:set("openmptcprouter","settings","scaling_governor",scaling_governor) end + -- Enable/disable Qualcomm Shortcut FE + local sfe_enabled = luci.http.formvalue("sfe_enabled") or "0" + ucic:set("openmptcprouter","settings","sfe_enabled",sfe_enabled) + local sfe_bridge = luci.http.formvalue("sfe_bridge") or "0" + ucic:set("openmptcprouter","settings","sfe_bridge",sfe_bridge) + + -- Enable/disable SIP ALG + local sipalg = luci.http.formvalue("sipalg") or "0" + ucic:set("openmptcprouter","settings","sipalg",sipalg) + ucic:save("openmptcprouter") ucic:commit("openmptcprouter") -- Apply all settings luci.sys.call("/etc/init.d/openmptcprouter restart >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/openmptcprouter-vps set_vps_firewall >/dev/null 2>/dev/null") + luci.sys.call("/etc/init.d/omr-6in4 restart >/dev/null 2>/dev/null") -- Done, redirect - luci.http.redirect(luci.dispatcher.build_url("admin/system/openmptcprouter/settings")) + menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter" + luci.http.redirect(luci.dispatcher.build_url("admin/system/" .. menuentry:lower() .. "/settings")) return end @@ -591,659 +1605,173 @@ function update_vps() -- Update VPS local update_vps = luci.http.formvalue("flash") or "" if update_vps ~= "" then - ucic:foreach("openmptcprouter", "server", function(s) - local serverip = ucic:get("openmptcprouter",s[".name"],"ip") - local adminport = ucic:get("openmptcprouter",s[".name"],"port") or "65500" - local token = ucic:get("openmptcprouter",s[".name"],"token") or "" - if token ~= "" then - sys.exec('curl -4 --max-time 20 -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ":" .. adminport .. "/update") - luci.sys.call("/etc/init.d/openmptcprouter-vps restart >/dev/null 2>/dev/null") - luci.http.redirect(luci.dispatcher.build_url("admin/system/openmptcprouter/status")) - return - end - end) + local ut = require "luci.util" + local result = ut.ubus("openmptcprouter", "updateVPS", {}) end + return end -function get_ip(interface) - local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) - local ip = "" - if dump and dump['ipv4-address'] then - local _, ipv4address - for _, ipv4address in ipairs(dump['ipv4-address']) do - ip = dump['ipv4-address'][_].address - end - end - if ip == "" then - local dump = require("luci.util").ubus("network.interface.%s_4" % interface, "status", {}) - if dump and dump['ipv4-address'] then - local _, ipv4address - for _, ipv4address in ipairs(dump['ipv4-address']) do - ip = dump['ipv4-address'][_].address +function backupgr() + local get_backup = luci.http.formvalue("restore") or "" + if get_backup ~= "" then + local dobackup = 0 + ucic:foreach("openmptcprouter","server", function(s) + servername = s[".name"] + local get_selected_backup = luci.http.formvalue(servername .. "") or "" + if get_selected_backup ~= "" then + dobackup = 1 + luci.sys.call("/etc/init.d/openmptcprouter-vps backup_get " .. servername .. " " .. get_selected_backup .. ">/dev/null 2>/dev/null") end + end) + if dobackup == 0 then + luci.sys.call("/etc/init.d/openmptcprouter-vps backup_get >/dev/null 2>/dev/null") end end - return ip + local send_backup = luci.http.formvalue("save") or "" + if send_backup ~= "" then + luci.sys.call("/etc/init.d/openmptcprouter-vps backup_send >/dev/null 2>/dev/null") + end + menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter" + luci.http.redirect(luci.dispatcher.build_url("admin/system/" .. menuentry:lower() .. "/backup")) + return end function get_device(interface) local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) - return dump['l3_device'] + if dump ~= nil then + if dump['l3_device'] ~= nil then + return dump['l3_device'] + elseif dump['device'] ~= nil then + return dump['device'] + else + return "" + end + else + return "" + end end -function get_gateway(interface) - local gateway = "" - local dump = nil +-- This function come from modules/luci-bbase/luasrc/tools/status.lua from old OpenWrt +-- Copyright 2011 Jo-Philipp Wich +-- Licensed to the public under the Apache License 2.0. +local function dhcp_leases_common(family) + local rv = { } + local nfs = require "nixio.fs" + local sys = require "luci.sys" + local leasefile = "/tmp/dhcp.leases" - dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {}) + ucic:foreach("dhcp", "dnsmasq", + function(s) + if s.leasefile and nfs.access(s.leasefile) then + leasefile = s.leasefile + return false + end + end) - if dump and dump.route then - local _, route - for _, route in ipairs(dump.route) do - if dump.route[_].target == "0.0.0.0" then - gateway = dump.route[_].nexthop - end - end - end - if gateway == "" then - if dump and dump.inactive and dump.inactive.route then - local _, route - for _, route in ipairs(dump.inactive.route) do - if dump.inactive.route[_].target == "0.0.0.0" then - gateway = dump.inactive.route[_].nexthop - end - end - end - end - - if gateway == "" then - dump = require("luci.util").ubus("network.interface.%s_4" % interface, "status", {}) - - if dump and dump.route then - local _, route - for _, route in ipairs(dump.route) do - if dump.route[_].target == "0.0.0.0" then - gateway = dump.route[_].nexthop - end - end - end - if gateway == "" then - if dump and dump.inactive and dump.inactive.route then - local _, route - for _, route in ipairs(dump.inactive.route) do - if dump.inactive.route[_].target == "0.0.0.0" then - gateway = dump.inactive.route[_].nexthop + local fd = io.open(leasefile, "r") + if fd then + while true do + local ln = fd:read("*l") + if not ln then + break + else + local ts, mac, ip, name, duid = ln:match("^(%d+) (%S+) (%S+) (%S+) (%S+)") + local expire = tonumber(ts) or 0 + if ts and mac and ip and name and duid then + if family == 4 and not ip:match(":") then + rv[#rv+1] = { + expires = (expire ~= 0) and os.difftime(expire, os.time()), + macaddr = ipc.checkmac(mac) or "00:00:00:00:00:00", + ipaddr = ip, + hostname = (name ~= "*") and name + } + elseif family == 6 and ip:match(":") then + rv[#rv+1] = { + expires = (expire ~= 0) and os.difftime(expire, os.time()), + ip6addr = ip, + duid = (duid ~= "*") and duid, + hostname = (name ~= "*") and name + } end end end end + fd:close() end - return gateway + + local lease6file = "/tmp/hosts/odhcpd" + ucic:foreach("dhcp", "odhcpd", + function(t) + if t.leasefile and nfs.access(t.leasefile) then + lease6file = t.leasefile + return false + end + end) + local fd = io.open(lease6file, "r") + if fd then + while true do + local ln = fd:read("*l") + if not ln then + break + else + local iface, duid, iaid, name, ts, id, length, ip = ln:match("^# (%S+) (%S+) (%S+) (%S+) (-?%d+) (%S+) (%S+) (.*)") + local expire = tonumber(ts) or 0 + if ip and iaid ~= "ipv4" and family == 6 then + rv[#rv+1] = { + expires = (expire >= 0) and os.difftime(expire, os.time()), + duid = duid, + ip6addr = ip, + hostname = (name ~= "-") and name + } + elseif ip and iaid == "ipv4" and family == 4 then + rv[#rv+1] = { + expires = (expire >= 0) and os.difftime(expire, os.time()), + macaddr = sys.net.duid_to_mac(duid) or "00:00:00:00:00:00", + ipaddr = ip, + hostname = (name ~= "-") and name + } + end + end + end + fd:close() + end + + if family == 6 then + local _, lease + local hosts = sys.net.host_hints() + for _, lease in ipairs(rv) do + local mac = sys.net.duid_to_mac(lease.duid) + local host = mac and hosts[mac] + if host then + if not lease.name then + lease.host_hint = host.name or host.ipv4 or host.ipv6 + elseif host.name and lease.hostname ~= host.name then + lease.host_hint = host.name + end + end + end + end + + return rv end --- This function come from OverTheBox by OVH with some changes --- Copyright 2015 OVH --- Simon Lelievre (simon.lelievre@corp.ovh.com) --- Sebastien Duponcheel --- Modified by Ycarus (Yannick Chabanois) --- Under GPL3+ function interfaces_status() - local ut = require "luci.util" - local ntm = require "luci.model.network".init() - local uci = require "luci.model.uci".cursor() + local ut = require "luci.util" + --local mArray = ut.ubus("openmptcprouter", "status", {}) or {_=0} + local mArray = luci.json.decode(ut.trim(sys.exec("/bin/ubus -t 600 -S call openmptcprouter status 2>/dev/null"))) - local mArray = {} - - -- OpenMPTCProuter info - mArray.openmptcprouter = {} - --mArray.openmptcprouter["version"] = ut.trim(sys.exec("cat /etc/os-release | grep VERSION= | sed -e 's:VERSION=::'")) - mArray.openmptcprouter["version"] = uci:get("openmptcprouter", "settings", "version") or ut.trim(sys.exec("cat /etc/os-release | grep VERSION= | sed -e 's:VERSION=::' -e 's/^.//' -e 's/.$//'")) - - mArray.openmptcprouter["latest_version_omr"] = uci:get("openmptcprouter", "latest_versions", "omr") or "" - mArray.openmptcprouter["latest_version_vps"] = uci:get("openmptcprouter", "latest_versions", "vps") or "" - - mArray.openmptcprouter["service_addr"] = uci:get("shadowsocks-libev", "sss0", "server") or "" - mArray.openmptcprouter["local_addr"] = uci:get("network", "lan", "ipaddr") - mArray.openmptcprouter["server_mptcp"] = "" - -- dns - mArray.openmptcprouter["dns"] = false - local dns_test = sys.exec("dig openmptcprouter.com | grep 'ANSWER: 0'") - if dns_test == "" then - mArray.openmptcprouter["dns"] = true - end - - mArray.openmptcprouter["ipv6"] = "disabled" - if uci:get("openmptcprouter","settings","disable_ipv6") ~= "1" then - mArray.openmptcprouter["ipv6"] = "enabled" - end - - mArray.openmptcprouter["ss_addr"] = "" - --mArray.openmptcprouter["ss_addr6"] = "" - mArray.openmptcprouter["wan_addr"] = "" - mArray.openmptcprouter["wan_addr6"] = "" - local tracker_ip = "" - if mArray.openmptcprouter["dns"] == true then - -- wanaddr - --mArray.openmptcprouter["wan_addr"] = uci:get("openmptcprouter","omr","public_detected_ipv4") or "" - - if uci:get("openmptcprouter","settings","external_check") ~= "0" then - mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("wget -4 -qO- -T 2 http://ip.openmptcprouter.com")) - if mArray.openmptcprouter["wan_addr"] == "" then - mArray.openmptcprouter["wan_addr"] = ut.trim(sys.exec("dig TXT +timeout=2 +short o-o.myaddr.l.google.com | awk -F'\"' '{print $2}'")) - end - if mArray.openmptcprouter["ipv6"] == "enabled" then - mArray.openmptcprouter["wan_addr6"] = uci:get("openmptcprouter","omr","public_detected_ipv6") or "" - if mArray.openmptcprouter["wan_addr6"] == "" then - mArray.openmptcprouter["wan_addr6"] = ut.trim(sys.exec("wget -6 -qO- -T 2 http://ipv6.openmptcprouter.com")) - end - end - mArray.openmptcprouter["external_check"] = true - else - mArray.openmptcprouter["external_check"] = false - end - -- shadowsocksaddr - mArray.openmptcprouter["ss_addr"] = uci:get("openmptcprouter","omr","detected_ss_ipv4") or "" - if mArray.openmptcprouter["ss_addr"] == "" then - tracker_ip = uci:get("shadowsocks-libev","tracker","local_address") or "" - if tracker_ip ~= "" then - local tracker_port = uci:get("shadowsocks-libev","tracker","local_port") - if uci:get("openmptcprouter","settings","external_check") ~= "0" then - mArray.openmptcprouter["ss_addr"] = ut.trim(sys.exec("curl -s -4 --socks5 " .. tracker_ip .. ":" .. tracker_port .. " -m 2 http://ip.openmptcprouter.com")) - --mArray.openmptcprouter["ss_addr6"] = sys.exec("curl -s -6 --socks5 " .. tracker_ip .. ":" .. tracker_port .. " -m 3 http://ipv6.openmptcprouter.com") - end + if mArray ~= nil and mArray.openmptcprouter ~= nil then + mArray.openmptcprouter["remote_addr"] = luci.http.getenv("REMOTE_ADDR") or "" + mArray.openmptcprouter["remote_from_lease"] = false + local leases=dhcp_leases_common(4) + for _, value in pairs(leases) do + if value["ipaddr"] == mArray.openmptcprouter["remote_addr"] then + mArray.openmptcprouter["remote_from_lease"] = true + mArray.openmptcprouter["remote_hostname"] = value["hostname"] end end end - mArray.openmptcprouter["remote_addr"] = luci.http.getenv("REMOTE_ADDR") or "" - mArray.openmptcprouter["remote_from_lease"] = false - local leases=tools.dhcp_leases() - for _, value in pairs(leases) do - if value["ipaddr"] == mArray.openmptcprouter["remote_addr"] then - mArray.openmptcprouter["remote_from_lease"] = true - mArray.openmptcprouter["remote_hostname"] = value["hostname"] - end - end - - if mArray.openmptcprouter["service_addr"] ~= "" and mArray.openmptcprouter["service_addr"] ~= "127.0.0.1" then - mArray.openmptcprouter["vps_status"] = "DOWN" - else - mArray.openmptcprouter["vps_status"] = "UP" - end - - mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "Not found" - -- Get VPS info - ucic:foreach("openmptcprouter", "server", function(s) - local serverip = uci:get("openmptcprouter",s[".name"],"ip") or "" - if serverip ~= "" then - mArray.openmptcprouter["vps_omr_version"] = uci:get("openmptcprouter", s[".name"], "omr_version") or "" - mArray.openmptcprouter["vps_kernel"] = uci:get("openmptcprouter",s[".name"],"kernel") or "" - mArray.openmptcprouter["vps_machine"] = uci:get("openmptcprouter",s[".name"],"machine") or "" - local adminport = uci:get("openmptcprouter",s[".name"],"port") or "65500" - local token = uci:get("openmptcprouter",s[".name"],"token") or "" - if token ~= "" then - local vpsinfo_json = sys.exec('curl -4 --max-time 2 -s -k -H "Authorization: Bearer ' .. token .. '" https://' .. serverip .. ':' .. adminport .. '/status') - if vpsinfo_json ~= "" and vpsinfo_json ~= nil then - local status, vpsinfo = pcall(function() - return json.decode(vpsinfo_json) - end) - if status and vpsinfo.vps ~= nil then - mArray.openmptcprouter["vps_loadavg"] = vpsinfo.vps.loadavg or "" - mArray.openmptcprouter["vps_uptime"] = vpsinfo.vps.uptime or "" - mArray.openmptcprouter["vps_mptcp"] = vpsinfo.vps.mptcp or "" - mArray.openmptcprouter["vps_admin"] = true - mArray.openmptcprouter["vps_status"] = "UP" - else - uci:set("openmptcprouter",s[".name"],"admin_error","1") - uci:delete("openmptcprouter",s[".name"],"token") - uci:save("openmptcprouter",s[".name"]) - uci:commit("openmptcprouter",s[".name"]) - mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "Answer error" - end - else - mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "No answer" - end - else - mArray.openmptcprouter["vps_admin"] = false - mArray.openmptcprouter["vps_admin_error_msg"] = "No token" - end - end - end) - - -- Check openmptcprouter service are running - mArray.openmptcprouter["tun_service"] = false - mArray.openmptcprouter["tun_state"] = "" - mArray.openmptcprouter["tun6_state"] = "" - if string.find(sys.exec("/usr/bin/pgrep '^(/usr/sbin/)?glorytun(-udp)?$'"), "%d+") or string.find(sys.exec("/usr/bin/pgrep '^(/usr/sbin/)?mlvpn?$'"), "%d+") or string.find(sys.exec("/usr/bin/pgrep '^(/usr/sbin/)?openvpn?$'"), "%d+") then - mArray.openmptcprouter["tun_service"] = true - mArray.openmptcprouter["tun_ip"] = get_ip("omrvpn") - local tun_dev = uci:get("network","omrvpn","ifname") - if tun_dev == "" then - tun_dev = get_device("omrvpn") - end - if tun_dev ~= "" then - local peer = get_gateway("omrvpn") - if peer == "" then - peer = ut.trim(sys.exec("ip -4 r list dev " .. tun_dev .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'")) - end - if peer ~= "" then - local tunnel_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 -I " .. tun_dev .. " " .. peer .. " | grep '100% packet loss'")) - if tunnel_ping_test == "" then - mArray.openmptcprouter["tun_state"] = "UP" - else - mArray.openmptcprouter["tun_state"] = "DOWN" - end - if mArray.openmptcprouter["ipv6"] == "enabled" then - local tunnel_ping6_test = ut.trim(sys.exec("ping6 -w 1 -c 1 fe80::a00:1%6in4-omr6in4 | grep '100% packet loss'")) - if tunnel_ping6_test == "" then - mArray.openmptcprouter["tun6_state"] = "UP" - else - mArray.openmptcprouter["tun6_state"] = "DOWN" - end - end - else - mArray.openmptcprouter["tun_state"] = "DOWN" - mArray.openmptcprouter["tun6_state"] = "DOWN" - end - end - end - - -- check Shadowsocks is running - mArray.openmptcprouter["socks_service"] = false - if string.find(sys.exec("/usr/bin/pgrep ss-redir"), "%d+") then - mArray.openmptcprouter["socks_service"] = true - end - - mArray.openmptcprouter["socks_service_enabled"] = true - local ss_server = uci:get("shadowsocks-libev","sss0","disabled") or "0" - if ss_server == "1" then - mArray.openmptcprouter["socks_service_enabled"] = false - end - local ss_key = uci:get("shadowsocks-libev","sss0","key") or "" - mArray.openmptcprouter["socks_service_method"] = uci:get("shadowsocks-libev","sss0","method") - if ss_key == "" then - mArray.openmptcprouter["socks_service_key"] = false - else - mArray.openmptcprouter["socks_service_key"] = true - end - - -- Add DHCP infos by parsing dnsmasq config file - mArray.openmptcprouter.dhcpd = {} - dnsmasq = ut.trim(sys.exec("cat /var/etc/dnsmasq.conf*")) - for itf, range_start, range_end, mask, leasetime in dnsmasq:gmatch("range=[%w,!:-]*set:(%w+),(%d+\.%d+\.%d+\.%d+),(%d+\.%d+\.%d+\.%d+),(%d+\.%d+\.%d+\.%d+),(%w+)") do - mArray.openmptcprouter.dhcpd[itf] = {} - mArray.openmptcprouter.dhcpd[itf].interface = itf - mArray.openmptcprouter.dhcpd[itf].range_start = range_start - mArray.openmptcprouter.dhcpd[itf].range_end = range_end - mArray.openmptcprouter.dhcpd[itf].netmask = mask - mArray.openmptcprouter.dhcpd[itf].leasetime = leasetime - mArray.openmptcprouter.dhcpd[itf].router = mArray.openmptcprouter["local_addr"] - mArray.openmptcprouter.dhcpd[itf].dns = mArray.openmptcprouter["local_addr"] - end - for itf, option, value in dnsmasq:gmatch("option=(%w+),([%w:-]+),(%d+\.%d+\.%d+\.%d+)") do - if mArray.openmptcprouter.dhcpd[itf] then - if option == "option:router" or option == "3" then - mArray.openmptcprouter.dhcpd[itf].router = value - end - if option == "option:dns-server" or option == "6" then - mArray.openmptcprouter.dhcpd[itf].dns = value - end - end - end - - -- Parse mptcp kernel info - local mptcp = {} - local fullmesh = ut.trim(sys.exec("cat /proc/net/mptcp_fullmesh")) - for ind, addressId, backup, ipaddr in fullmesh:gmatch("(%d+), (%d+), (%d+), (%d+\.%d+\.%d+\.%d+)") do - mptcp[ipaddr] = {} - mptcp[ipaddr].index = ind - mptcp[ipaddr].id = addressId - mptcp[ipaddr].backup= backup - mptcp[ipaddr].ipaddr= ipaddr - end - - -- retrieve core temperature - --mArray.openmptcprouter["core_temp"] = sys.exec("cat /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input 2>/dev/null"):match("%d+") - mArray.openmptcprouter["loadavg"] = sys.exec("cat /proc/loadavg 2>/dev/null"):match("[%d%.]+ [%d%.]+ [%d%.]+") - mArray.openmptcprouter["uptime"] = sys.exec("cat /proc/uptime 2>/dev/null"):match("[%d%.]+") - - -- overview status - mArray.wans = {} - mArray.tunnels = {} - allintf = {} - - uci:foreach("network", "interface", function (section) - local interface = section[".name"] - local net = ntm:get_network(interface) - local ipaddr = net:ipaddr() or "" - local gateway = section["gateway"] or "" - local multipath = section["multipath"] - local enabled = section["auto"] - - --if not ipaddr or not gateway then return end - -- Don't show if0 in the overview - --if interface == "lo" then return end - - local ifname = get_device(interface) - if ifname == "" then - ifname = section["ifname"] or "" - end - duplicateif = false - if ifname ~= "" and ifname ~= nil then - if allintf[ifname] then - connectivity = "ERROR" - duplicateif = true - else - allintf[ifname] = true - end - end - - --if multipath == "off" and not ifname:match("^tun.*") then return end - if multipath == "off" then return end - - if enabled == "0" then return end - - local connectivity - - if ifname ~= "" and ifname ~= nil then - if fs.access("/sys/class/net/" .. ifname) then - local multipath_state = ut.trim(sys.exec("multipath " .. ifname .. " | grep deactivated")) - if multipath_state == "" then - connectivity = "OK" - else - connectivity = "ERROR" - end - else - connectivity = "ERROR" - end - else - connectivity = "ERROR" - end - - if ipaddr == "" and ifname ~= nil then - ipaddr = ut.trim(sys.exec("ip -4 -br addr ls dev " .. ifname .. " | awk -F'[ /]+' '{print $3}' | tr -d '\n'")) - end - if ipaddr == "" and ifname ~= nil then - ipaddr = ut.trim(sys.exec("ip -4 addr show dev " .. ifname .. " | grep -m 1 inet | awk '{print $2}' | cut -d'/' -s -f1 | tr -d '\n'")) - end - if ipaddr == "" then - connectivity = "ERROR" - end - - -- Detect WAN gateway status - local gw_ping = "UP" - if gateway == "" then - gateway = get_gateway(interface) - end - if gateway == "" and ifname ~= nil then - if fs.access("/sys/class/net/" .. ifname) then - gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep kernel | awk '/proto kernel/ {print $1}' | grep -v / | tr -d '\n'")) - if gateway == "" then - gateway = ut.trim(sys.exec("ip -4 r list dev " .. ifname .. " | grep default | awk '{print $3}' | tr -d '\n'")) - end - end - end - if gateway ~= "" then - local gw_ping_test = ut.trim(sys.exec("ping -w 1 -c 1 " .. gateway .. " | grep '100% packet loss'")) - if gw_ping_test ~= "" then - gw_ping = "DOWN" - if connectivity == "OK" then - connectivity = "WARNING" - end - end - elseif gateway == "" then - gw_ping = "DOWN" - connectivity = "ERROR" - end - - local latency = "" - local server_ping = "" - if connectivity ~= "ERROR" and ifname ~= "" and gateway ~= "" and gw_ping ~= "DOWN" and ifname ~= nil and mArray.openmptcprouter["service_addr"] ~= "" then - local serverip = mArray.openmptcprouter["service_addr"] - if serverip == "127.0.0.1" then - serverip = mArray.openmptcprouter["wan_addr"] - end - if serverip ~= "" then - local server_ping_test = sys.exec("ping -w 1 -c 1 -I " .. ifname .. " " .. serverip) - local server_ping_result = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | grep '100% packet loss'")) - if server_ping_result ~= "" then - server_ping = "DOWN" - if connectivity == "OK" then - connectivity = "WARNING" - end - else - mArray.openmptcprouter["vps_status"] = "UP" - server_ping = "UP" - latency = ut.trim(sys.exec("echo '" .. server_ping_test .. "' | cut -d '/' -s -f5 | cut -d '.' -f1")) - end - end - end - - local multipath_available - if connectivity ~= "ERROR" and mArray.openmptcprouter["dns"] == true and ifname ~= nil and ifname ~= "" and gateway ~= "" and gw_ping == "UP" then - -- Test if multipath can work on the connection - local multipath_available_state = uci:get("openmptcprouter",interface,"mptcp_status") or "" - if multipath_available_state == "" then - --if mArray.openmptcprouter["service_addr"] ~= "" then - -- multipath_available_state = ut.trim(sys.exec("omr-tracebox-mptcp " .. mArray.openmptcprouter["service_addr"] .. " " .. ifname .. " | grep 'MPTCP disabled'")) - --else - multipath_available_state = ut.trim(sys.exec("omr-mptcp-intf " .. ifname .. " | grep 'Nay, Nay, Nay'")) - --end - else - multipath_available_state = ut.trim(sys.exec("echo '" .. multipath_available_state .. "' | grep 'MPTCP disabled'")) - end - if multipath_available_state == "" then - multipath_available = "OK" - else - multipath_available_state_wan = ut.trim(sys.exec("omr-mptcp-intf " .. ifname .. " | grep 'Nay, Nay, Nay'")) - if multipath_available_state_wan == "" then - multipath_available = "OK" - if mArray.openmptcprouter["service_addr"] ~= "" and mArray.openmptcprouter["service_addr"] ~= "127.0.0.1" then - mArray.openmptcprouter["server_mptcp"] = "disabled" - end - else - multipath_available = "ERROR" - connectivity = "WARNING" - end - end - else - multipath_available = "NO CHECK" - end - - - -- Detect if WAN get an IPv6 - local ipv6_discover = "NONE" - if ifname ~= nil and mArray.openmptcprouter["ipv6"] == "enabled" then - local ipv6_result = _ipv6_discover(ifname) - if type(ipv6_result) == "table" and #ipv6_result > 0 then - local ipv6_addr_test - for k,v in ipairs(ipv6_result) do - if v.RecursiveDnsServer then - if type(v.RecursiveDnsServer) ~= "table" then - ipv6_addr_test = sys.exec("ip -6 addr | grep " .. v.RecursiveDnsServer) - if ipv6_addr_test == "" then - ipv6_discover = "DETECTED" - if connectivity == "OK" then - connectivity = "WARNING" - end - end - end - end - end - end - end - - local publicIP = uci:get("openmptcprouter",interface,"publicip") or "" - if ifname ~= nil and publicIP == "" and uci:get("openmptcprouter","settings","external_check") ~= "0" then - publicIP = ut.trim(sys.exec("omr-ip-intf " .. ifname)) - end - local whois = "" - if publicIP ~= "" then - whois = uci:get("openmptcprouter",interface,"asn") or "" - if whois == "" and uci:get("openmptcprouter","settings","external_check") ~= "0" then - --whois = ut.trim(sys.exec("whois " .. publicIP .. " | grep -i 'netname' | awk '{print $2}'")) - whois = ut.trim(sys.exec("wget -4 -qO- -T 1 'http://api.iptoasn.com/v1/as/ip/" .. publicIP .. "' | jsonfilter -q -e '@.as_description'")) - end - end - - local mtu = uci:get("openmptcprouter",interface,"mtu") or "" - if mtu == "" and ifname ~= nil then - mtu = ut.trim(sys.exec("cat /sys/class/net/" .. ifname .. "/mtu | tr -d '\n'")) - end - - local data = { - label = section["label"] or interface, - name = interface, - link = net:adminlink(), - ifname = ifname, - ipaddr = ipaddr, - gateway = gateway, - multipath = section["multipath"], - status = connectivity, - wanip = publicIP, - latency = latency, - mtu = mtu, - whois = whois or "unknown", - qos = section["trafficcontrol"], - download = section["download"], - upload = section["upload"], - gw_ping = gw_ping, - server_ping = server_ping, - ipv6_discover = ipv6_discover, - multipath_available = multipath_available, - duplicateif = duplicateif, - } - - if ifname ~= nil and ifname:match("^tun.*") then - table.insert(mArray.tunnels, data); - elseif ifname ~= nil and ifname:match("^mlvpn.*") then - table.insert(mArray.tunnels, data); - else - table.insert(mArray.wans, data); - end - end) - luci.http.prepare_content("application/json") luci.http.write_json(mArray) end - --- This come from OverTheBox by OVH --- Copyright 2015 OVH --- Simon Lelievre (simon.lelievre@corp.ovh.com) --- Sebastien Duponcheel --- Under GPL3+ -function _ipv6_discover(interface) - local result = {} - - --local ra6_list = (sys.exec("rdisc6 -nm " .. interface)) - local ra6_list = (sys.exec("rdisc6 -n1 -r1 " .. interface)) - -- dissect results - local lines = {} - local index = {} - ra6_list:gsub('[^\r\n]+', function(c) - table.insert(lines, c) - if c:match("Hop limit") then - table.insert(index, #lines) - end - end) - local ra6_result = {} - for k,v in ipairs(index) do - local istart = v - local iend = index[k+1] or #lines - - local entry = {} - for i=istart,iend - 1 do - local level = lines[i]:find('%w') - local line = lines[i]:sub(level) - - local param, value - if line:match('^from') then - param, value = line:match('(from)%s+(.*)$') - else - param, value = line:match('([^:]+):(.*)$') - -- Capitalize param name and remove spaces - param = param:gsub("(%a)([%w_']*)", function(first, rest) return first:upper()..rest:lower() end):gsub("[%s-]",'') - param = param:gsub("%.$", '') - -- Remove text between brackets, seconds and spaces - value = value:lower() - value = value:gsub("%(.*%)", '') - value = value:gsub("%s-seconds%s-", '') - value = value:gsub("^%s+", '') - value = value:gsub("%s+$", '') - end - - if entry[param] == nil then - entry[param] = value - elseif type(entry[param]) == "table" then - table.insert(entry[param], value) - else - old = entry[param] - entry[param] = {} - table.insert(entry[param], old) - table.insert(entry[param], value) - end - end - table.insert(ra6_result, entry) - end - return ra6_result -end - -function set_ipv6_state(disable_ipv6) - -- Disable/Enable IPv6 support - --luci.sys.exec("sysctl -qw net.ipv6.conf.all.disable_ipv6=%s" % disable_ipv6) - --luci.sys.exec("sed -i 's:^net.ipv6.conf.all.disable_ipv6=[0-9]*:net.ipv6.conf.all.disable_ipv6=%s:' /etc/sysctl.d/zzz_openmptcprouter.conf" % disable_ipv6) - luci.sys.exec("sysctl -qw net.ipv6.conf.all.disable_ipv6=0") - luci.sys.exec("sed -i 's:^net.ipv6.conf.all.disable_ipv6=[0-9]*:net.ipv6.conf.all.disable_ipv6=0:' /etc/sysctl.d/zzz_openmptcprouter.conf" % disable_ipv6) - - -- Disable/Enable IPv6 for firewall - ucic:set("firewall",ucic:get_first("firewall","defaults"),"disable_ipv6",disable_ipv6) - ucic:save("firewall") - ucic:commit("firewall") - - -- Disable/Enable IPv6 in OpenMPTCProuter settings - ucic:set("openmptcprouter","settings","disable_ipv6",disable_ipv6) - ucic:commit("openmptcprouter") - - -- Disable/Enable route announce of IPv6 - if disable_ipv6 == "1" then - ucic:set("dhcp","lan","ra_default","0") - ucic:set("network","lan","ipv6","0") - --luci.sys.call("uci -q del network.lan.ipifaceid") - else - -- ucic:set("dhcp","lan","ra_default","1") - ucic:set("network","lan","ipv6","1") - ucic:set("network","lan","delegate","0") - --ucic:set("network","lan","ipifaceid","random") - end - ucic:save("network") - ucic:commit("network") - - -- Disable/Enable IPv6 DHCP and change Shadowsocks listen address - if disable_ipv6 == "1" then - luci.sys.call("uci -q del dhcp.lan.dhcpv6") - luci.sys.call("uci -q del dhcp.lan.ra") - luci.sys.call("uci -q del dhcp.lan.ra_default") - luci.sys.call("uci -q del dhcp.lan.ra_management") - luci.sys.call("uci -q del dhcp.lan.ra_preference") - ucic:set("shadowsocks-libev","hi","local_address","0.0.0.0") - else - ucic:set("dhcp","lan","dhcpv6","server") - ucic:set("dhcp","lan","ra","server") - ucic:set("dhcp","lan","ra_default","1") - ucic:set("dhcp","lan","ra_preference","high") - ucic:set("dhcp","lan","ra_management","1") - ucic:set("shadowsocks-libev","hi","local_address","::") - end - ucic:save("dhcp") - ucic:commit("dhcp") - --if disable_ipv6 == "1" then - -- luci.sys.exec("/etc/init.d/odhcpd stop >/dev/null 2>&1") - -- luci.sys.exec("/etc/init.d/odhcpd disable >/dev/null 2>&1") - --else - -- luci.sys.exec("/etc/init.d/odhcpd start >/dev/null 2>&1") - -- luci.sys.exec("/etc/init.d/odhcpd enable >/dev/null 2>&1") - --end -end \ No newline at end of file diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm new file mode 100644 index 000000000..0b66c1662 --- /dev/null +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/backup.htm @@ -0,0 +1,65 @@ +<%+header%> +<% +luci.sys.call("/etc/init.d/openmptcprouter-vps backup_list >/dev/null 2>/dev/null") +local ucic = luci.model.uci.cursor() +menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter" +%> +<% if stderr and #stderr > 0 then %>
<%=pcdata(stderr)%>
<% end %> +
+
+

<%:Backup on server%>

+
+ + <% + uci:foreach("openmptcprouter","server", function(s) + servername = s[".name"] + %> +

<%=servername%>

+ <% + if luci.model.uci.cursor():get("openmptcprouter",servername,"allbackup") ~= nil then + %> +
+
+ +
+ +
+
+
+ <% + elseif luci.model.uci.cursor():get("openmptcprouter",servername,"lastbackup") ~= nil then + %> +
+ <%:Last available backup on server:%> <%=os.date('%c', luci.model.uci.cursor():get("openmptcprouter",servername,"lastbackup"))%> +
+ <% else %> +
+ <%:No available backup on server.%> +
+ <% end %> + <% + end) + %> +
+ + + +
+
+
+<%+footer%> diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/debug.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/debug.htm index a9e2d92e7..96db8aaa9 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/debug.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/debug.htm @@ -1,12 +1,10 @@ <%+header%> <% if stderr and #stderr > 0 then %>
<%=pcdata(stderr)%>
<% end %> -
-
-

<%:All OpenMPTCProuter settings%>

-
-
<%=luci.sys.exec("uci show")%>
-
+
+

<%:All router settings%>

+
+
<%=luci.sys.exec("sh /bin/anonymous_config.sh")%>
- +
<%+footer%> diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm index a134e0c64..0eb974a41 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/settings.htm @@ -3,6 +3,8 @@ <% if stderr and #stderr > 0 then %>
<%=pcdata(stderr)%>
<% end %> <% local latest_omr_version=luci.model.uci.cursor():get("openmptcprouter","latest_versions","vps") + local ucic = luci.model.uci.cursor() + menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter" omr_test = false uci:foreach("openmptcprouter","server", function(s) servername = s[".name"] @@ -13,13 +15,13 @@ end) if omr_test == true then %> -
+
-

<%:Update VPS%>

+

<%:Update server%>

-
<%:Update remotly OpenMPTCProuter server to latest version when needed.%> <%:Beta%>
+
<%:Update remotly servers to latest version and reboot them.%> <%:Beta%>
- +
@@ -33,12 +35,12 @@ end %> - - +
+

<%:Advanced Settings%>

- <%:VPS settings%> + <%:Server settings%> <% uci:foreach("openmptcprouter","server", function(s) servername = s[".name"] @@ -47,10 +49,21 @@
- +
checked<% end %>> +
+
+ <%:You shouldn't do that and you should redirect only needed ports%> +
+
+
+
+ +
+ + checked<% end %>>
@@ -59,13 +72,13 @@ %> <% local obfs_installed = nixio.fs.access("/usr/bin/obfs-local") - local v2ray_installed = nixio.fs.access("/usr/bin/obfs-local") + local v2ray_installed = nixio.fs.access("/usr/bin/v2ray-plugin") if obfs_installed or v2ray_installed then %>
- checked<% end %>> + checked<% end %>>
<%:Obfuscating will be enabled on both side%> @@ -79,12 +92,12 @@ <% if v2ray_installed then %> - + <% end if obfs_installed then %> - + <% end %> @@ -95,8 +108,8 @@
@@ -104,6 +117,7 @@ end %>
+
<%:Networks settings%>
@@ -111,18 +125,50 @@
"> +
+
+ <%:How often TCP sends out keepalive messages when keepalive is enabled.%> +
"> +
+
+ <%:The length of time an orphaned (no longer referenced by any application) connection will remain in the FIN_WAIT_2 state before it is aborted at the local end.%> +
"> +
+
+ <%:Number of times initial SYNs for an active TCP connection attempt will be retransmitted.%> +
+
+
+
+ +
+ "> +
+
+ <%:This value influences the time, after which TCP decides, that something is wrong due to unacknowledged RTO retransmissions, and reports this suspicion to the network layer.%> +
+
+
+
+ +
+ "> +
+
+ <%:This value influences the timeout of an alive TCP connection, when RTO retransmissions remain unacknowledged.%> +
@@ -131,12 +177,24 @@ ">
+
+ +
+ "> +
+
checked<% end %>>
+
+ +
+ checked<% end %>> +
+
@@ -147,6 +205,237 @@
+
+ +
+ checked<% end %>> +
+
+ <%:Disable TCP Fast Open on Linux and Shadowsocks configuration%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Optimize for latency instead of bandwidth%> +
+
+
+
+ +
+ checked<% end %>> +
+
+
+
+
+ <%:Other settings%> +
+
+ +
+ checked<% end %>> +
+
+ <%:Save vnstats statistics on disk%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable gateway ping check in status page%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable HTTP test on Server API%> +
+
+
+
+ +
+ "> +
+
+ <%:Timeout for VPS checks on status pages%> +
+
+
+
+ +
+ "> +
+
+ <%:Timeout for retrieving WANs IP on status pages%> +
+
+
+
+ +
+ "> +
+
+ <%:Timeout for retrieving Whois WANs IP on status pages%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable renaming interfaces%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ +
+ +
+ checked<% end %>> +
+
+ <%:When proxy shadowsocks is used, use it for UDP if VPN down%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:When proxy V2Ray/XRay VLESS, VMESS or Trojan is used, use it for UDP%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable default gateway, no internet if VPS are down%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable server ping status check%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Authorize access to proxy only from LAN firewall zone%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable route loop detection%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable OpenVPN multi clients to distribute connections and use more CPU cores%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable multipath test using tracebox%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Disable multipath test display in status page%> +
+
+
+ +
+ +
+ checked<% end %>> +
+
+ <%:Disable ModemManager%> +
+
+
+
+ +
+ checked<% end %>> +
+
+ <%:Enable debug logs%> +
+
+
+
+ <% + if nixio.fs.access("/lib/modules/" .. nixio.uname().release .. "/shortcut-fe.ko") then + %> +
+
+ <%:Qualcomm Shortcut FE driver%> +
+
+ +
+ checked<% end %>> +
+
+
+ +
+ checked<% end %>> +
+
+
+ <% end %> + <% if nixio.fs.access("/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq") then %>
<%:Systems settings%> diff --git a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm index 34a17ee3b..224ff07a6 100644 --- a/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm +++ b/luci-app-openmptcprouter/luasrc/view/openmptcprouter/wanstatus.htm @@ -19,7 +19,7 @@ -- along with OverTheBox. If not, see (http://www.gnu.org/licenses/) -%> <% --- Copyright 2018 Ycarus (Yannick Chabanois) ycarus@zugaina.org +-- Copyright 2018-2022 Ycarus (Yannick Chabanois) ycarus@zugaina.org for OpenMPTCProuter -- -- Small changes to make this work with OpenMPTCProuter -- New features: @@ -31,45 +31,67 @@ -- * Many tests -%> <%+header%> - - - +<% +local ucic = luci.model.uci.cursor() +local menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter" +local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openmptcprouter.png" +%> + + + @@ -44,7 +79,7 @@ end } <% if stderr and #stderr > 0 then %>
<%=pcdata(stderr)%>
<% end %> - +

<%:Wizard%>

@@ -54,6 +89,9 @@ end uci:foreach("openmptcprouter","server", function(s) nbserver=nbserver+1 end) + if nbserver == 0 then + uci:set("openmptcprouter","vps","server") + end uci:foreach("openmptcprouter","server", function(s) servername = s[".name"] %> @@ -63,23 +101,46 @@ end

<%=servername%>

-
- +
+
- " data-type="ip4addr" data-optional="false"> + " data-optional="false">
- <%:Server IP will be set for ShadowSocks, Glorytun, OpenVPN and MLVPN%> + <%:Server IP will be set for proxy and VPN%> +
+
+
+
+ +
+ " data-optional="false"> + " data-optional="false"> +
+ <%:Server IP will be set for proxy and VPN%> +
+
+ <%:A second server's IP can be set for dual IPv4/IPv6 server if WAN IPv6 are set%>

-
- +
+
- " data-type="base64" data-optional="false"> + " data-optional="false">
- <%:Key to configure and retrieve others keys from OpenMPTCProuter VPS. Empty to disable.%> + <%:API username to retrieve personnalized settings from the server.%> +
+
+
+
+ +
+ " data-optional="false"> +
+
+ <%:Key to configure and retrieve others keys from Server and to set server settings from OpenMPTCProuter.%>
@@ -87,10 +148,10 @@ end if nbserver > 1 then %>
-
+
- checked<% end %>/> + checked <% end %>/>
<%:Only one server can be master, else all servers are set as backup.%> @@ -99,22 +160,57 @@ end
<% end + %> +
+
+ +
+ checked <% end %>/> +
+
+ <% end) %>
- +
- <%:Common server settings%> + <%:Advanced settings%> +
+ +
+ +
+
+
+
+
+ +
+ <%:MPTCP over VPN settings%> +
<%:MPTCP over VPN should be used only when Multipath TCP is blocked on a connection.%> <%:Only work with Shadowsocks as proxy.%>
+
+ +
+ +
+
+ <%:Set VPN to use for MPTCP over VPN.%> +
+
+
+
+
+ <%:Country settings%> +
<%:Set configuration for countries with some specificities.%>
+
+ +
+ +
+
+ <%:For China, set an accessible DNS and disable DNSSEC.%>
-
- <%:Interfaces settings%> -
<%:You must disable DHCP on your modems and set IP in different networks.%>
+
+
+ <%:LAN interfaces settings%> <% for _, iface in ipairs(net:get_networks()) do local ifname = iface:name() - local multipath = uci:get("network",ifname,"multipath") - if multipath ~= "off" then + local firewall_lan = luci.util.trim(luci.sys.exec("uci -q get firewall.zone_lan.network | tr ' ' '\n' | grep \'^" .. ifname .. "$\'")) + if firewall_lan ~= "" then +%> +

<%=ifname%>

+
+ +
+ +
+ + "> + "> +
+
+ <%:Label for the interface%> +
+
+
+
+ +
+ <% findproto = 0 %> + +
+
+ <%:You can use DHCP if you have multiple real ethernet ports.%> +
+
+
+ <% + if uci:get("network",ifname,"type") ~= "bridge" then + %> +
+ +
+ +
+
+ <%:Choose physical interface.%> +
+
+
+ <% + end + %> +
+ +
+ " data-type="ip4addr"> +
+
+
+ +
+ " data-type="ip4addr"> +
+
+
+<% + end + end +%> + +
+
+ <%:Interfaces settings%> + +<% + for _, iface in ipairs(net:get_networks()) do + local ifname = iface:name() + local firewall_wan = luci.util.trim(luci.sys.exec("uci -q get firewall.zone_wan.network | tr ' ' '\n' | grep \'^" .. ifname .. "$\'")) + local ttl = uci:get("network",ifname .. "_dev","ttl") + if firewall_wan ~= "" then + +-- local multipath = uci:get("network",ifname,"multipath") +-- local multipathvpn = uci:get("openmptcprouter",ifname,"multipathvpn") +-- local vpn = uci:get("openmptcprouter",ifname,"vpn") +-- if (multipath ~= nil and multipath ~= "off" and vpn ~= "1") or multipathvpn == "1" then %>
@@ -249,13 +663,64 @@ end

<%=ifname%>

-
+
+ +
+ "> +
+
+ <%:Label for the interface%> +
+
+
+
+ +
+ +
+
+ <%:Choose MacVLAN if you want to create a virtual interface based on a physical interface.%> +
+
+
+
+ +
+ +
+
+ <%:Choose physical interface.%> +
+
+
+ +
+ <% findproto = 0 %>
@@ -263,7 +728,46 @@ end
-
+
+ +
+ + + +
+
+ <%:Choose physical interface.%> +
+
+
+ +
" data-type="ip4addr"> @@ -273,13 +777,13 @@ end
-
+
" data-type="ip4addr">
-
+
" data-type="ip4addr"> @@ -289,38 +793,326 @@ end
+ <% + ipv6list = uci:get_list("network",ifname,"ip6addr") + for key, value in pairs(ipv6list) do + %> +
+ +
+ +
+
+ <%:Set an IP in the same network as the modem%> +
+
+
+ <% + end + if table.getn(ipv6list) ~= 0 then + %> +
+ +
+ " data-type="ip6addr" data-optional="true"> +
+
+ <%:Set here IP of the modem%> +
+
+
+ <% + else + %> +
+ +
+ +
+
+ <%:Set an IP in the same network as the modem%> +
+
+
+
+ +
+ " data-type="ip6addr"> +
+
+ <%:Set here IP of the modem%> +
+
+
+ <% + end + %> + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ "> +
+
+
+ +
+ "> +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ "> +
+
+
+ +
+ "> +
+
+
+ +
+ "> +
+
+ <% + if uci:get("openmptcprouter",ifname,"multipathvpn") == "1" then + %> +
+ +
+ +
+
+ <%:Only one interface must be set as "Master", this should be the most stable interface.%> +
+
+
+ <% else %> +
+ +
+ +
+
+ <% + end + %> +
+ +
+ +
+
+ <%:You can force a TTL. Some LTE provider detect tethering by inpecting packet TTL value, setting it to 65 often solve the issue.%> +
+
+
+ <% local download = "0" local upload = "0" download = uci:get("network",ifname,"downloadspeed") or "0" upload = uci:get("network",ifname,"uploadspeed") or "0" - if download == "0" or upload == "0" then - if nixio.fs.access("/etc/init.d/sqm") then - download = uci:get("sqm",ifname,"download") - upload = uci:get("sqm",ifname,"upload") - else - download = uci:get("qos",ifname,"download") - upload = uci:get("qos",ifname,"upload") - end - end + cake = uci:get("sqm",ifname,"qdisc") or "cake" + --if download == "0" or upload == "0" then + -- if nixio.fs.access("/etc/init.d/sqm") then + -- download = uci:get("sqm",ifname,"download") + -- upload = uci:get("sqm",ifname,"upload") + -- else + -- download = uci:get("qos",ifname,"download") + -- upload = uci:get("qos",ifname,"upload") + -- end + --end %> -
- +
+
- checked<% end %> /> + checked<% end %> />
- <%:You should disable SQM for LTE or any interfaces with variable speed.%> + <%:You can enable MPTCP over VPN if your provider filter Multipath TCP.%>
-
+ <% + if sqm == "1" then + %> +
+ +
+ checked<% end %> /> +
+
+ <%:SQM control bufferbloat: the undesirable latency that arises when the router buffers too much data.%> +
+
+
+ +
+ +
+ checked<% end %> /> +
+
+ <%:SQM autorate is for LTE and connection without a stable speed.%> + <%:Download and upload speed MUST be set to make this work.%> + <% + if cake ~= "cake" then + %> + <%:Cake queue discipline is not set, autorate will only work after a reboot if enabled here.%> + <% + end + %> +
+
+
+ <% + end + %> + <% + if qos == "1" then + %> +
+ +
+ checked<% end %> /> +
+
+ <%:QoS permit to prioritize any upload traffic.%> +
+
+
+ <% + end + %> +
+ +
+ checked<% end %> /> +
+
+ <%:Run an automatic speedtest to calculate max download & upload speed.%> +
+
+
+

- <%:Used by Glorytun UDP and SQM/QoS if enabled. 0 to use default value.%> + <%:Used by Glorytun UDP and SQM/QoS if enabled.%>
-
+

- <%:Used by Glorytun UDP and SQM/QoS if enabled. 0 to use default value.%> + <%:Used by Glorytun UDP and SQM/QoS if enabled.%>
+
+ +
+
+ +
+
+
+ +
+ + +<%+footer%> diff --git a/luci-app-sysupgrade/po/fr/sysupgrade.po b/luci-app-sysupgrade/po/fr/sysupgrade.po new file mode 100644 index 000000000..8195816c5 --- /dev/null +++ b/luci-app-sysupgrade/po/fr/sysupgrade.po @@ -0,0 +1,97 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-03-31 15:07+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "" +"Cochez \"Conserver les paramètres\" pour conserver la configuration actuelle." + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "Téléchargement du micrologiciel dans la mémoire du navigateur Web" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "" +"Recherchez et installez facilement les nouvelles versions et les mises à " +"niveau des paquets." + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "Modifier les packages installés" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "Mise à jour du micrologiciel. Ne débranchez pas l'appareil" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "Version installée :" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "Conserver les paramètres :" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "Pas de mise à jour disponible" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "Redémarrage de l'appareil - veuillez patienter !" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "Demander le micrologiciel" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:113 +msgid "Search for upgrades" +msgstr "Rechercher des mises à jour" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "Recherche des mises à jour" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:104 +msgid "Server:" +msgstr "Serveur :" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "Succès ! Veuillez recharger l'interface Web" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "Mise à jour système" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "" +"Le téléchargement du micrologiciel a échoué, veuillez réessayer en " +"rechargeant l'interface Web" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "Téléchargement du micrologiciel sur l'appareil" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "" +"L'interface Web n'a pas pu se reconnecter à votre appareil. Recharger " +"l'interface" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "Mise à jour système via rpcd et luci" diff --git a/luci-app-sysupgrade/po/fr/sysupgrade.po~ b/luci-app-sysupgrade/po/fr/sysupgrade.po~ new file mode 100644 index 000000000..45f8c0ba5 --- /dev/null +++ b/luci-app-sysupgrade/po/fr/sysupgrade.po~ @@ -0,0 +1,97 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-03-31 15:07+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "" +"Cochez \"Conserver les paramètres\" pour conserver la configuration actuelle." + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "Téléchargement du micrologiciel dans la mémoire du navigateur Web" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "" +"Recherchez et installez facilement les nouvelles versions et les mises à " +"niveau des paquets." + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "Modifier les packages installés" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "Mise à jour du micrologiciel. Ne débranchez pas l'appareil" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "Version installée :" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "Conserver les paramètres :" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "Pas de mise à jour disponible" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "Redémarrage de l'appareil - veuillez patienter !" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "Demander le micrologiciel" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:110 +msgid "Search for upgrades" +msgstr "Rechercher des mises à jour" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "Recherche des mises à jour" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:103 +msgid "Server:" +msgstr "Serveur :" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "Succès ! Veuillez recharger l'interface Web" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "Mise à jour système" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "" +"Le téléchargement du micrologiciel a échoué, veuillez réessayer en " +"rechargeant l'interface Web" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "Téléchargement du micrologiciel sur l'appareil" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "" +"L'interface Web n'a pas pu se reconnecter à votre appareil. Recharger " +"l'interface" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "Mise à jour système via rpcd et luci" diff --git a/luci-app-sysupgrade/po/ru/sysupgrade.po b/luci-app-sysupgrade/po/ru/sysupgrade.po new file mode 100644 index 000000000..742b59652 --- /dev/null +++ b/luci-app-sysupgrade/po/ru/sysupgrade.po @@ -0,0 +1,94 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "" +"Поставьте \"Сохранить настройки\", чтобы сохранить текущую конфигурацию." + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "Загружаем ПО в память вашего браузера" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "Легко ищите и устанавливайте новые версии ПО и обновления пакетов." + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "Редактировать список установленных пакетов" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "Обновляем ПО маршрутизатора. Не выключайте питание вашего устройства" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "Установленная версия:" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "Сохранить настройки:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "Обновления не найдены" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "Перезагружаем роутер, пожалуйста подождите!" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "Загрузить ПО" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:113 +msgid "Search for upgrades" +msgstr "Поиск обновлений" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "Поиск обновлений" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:104 +msgid "Server:" +msgstr "Сервер:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "Успешно! Пожалуйста обновите страницу" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "sysupgrade" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "" +"Ошибка при загрузке обновлений ПО. Для продолжения, пожалуйста обновите " +"страницу" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "Загружаем обновления ПО в память роутера" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "Проблема при подключении к роутеру. Пожалуйста обновите страницу" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "sysupgrade с использованием RPCd и LUCI" diff --git a/luci-app-sysupgrade/po/templates/sysupgrade.pot b/luci-app-sysupgrade/po/templates/sysupgrade.pot new file mode 100644 index 000000000..1ebb8dc2e --- /dev/null +++ b/luci-app-sysupgrade/po/templates/sysupgrade.pot @@ -0,0 +1,81 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:113 +msgid "Search for upgrades" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:104 +msgid "Server:" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "" diff --git a/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po b/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po new file mode 100644 index 000000000..e68dec985 --- /dev/null +++ b/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po @@ -0,0 +1,90 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-05-03 07:27+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "勾选保持当前配置。" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "下载固件到网页浏览器内存" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "轻松搜索和安装新版本升级固件包。" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "编辑安装包" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "设备升级中。请不要断开电源" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "安装的版本:" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "保持设置:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "没有升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "正在重启设备-请稍候!" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "请求固件" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:113 +msgid "Search for upgrades" +msgstr "搜索升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "搜索升级" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:104 +msgid "Server:" +msgstr "服务器:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "成功!请重新加载web界面" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "系统升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "轻松搜索和安装新版本的系统进行升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "上传固件到设备" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "网络界面无法重新连接到您的设备。请重新加载web界面或手动检查设备" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "通过RPCD和luci进行升级" diff --git a/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po~ b/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po~ new file mode 100644 index 000000000..85f483866 --- /dev/null +++ b/luci-app-sysupgrade/po/zh_Hans/sysupgrade.po~ @@ -0,0 +1,90 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-04-30 16:03+0000\n" +"Last-Translator: niergouge <1150108426@qq.com>\n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2\n" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:90 +msgid "Check \"Keep settings\" to retain the current configuration." +msgstr "勾选保持当前配置。" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:344 +msgid "Downloading firmware to web browser memory" +msgstr "下载固件到网页浏览器内存" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:78 +msgid "Easily search and install new releases and package upgrades." +msgstr "轻松搜索和安装新版本和包升级。" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:99 +msgid "Edit installed packages" +msgstr "编辑安装包" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:269 +msgid "Flashing firmware. Don't unpower device" +msgstr "设备升级中。请不要断开电源" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:192 +msgid "Installed version:" +msgstr "安装的版本:" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:92 +msgid "Keep settings:" +msgstr "保持设置:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:215 +msgid "No upgrades available" +msgstr "没有升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:285 +msgid "Rebooting device - please wait!" +msgstr "正在重启设备-请稍候!" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:209 +msgid "Request firmware" +msgstr "请求固件" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:110 +msgid "Search for upgrades" +msgstr "搜索升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:165 +msgid "Searching for upgrades" +msgstr "搜索升级" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:103 +msgid "Server:" +msgstr "服务器:" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:289 +msgid "Success! Please reload web interface" +msgstr "成功!请重新加载web界面" + +#: luci-app-sysupgrade/luasrc/view/sysupgrade.htm:76 +#: luci-app-sysupgrade/root/usr/share/luci/menu.d/luci-app-sysupgrade.json:3 +msgid "Sysupgrade" +msgstr "系统升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:320 +msgid "Upload of firmware failed, please retry by reloading web interface" +msgstr "轻松搜索和安装新版本的系统进行升级" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:305 +msgid "Uploading firmware to device" +msgstr "上传固件到设备" + +#: luci-app-sysupgrade/root/www/luci-static/resources/sysupgrade.js:299 +msgid "" +"Web interface could not reconnect to your device. Please reload web " +"interface or check device manually" +msgstr "网络界面无法重新连接到您的设备。请重新加载web界面或手动检查设备" + +#: luci-app-sysupgrade/root/usr/share/rpcd/acl.d/sysupgrade.json:3 +msgid "sysupgrade via rpcd and luci" +msgstr "通过RPCD和luci进行升级" diff --git a/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade b/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade new file mode 100755 index 000000000..a5ef66fe8 --- /dev/null +++ b/luci-app-sysupgrade/root/etc/uci-defaults/40_luci-sysupgrade @@ -0,0 +1,20 @@ +#!/bin/sh + +/etc/init.d/uhttpd restart +/etc/init.d/rpcd reload + +[ -e /etc/config/sysupgrade ] && return 0 + +touch /etc/config/sysupgrade + +uci -q batch < + ubus_call("uci", "get", option, option["option"]) +} + +ubus_counter = 0; +ubus_closed = 0; + +function ubus_call(command, argument, params, variable) { + var request_data = {}; + request_data.jsonrpc = "2.0"; + request_data.id = ubus_counter; + request_data.method = "call"; + request_data.params = [data.ubus_rpc_session, command, argument, params] + var request_json = JSON.stringify(request_data) + ubus_counter++; + var request = new XMLHttpRequest(); + request.open("POST", ubus_url, true); + request.setRequestHeader("Content-type", "application/json"); + request.onload = function(event) { + if (request.status === 200) { + var response = JSON.parse(request.responseText) + if (!("error" in response) && "result" in response) { + if (response.result.length === 2) { + if (command === "uci") { + data[variable] = response.result[1].value + } else { + data[variable] = response.result[1][variable] + } + } + } else { + set_status("danger", "Ubus call failed:
Request: " + request_json + "
Response: " + JSON.stringify(response)) + } + ubus_closed++; + } + } + request.send(request_json); +} + +function set_status(type, message, loading, show_log) { + $("#status_box").className = "alert-message " + type; + var loading_image = ''; + if (loading) { + loading_image = 'Loading '; + } + if (data.buildlog_url && show_log) { + message += '

Build log

' + } + $("#status_box").innerHTML = loading_image + message; + show("#status_box") +} + +function upgrade_check() { + var current_version = data.release.version.toLowerCase(); + var current_branch = current_version.split('-')[0].split('.').slice(0, 2).join('.') + var candidates = [] + hide("#status_box"); + hide("#server_div"); + set_status("info", _("Searching for upgrades"), true); + fetch(data.url + "/api/versions?v=" + Date.now()) + .then(response => response.json()) + .then(response => { + var branches = response["branches"] + for (i in branches) { + // handle snapshots in a special way - as always + if (current_version == "snapshot" && branches[i]["latest"] == "snapshot") { + candidates.unshift(branches[i]) + break + } + + if (current_version == branches[i]["latest"]) { + break + } + if (current_branch != branches[i]["name"]) { + branches[i]["warn_branch_jump"] = true + } + candidates.unshift(branches[i]) + if (current_branch == branches[i]["name"]) { + // don't offer branches older than the current + break + } + } + + if (candidates.length > 0) { + var info_output = "

New release " + candidates[0].latest + " available

" + info_output += _('Installed version:') + " " + data.release.version + + // tell server the currently installed version + request_dict.current_version = request_dict.version; + // tell server what version to install + request_dict.version = candidates[0].latest; + // tell server to diff the requested packages with the default packages + // this allows to not automatically re-install default packages which + // where dropped in later releases + request_dict.diff_packages = true; + + set_status("success", info_output) + + if (data.advanced_mode == 1) { + show("#edit_button"); + } + var upgrade_button = $("#upgrade_button") + upgrade_button.value = _("Request firmware"); + upgrade_button.style.display = "block"; + upgrade_button.disabled = false; + upgrade_button.onclick = upgrade_request; + + } else { + set_status("success", _("No upgrades available")) + + } + }); + +} + +function upgrade_request() { + // Request firmware using the following parameters + // distro, version, target, board_name, packages + $("#upgrade_button").disabled = true; + hide("#edit_packages"); + hide("#edit_button"); + hide("#keep_container"); + + // add board info to let server determine profile + request_dict.target = data.release.target + request_dict.profile = data.board_name + request_dict.kernel = data.kernel + request_dict.rootfs = data.format + request_dict.efi = data.efi_enabled + + if (data.edit_packages == true) { + request_dict.packages = $("#edit_packages").value.split("\n") + } else { + request_dict.packages = Object.keys(data.packages); + } + server_request() +} + +function upgrade_request_callback(response) { + var sysupgrade_file = ""; + console.log(response) + for (i in response.images) { + if (response.images[i].type == "sysupgrade") { + sysupgrade_file = response.images[i].name; + } + } + if (sysupgrade_file != "") { + data.sysupgrade_url = data.url + '/release/' + response.bin_dir + '/' + sysupgrade_file + var info_output = '

Firmware searched

File: ' + sysupgrade_file + '

' + set_status("success", info_output, false, true); + + show("#keep_container"); + var upgrade_button = $("#upgrade_button") + upgrade_button.disabled = false; + upgrade_button.style.display = "block"; + upgrade_button.value = "Flash firmware"; + upgrade_button.onclick = download_image; + } else { + set_status("danger", "Device not sysupgrade compatible!") + } +} + +function flash_image() { + // Flash image via rpc-sys upgrade_start + set_status("warning", _("Flashing firmware. Don't unpower device"), true) + ubus_call("rpc-sys", "upgrade_start", { + "keep": $("#keep").checked + }, 'message'); + ping_max = 3600; // in seconds + setTimeout(ping_ubus, 10000) +} + +function ping_ubus() { + // Tries to connect to ubus. If the connection fails the device is likely still rebooting. + // If more time than ping_max passes update may failed + if (ping_max > 0) { + ping_max--; + var request = new XMLHttpRequest(); + request.open("GET", ubus_url, true); + request.addEventListener('error', function(event) { + set_status("warning", _("Rebooting device - please wait!"), true); + setTimeout(ping_ubus, 5000) + }); + request.addEventListener('load', function(event) { + set_status("success", _("Success! Please reload web interface")); + $("#upgrade_button").value = "Reload page"; + show("#upgrade_button"); + $("#upgrade_button").disabled = false; + $("#upgrade_button").onclick = function() { + location.reload(); + } + }); + request.send(); + } else { + set_status("danger", _("Web interface could not reconnect to your device. Please reload web interface or check device manually")) + } +} + +function upload_image(blob) { + // Uploads received blob data to the server using cgi-io + set_status("info", _("Uploading firmware to device"), true); + var request = new XMLHttpRequest(); + var form_data = new FormData(); + + form_data.append("sessionid", data.ubus_rpc_session) + form_data.append("filename", "/tmp/firmware.bin") + form_data.append("filemode", 755) // insecure? + form_data.append("filedata", blob) + + request.addEventListener('load', function(event) { + request_json = JSON.parse(request.responseText) + flash_image(); + }); + + request.addEventListener('error', function(event) { + set_status("danger", _("Upload of firmware failed, please retry by reloading web interface")) + }); + + request.open('POST', origin + '/cgi-bin/cgi-upload'); + request.send(form_data); +} + + +function download_image() { + // Download image from server once the url was received by upgrade_request + hide("#keep_container"); + hide("#upgrade_button"); + var download_request = new XMLHttpRequest(); + download_request.open("GET", data.sysupgrade_url); + download_request.responseType = "arraybuffer"; + + download_request.onload = function() { + if (this.status === 200) { + var blob = new Blob([download_request.response], { + type: "application/octet-stream" + }); + upload_image(blob) + } + }; + set_status("info", _("Downloading firmware to web browser memory"), true); + download_request.send(); +} + +function server_request() { + fetch(data.url + "/api/build?v=" + Date.now(), { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(request_dict) + }) + .then(response => { + switch (response.status) { + case 200: + response.json() + .then(response => { + upgrade_request_callback(response) + }); + break; + case 202: + set_status("info", "Processing request", true); + setTimeout(function() { + server_request() + }, 5000) + break; + case 400: // bad request + case 422: // bad package + case 500: // build failed + console.log('error (' + response.status + ')'); + response.json() + .then(response => { + if (response.buildlog) { + data.buildlog_url = data.url + '/' + response.bin_dir + '/buildlog.txt'; + } + set_status("danger", response.message); + }); + break; + } + }); +} + +request_dict = {} +document.onload = setup() diff --git a/luci-base/Makefile b/luci-base/Makefile deleted file mode 100644 index 9ce3b39f5..000000000 --- a/luci-base/Makefile +++ /dev/null @@ -1,52 +0,0 @@ -# -# Copyright (C) 2008-2015 The LuCI Team -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=luci-base - -LUCI_TYPE:=mod -LUCI_BASENAME:=base - -LUCI_TITLE:=LuCI core libraries -LUCI_DEPENDS:=+lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +luci-lib-jsonc +liblucihttp-lua - - -PKG_SOURCE:=v1.0.0.tar.gz -PKG_SOURCE_URL:=https://github.com/jirutka/luasrcdiet/archive/ -PKG_HASH:=48162e63e77d009f5848f18a5cabffbdfc867d0e5e73c6d407f6af5d6880151b -PKG_LICENSE:=MIT - -HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/luasrcdiet-1.0.0 - -include $(INCLUDE_DIR)/host-build.mk - -define Package/luci-base/conffiles -/etc/luci-uploads -/etc/config/luci -/etc/config/ucitrack -endef - -include ../luci/luci.mk - -define Host/Configure -endef - -define Host/Compile - $(MAKE) -C src/ clean po2lmo -endef - -define Host/Install - $(INSTALL_DIR) $(1)/bin - $(INSTALL_DIR) $(1)/lib/lua/5.1 - $(INSTALL_BIN) src/po2lmo $(1)/bin/po2lmo - $(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/luasrcdiet $(1)/bin/luasrcdiet - $(CP) $(HOST_BUILD_DIR)/luasrcdiet $(1)/lib/lua/5.1/ -endef - -$(eval $(call HostBuild)) - -# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-base/htdocs/cgi-bin/luci b/luci-base/htdocs/cgi-bin/luci deleted file mode 100755 index 529d1d0bc..000000000 --- a/luci-base/htdocs/cgi-bin/luci +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/lua -require "luci.cacheloader" -require "luci.sgi.cgi" -luci.dispatcher.indexcache = "/tmp/luci-indexcache" -luci.sgi.cgi.run() \ No newline at end of file diff --git a/luci-base/htdocs/luci-static/resources/cbi.js b/luci-base/htdocs/luci-static/resources/cbi.js deleted file mode 100644 index fcfc50694..000000000 --- a/luci-base/htdocs/luci-static/resources/cbi.js +++ /dev/null @@ -1,2168 +0,0 @@ -/* - LuCI - Lua Configuration Interface - - Copyright 2008 Steven Barth - Copyright 2008-2012 Jo-Philipp Wich - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 -*/ - -var cbi_d = []; -var cbi_t = []; -var cbi_strings = { path: {}, label: {} }; - -function Int(x) { - return (/^-?\d+$/.test(x) ? +x : NaN); -} - -function Dec(x) { - return (/^-?\d+(?:\.\d+)?$/.test(x) ? +x : NaN); -} - -function IPv4(x) { - if (!x.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/)) - return null; - - if (RegExp.$1 > 255 || RegExp.$2 > 255 || RegExp.$3 > 255 || RegExp.$4 > 255) - return null; - - return [ +RegExp.$1, +RegExp.$2, +RegExp.$3, +RegExp.$4 ]; -} - -function IPv6(x) { - if (x.match(/^([a-fA-F0-9:]+):(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/)) { - var v6 = RegExp.$1, v4 = IPv4(RegExp.$2); - - if (!v4) - return null; - - x = v6 + ':' + (v4[0] * 256 + v4[1]).toString(16) - + ':' + (v4[2] * 256 + v4[3]).toString(16); - } - - if (!x.match(/^[a-fA-F0-9:]+$/)) - return null; - - var prefix_suffix = x.split(/::/); - - if (prefix_suffix.length > 2) - return null; - - var prefix = (prefix_suffix[0] || '0').split(/:/); - var suffix = prefix_suffix.length > 1 ? (prefix_suffix[1] || '0').split(/:/) : []; - - if (suffix.length ? (prefix.length + suffix.length > 7) : (prefix.length > 8)) - return null; - - var i, word; - var words = []; - - for (i = 0, word = parseInt(prefix[0], 16); i < prefix.length; word = parseInt(prefix[++i], 16)) - if (prefix[i].length <= 4 && !isNaN(word) && word <= 0xFFFF) - words.push(word); - else - return null; - - for (i = 0; i < (8 - prefix.length - suffix.length); i++) - words.push(0); - - for (i = 0, word = parseInt(suffix[0], 16); i < suffix.length; word = parseInt(suffix[++i], 16)) - if (suffix[i].length <= 4 && !isNaN(word) && word <= 0xFFFF) - words.push(word); - else - return null; - - return words; -} - -var cbi_validators = { - - 'integer': function() - { - return !!Int(this); - }, - - 'uinteger': function() - { - return (Int(this) >= 0); - }, - - 'float': function() - { - return !!Dec(this); - }, - - 'ufloat': function() - { - return (Dec(this) >= 0); - }, - - 'ipaddr': function() - { - return cbi_validators.ip4addr.apply(this) || - cbi_validators.ip6addr.apply(this); - }, - - 'ip4addr': function() - { - var m = this.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?:\/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|\/(\d{1,2}))?$/); - return !!(m && IPv4(m[1]) && (m[2] ? IPv4(m[2]) : (m[3] ? cbi_validators.ip4prefix.apply(m[3]) : true))); - }, - - 'ip6addr': function() - { - var m = this.match(/^([0-9a-fA-F:.]+)(?:\/(\d{1,3}))?$/); - return !!(m && IPv6(m[1]) && (m[2] ? cbi_validators.ip6prefix.apply(m[2]) : true)); - }, - - 'ip4prefix': function() - { - return !isNaN(this) && this >= 0 && this <= 32; - }, - - 'ip6prefix': function() - { - return !isNaN(this) && this >= 0 && this <= 128; - }, - - 'cidr': function() - { - return cbi_validators.cidr4.apply(this) || - cbi_validators.cidr6.apply(this); - }, - - 'cidr4': function() - { - var m = this.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/(\d{1,2})$/); - return !!(m && IPv4(m[1]) && cbi_validators.ip4prefix.apply(m[2])); - }, - - 'cidr6': function() - { - var m = this.match(/^([0-9a-fA-F:.]+)\/(\d{1,3})$/); - return !!(m && IPv6(m[1]) && cbi_validators.ip6prefix.apply(m[2])); - }, - - 'ipnet4': function() - { - var m = this.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/); - return !!(m && IPv4(m[1]) && IPv4(m[2])); - }, - - 'ipnet6': function() - { - var m = this.match(/^([0-9a-fA-F:.]+)\/([0-9a-fA-F:.]+)$/); - return !!(m && IPv6(m[1]) && IPv6(m[2])); - }, - - 'ip6hostid': function() - { - if (this == "eui64" || this == "random") - return true; - - var v6 = IPv6(this); - return !(!v6 || v6[0] || v6[1] || v6[2] || v6[3]); - }, - - 'ipmask': function() - { - return cbi_validators.ipmask4.apply(this) || - cbi_validators.ipmask6.apply(this); - }, - - 'ipmask4': function() - { - return cbi_validators.cidr4.apply(this) || - cbi_validators.ipnet4.apply(this) || - cbi_validators.ip4addr.apply(this); - }, - - 'ipmask6': function() - { - return cbi_validators.cidr6.apply(this) || - cbi_validators.ipnet6.apply(this) || - cbi_validators.ip6addr.apply(this); - }, - - 'port': function() - { - var p = Int(this); - return (p >= 0 && p <= 65535); - }, - - 'portrange': function() - { - if (this.match(/^(\d+)-(\d+)$/)) - { - var p1 = +RegExp.$1; - var p2 = +RegExp.$2; - return (p1 <= p2 && p2 <= 65535); - } - - return cbi_validators.port.apply(this); - }, - - 'macaddr': function() - { - return (this.match(/^([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}$/) != null); - }, - - 'host': function(ipv4only) - { - return cbi_validators.hostname.apply(this) || - ((ipv4only != 1) && cbi_validators.ipaddr.apply(this)) || - ((ipv4only == 1) && cbi_validators.ip4addr.apply(this)); - }, - - 'hostname': function(strict) - { - if (this.length <= 253) - return (this.match(/^[a-zA-Z0-9_]+$/) != null || - (this.match(/^[a-zA-Z0-9_][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$/) && - this.match(/[^0-9.]/))) && - (!strict || !this.match(/^_/)); - - return false; - }, - - 'network': function() - { - return cbi_validators.uciname.apply(this) || - cbi_validators.host.apply(this); - }, - - 'hostport': function(ipv4only) - { - var hp = this.split(/:/); - - if (hp.length == 2) - return (cbi_validators.host.apply(hp[0], ipv4only) && - cbi_validators.port.apply(hp[1])); - - return false; - }, - - 'ip4addrport': function() - { - var hp = this.split(/:/); - - if (hp.length == 2) - return (cbi_validators.ipaddr.apply(hp[0]) && - cbi_validators.port.apply(hp[1])); - return false; - }, - - 'ipaddrport': function(bracket) - { - if (this.match(/^([^\[\]:]+):([^:]+)$/)) { - var addr = RegExp.$1 - var port = RegExp.$2 - return (cbi_validators.ip4addr.apply(addr) && - cbi_validators.port.apply(port)); - } else if ((bracket == 1) && (this.match(/^\[(.+)\]:([^:]+)$/))) { - var addr = RegExp.$1 - var port = RegExp.$2 - return (cbi_validators.ip6addr.apply(addr) && - cbi_validators.port.apply(port)); - } else if ((bracket != 1) && (this.match(/^([^\[\]]+):([^:]+)$/))) { - var addr = RegExp.$1 - var port = RegExp.$2 - return (cbi_validators.ip6addr.apply(addr) && - cbi_validators.port.apply(port)); - } else { - return false; - } - }, - - 'wpakey': function() - { - var v = this; - - if( v.length == 64 ) - return (v.match(/^[a-fA-F0-9]{64}$/) != null); - else - return (v.length >= 8) && (v.length <= 63); - }, - - 'wepkey': function() - { - var v = this; - - if ( v.substr(0,2) == 's:' ) - v = v.substr(2); - - if( (v.length == 10) || (v.length == 26) ) - return (v.match(/^[a-fA-F0-9]{10,26}$/) != null); - else - return (v.length == 5) || (v.length == 13); - }, - - 'uciname': function() - { - return (this.match(/^[a-zA-Z0-9_]+$/) != null); - }, - - 'range': function(min, max) - { - var val = Dec(this); - return (val >= +min && val <= +max); - }, - - 'min': function(min) - { - return (Dec(this) >= +min); - }, - - 'max': function(max) - { - return (Dec(this) <= +max); - }, - - 'rangelength': function(min, max) - { - var val = '' + this; - return ((val.length >= +min) && (val.length <= +max)); - }, - - 'minlength': function(min) - { - return ((''+this).length >= +min); - }, - - 'maxlength': function(max) - { - return ((''+this).length <= +max); - }, - - 'or': function() - { - for (var i = 0; i < arguments.length; i += 2) - { - if (typeof arguments[i] != 'function') - { - if (arguments[i] == this) - return true; - i--; - } - else if (arguments[i].apply(this, arguments[i+1])) - { - return true; - } - } - return false; - }, - - 'and': function() - { - for (var i = 0; i < arguments.length; i += 2) - { - if (typeof arguments[i] != 'function') - { - if (arguments[i] != this) - return false; - i--; - } - else if (!arguments[i].apply(this, arguments[i+1])) - { - return false; - } - } - return true; - }, - - 'neg': function() - { - return cbi_validators.or.apply( - this.replace(/^[ \t]*![ \t]*/, ''), arguments); - }, - - 'list': function(subvalidator, subargs) - { - if (typeof subvalidator != 'function') - return false; - - var tokens = this.match(/[^ \t]+/g); - for (var i = 0; i < tokens.length; i++) - if (!subvalidator.apply(tokens[i], subargs)) - return false; - - return true; - }, - 'phonedigit': function() - { - return (this.match(/^[0-9\*#!\.]+$/) != null); - }, - 'timehhmmss': function() - { - return (this.match(/^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$/) != null); - }, - 'dateyyyymmdd': function() - { - if (this == null) { - return false; - } - if (this.match(/^(\d\d\d\d)-(\d\d)-(\d\d)/)) { - var year = RegExp.$1; - var month = RegExp.$2; - var day = RegExp.$2 - - var days_in_month = [ 31, 28, 31, 30, 31, 30, 31, 31, 30 , 31, 30, 31 ]; - function is_leap_year(year) { - return ((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0); - } - function get_days_in_month(month, year) { - if ((month == 2) && is_leap_year(year)) { - return 29; - } else { - return days_in_month[month]; - } - } - /* Firewall rules in the past don't make sense */ - if (year < 2015) { - return false; - } - if ((month <= 0) || (month > 12)) { - return false; - } - if ((day <= 0) || (day > get_days_in_month(month, year))) { - return false; - } - return true; - - } else { - return false; - } - } -}; - - -function cbi_d_add(field, dep, index) { - var obj = (typeof(field) === 'string') ? document.getElementById(field) : field; - if (obj) { - var entry - for (var i=0; i entry.index) { - break; - } - } - - if (!next) { - parent.appendChild(entry.node); - } else { - parent.insertBefore(entry.node, next); - } - - state = true; - } - - // hide optionals widget if no choices remaining - if (parent && parent.parentNode && parent.getAttribute('data-optionals')) - parent.parentNode.style.display = (parent.options.length <= 1) ? 'none' : ''; - } - - if (entry && entry.parent) { - if (!cbi_t_update()) - cbi_tag_last(parent); - } - - if (state) { - cbi_d_update(); - } -} - -function cbi_init() { - var nodes; - - nodes = document.querySelectorAll('[data-strings]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - var str = JSON.parse(node.getAttribute('data-strings')); - for (var key in str) { - for (var key2 in str[key]) { - var dst = cbi_strings[key] || (cbi_strings[key] = { }); - dst[key2] = str[key][key2]; - } - } - } - - nodes = document.querySelectorAll('[data-depends]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - var index = parseInt(node.getAttribute('data-index'), 10); - var depends = JSON.parse(node.getAttribute('data-depends')); - if (!isNaN(index) && depends.length > 0) { - for (var alt = 0; alt < depends.length; alt++) { - cbi_d_add(node, depends[alt], index); - } - } - } - - nodes = document.querySelectorAll('[data-update]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - var events = node.getAttribute('data-update').split(' '); - for (var j = 0, event; (event = events[j]) !== undefined; j++) { - cbi_bind(node, event, cbi_d_update); - } - } - - nodes = document.querySelectorAll('[data-choices]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - var choices = JSON.parse(node.getAttribute('data-choices')); - var options = {}; - - for (var j = 0; j < choices[0].length; j++) - options[choices[0][j]] = choices[1][j]; - - var def = (node.getAttribute('data-optional') === 'true') - ? node.placeholder || '' : null; - - cbi_combobox_init(node, options, def, - node.getAttribute('data-manual')); - } - - nodes = document.querySelectorAll('[data-dynlist]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - var choices = JSON.parse(node.getAttribute('data-dynlist')); - var options = null; - - if (choices[0] && choices[0].length) { - options = {}; - - for (var j = 0; j < choices[0].length; j++) - options[choices[0][j]] = choices[1][j]; - } - - cbi_dynlist_init(node, choices[2], choices[3], options); - } - - nodes = document.querySelectorAll('[data-type]'); - - for (var i = 0, node; (node = nodes[i]) !== undefined; i++) { - cbi_validate_field(node, node.getAttribute('data-optional') === 'true', - node.getAttribute('data-type')); - } - - document.querySelectorAll('.cbi-dropdown').forEach(function(s) { - cbi_dropdown_init(s); - }); - - document.querySelectorAll('.cbi-tooltip:not(:empty)').forEach(function(s) { - s.parentNode.classList.add('cbi-tooltip-container'); - }); - - document.querySelectorAll('.cbi-section-remove > input[name^="cbi.rts"]').forEach(function(i) { - var handler = function(ev) { - var bits = this.name.split(/\./), - section = document.getElementById('cbi-' + bits[2] + '-' + bits[3]); - - section.style.opacity = (ev.type === 'mouseover') ? 0.5 : ''; - }; - - i.addEventListener('mouseover', handler); - i.addEventListener('mouseout', handler); - }); - - cbi_d_update(); -} - -function cbi_bind(obj, type, callback, mode) { - if (!obj.addEventListener) { - obj.attachEvent('on' + type, - function(){ - var e = window.event; - - if (!e.target && e.srcElement) - e.target = e.srcElement; - - return !!callback(e); - } - ); - } else { - obj.addEventListener(type, callback, !!mode); - } - return obj; -} - -function cbi_combobox(id, values, def, man, focus) { - var selid = "cbi.combobox." + id; - if (document.getElementById(selid)) { - return - } - - var obj = document.getElementById(id) - var sel = document.createElement("select"); - sel.id = selid; - sel.index = obj.index; - sel.className = obj.className.replace(/cbi-input-text/, 'cbi-input-select'); - - if (obj.nextSibling) { - obj.parentNode.insertBefore(sel, obj.nextSibling); - } else { - obj.parentNode.appendChild(sel); - } - - var dt = obj.getAttribute('cbi_datatype'); - var op = obj.getAttribute('cbi_optional'); - - if (!values[obj.value]) { - if (obj.value == "") { - var optdef = document.createElement("option"); - optdef.value = ""; - optdef.appendChild(document.createTextNode(typeof(def) === 'string' ? def : cbi_strings.label.choose)); - sel.appendChild(optdef); - } else { - var opt = document.createElement("option"); - opt.value = obj.value; - opt.selected = "selected"; - opt.appendChild(document.createTextNode(obj.value)); - sel.appendChild(opt); - } - } - - for (var i in values) { - var opt = document.createElement("option"); - opt.value = i; - - if (obj.value == i) { - opt.selected = "selected"; - } - - opt.appendChild(document.createTextNode(values[i])); - sel.appendChild(opt); - } - - var optman = document.createElement("option"); - optman.value = ""; - optman.appendChild(document.createTextNode(typeof(man) === 'string' ? man : cbi_strings.label.custom)); - sel.appendChild(optman); - - obj.style.display = "none"; - - if (dt) - cbi_validate_field(sel, op == 'true', dt); - - cbi_bind(sel, "change", function() { - if (sel.selectedIndex == sel.options.length - 1) { - obj.style.display = "inline"; - sel.blur(); - sel.parentNode.removeChild(sel); - obj.focus(); - } else { - obj.value = sel.options[sel.selectedIndex].value; - } - - try { - cbi_d_update(); - } catch (e) { - //Do nothing - } - }) - - // Retrigger validation in select - if (focus) { - sel.focus(); - sel.blur(); - } -} - -function cbi_combobox_init(id, values, def, man) { - var obj = (typeof(id) === 'string') ? document.getElementById(id) : id; - cbi_bind(obj, "blur", function() { - cbi_combobox(obj.id, values, def, man, true); - }); - cbi_combobox(obj.id, values, def, man, false); -} - -function cbi_filebrowser(id, defpath) { - var field = document.getElementById(id); - var browser = window.open( - cbi_strings.path.browser + ( field.value || defpath || '' ) + '?field=' + id, - "luci_filebrowser", "width=300,height=400,left=100,top=200,scrollbars=yes" - ); - - browser.focus(); -} - -function cbi_browser_init(id, resource, defpath) -{ - function cbi_browser_btnclick(e) { - cbi_filebrowser(id, defpath); - return false; - } - - var field = document.getElementById(id); - - var btn = document.createElement('img'); - btn.className = 'cbi-image-button'; - btn.src = (resource || cbi_strings.path.resource) + '/cbi/folder.gif'; - field.parentNode.insertBefore(btn, field.nextSibling); - - cbi_bind(btn, 'click', cbi_browser_btnclick); -} - -function cbi_dynlist_init(parent, datatype, optional, choices) -{ - var prefix = parent.getAttribute('data-prefix'); - var holder = parent.getAttribute('data-placeholder'); - - var values; - - function cbi_dynlist_redraw(focus, add, del) - { - values = [ ]; - - while (parent.firstChild) - { - var n = parent.firstChild; - var i = +n.index; - - if (i != del) - { - if (n.nodeName.toLowerCase() == 'input') - values.push(n.value || ''); - else if (n.nodeName.toLowerCase() == 'select') - values[values.length-1] = n.options[n.selectedIndex].value; - } - - parent.removeChild(n); - } - - if (add >= 0) - { - focus = add+1; - values.splice(focus, 0, ''); - } - else if (values.length == 0) - { - focus = 0; - values.push(''); - } - - for (var i = 0; i < values.length; i++) - { - var t = document.createElement('input'); - t.id = prefix + '.' + (i+1); - t.name = prefix; - t.value = values[i]; - t.type = 'text'; - t.index = i; - t.className = 'cbi-input-text'; - - if (i == 0 && holder) - { - t.placeholder = holder; - } - - var b = E('div', { - class: 'cbi-button cbi-button-' + ((i+1) < values.length ? 'remove' : 'add') - }, (i+1) < values.length ? '×' : '+'); - - parent.appendChild(t); - parent.appendChild(b); - if (datatype == 'file') - { - cbi_browser_init(t.id, null, parent.getAttribute('data-browser-path')); - } - - parent.appendChild(document.createElement('br')); - - if (datatype) - { - cbi_validate_field(t.id, ((i+1) == values.length) || optional, datatype); - } - - if (choices) - { - cbi_combobox_init(t.id, choices, '', cbi_strings.label.custom); - b.index = i; - - cbi_bind(b, 'keydown', cbi_dynlist_keydown); - cbi_bind(b, 'keypress', cbi_dynlist_keypress); - - if (i == focus || -i == focus) - b.focus(); - } - else - { - cbi_bind(t, 'keydown', cbi_dynlist_keydown); - cbi_bind(t, 'keypress', cbi_dynlist_keypress); - - if (i == focus) - { - t.focus(); - } - else if (-i == focus) - { - t.focus(); - - /* force cursor to end */ - var v = t.value; - t.value = ' ' - t.value = v; - } - } - - cbi_bind(b, 'click', cbi_dynlist_btnclick); - } - } - - function cbi_dynlist_keypress(ev) - { - ev = ev ? ev : window.event; - - var se = ev.target ? ev.target : ev.srcElement; - - if (se.nodeType == 3) - se = se.parentNode; - - switch (ev.keyCode) - { - /* backspace, delete */ - case 8: - case 46: - if (se.value.length == 0) - { - if (ev.preventDefault) - ev.preventDefault(); - - return false; - } - - return true; - - /* enter, arrow up, arrow down */ - case 13: - case 38: - case 40: - if (ev.preventDefault) - ev.preventDefault(); - - return false; - } - - return true; - } - - function cbi_dynlist_keydown(ev) - { - ev = ev ? ev : window.event; - - var se = ev.target ? ev.target : ev.srcElement; - - if (se.nodeType == 3) - se = se.parentNode; - - var prev = se.previousSibling; - while (prev && prev.name != prefix) - prev = prev.previousSibling; - - var next = se.nextSibling; - while (next && next.name != prefix) - next = next.nextSibling; - - /* advance one further in combobox case */ - if (next && next.nextSibling.name == prefix) - next = next.nextSibling; - - switch (ev.keyCode) - { - /* backspace, delete */ - case 8: - case 46: - var del = (se.nodeName.toLowerCase() == 'select') - ? true : (se.value.length == 0); - - if (del) - { - if (ev.preventDefault) - ev.preventDefault(); - - var focus = se.index; - if (ev.keyCode == 8) - focus = -focus+1; - - cbi_dynlist_redraw(focus, -1, se.index); - - return false; - } - - break; - - /* enter */ - case 13: - cbi_dynlist_redraw(-1, se.index, -1); - break; - - /* arrow up */ - case 38: - if (prev) - prev.focus(); - - break; - - /* arrow down */ - case 40: - if (next) - next.focus(); - - break; - } - - return true; - } - - function cbi_dynlist_btnclick(ev) - { - ev = ev ? ev : window.event; - - var se = ev.target ? ev.target : ev.srcElement; - var input = se.previousSibling; - while (input && input.name != prefix) { - input = input.previousSibling; - } - - if (se.classList.contains('cbi-button-remove')) { - input.value = ''; - - cbi_dynlist_keydown({ - target: input, - keyCode: 8 - }); - } - else { - cbi_dynlist_keydown({ - target: input, - keyCode: 13 - }); - } - - return false; - } - - cbi_dynlist_redraw(NaN, -1, -1); -} - - -function cbi_t_add(section, tab) { - var t = document.getElementById('tab.' + section + '.' + tab); - var c = document.getElementById('container.' + section + '.' + tab); - - if( t && c ) { - cbi_t[section] = (cbi_t[section] || [ ]); - cbi_t[section][tab] = { 'tab': t, 'container': c, 'cid': c.id }; - } -} - -function cbi_t_switch(section, tab) { - if( cbi_t[section] && cbi_t[section][tab] ) { - var o = cbi_t[section][tab]; - var h = document.getElementById('tab.' + section); - for( var tid in cbi_t[section] ) { - var o2 = cbi_t[section][tid]; - if( o.tab.id != o2.tab.id ) { - o2.tab.className = o2.tab.className.replace(/(^| )cbi-tab( |$)/, " cbi-tab-disabled "); - o2.container.style.display = 'none'; - } - else { - if(h) h.value = tab; - o2.tab.className = o2.tab.className.replace(/(^| )cbi-tab-disabled( |$)/, " cbi-tab "); - o2.container.style.display = 'block'; - } - } - } - return false -} - -function cbi_t_update() { - var hl_tabs = [ ]; - var updated = false; - - for( var sid in cbi_t ) - for( var tid in cbi_t[sid] ) - { - var t = cbi_t[sid][tid].tab; - var c = cbi_t[sid][tid].container; - - if (!c.firstElementChild) { - t.style.display = 'none'; - } - else if (t.style.display == 'none') { - t.style.display = ''; - t.className += ' cbi-tab-highlighted'; - hl_tabs.push(t); - } - - cbi_tag_last(c); - updated = true; - } - - if (hl_tabs.length > 0) - window.setTimeout(function() { - for( var i = 0; i < hl_tabs.length; i++ ) - hl_tabs[i].className = hl_tabs[i].className.replace(/ cbi-tab-highlighted/g, ''); - }, 750); - - return updated; -} - - -function cbi_validate_form(form, errmsg) -{ - /* if triggered by a section removal or addition, don't validate */ - if( form.cbi_state == 'add-section' || form.cbi_state == 'del-section' ) - return true; - - if( form.cbi_validators ) - { - for( var i = 0; i < form.cbi_validators.length; i++ ) - { - var validator = form.cbi_validators[i]; - if( !validator() && errmsg ) - { - alert(errmsg); - return false; - } - } - } - - return true; -} - -function cbi_validate_reset(form) -{ - window.setTimeout( - function() { cbi_validate_form(form, null) }, 100 - ); - - return true; -} - -function cbi_validate_compile(code) -{ - var pos = 0; - var esc = false; - var depth = 0; - var stack = [ ]; - - code += ','; - - for (var i = 0; i < code.length; i++) - { - if (esc) - { - esc = false; - continue; - } - - switch (code.charCodeAt(i)) - { - case 92: - esc = true; - break; - - case 40: - case 44: - if (depth <= 0) - { - if (pos < i) - { - var label = code.substring(pos, i); - label = label.replace(/\\(.)/g, '$1'); - label = label.replace(/^[ \t]+/g, ''); - label = label.replace(/[ \t]+$/g, ''); - - if (label && !isNaN(label)) - { - stack.push(parseFloat(label)); - } - else if (label.match(/^(['"]).*\1$/)) - { - stack.push(label.replace(/^(['"])(.*)\1$/, '$2')); - } - else if (typeof cbi_validators[label] == 'function') - { - stack.push(cbi_validators[label]); - stack.push(null); - } - else - { - throw "Syntax error, unhandled token '"+label+"'"; - } - } - pos = i+1; - } - depth += (code.charCodeAt(i) == 40); - break; - - case 41: - if (--depth <= 0) - { - if (typeof stack[stack.length-2] != 'function') - throw "Syntax error, argument list follows non-function"; - - stack[stack.length-1] = - arguments.callee(code.substring(pos, i)); - - pos = i+1; - } - break; - } - } - - return stack; -} - -function cbi_validate_field(cbid, optional, type) -{ - var field = (typeof cbid == "string") ? document.getElementById(cbid) : cbid; - var vstack; try { vstack = cbi_validate_compile(type); } catch(e) { }; - - if (field && vstack && typeof vstack[0] == "function") - { - var validator = function() - { - // is not detached - if( field.form ) - { - field.className = field.className.replace(/ cbi-input-invalid/g, ''); - - // validate value - var value = (field.options && field.options.selectedIndex > -1) - ? field.options[field.options.selectedIndex].value : field.value; - - if (!(((value.length == 0) && optional) || vstack[0].apply(value, vstack[1]))) - { - // invalid - field.className += ' cbi-input-invalid'; - return false; - } - } - - return true; - }; - - if( ! field.form.cbi_validators ) - field.form.cbi_validators = [ ]; - - field.form.cbi_validators.push(validator); - - cbi_bind(field, "blur", validator); - cbi_bind(field, "keyup", validator); - - if (field.nodeName == 'SELECT') - { - cbi_bind(field, "change", validator); - cbi_bind(field, "click", validator); - } - - field.setAttribute("cbi_validate", validator); - field.setAttribute("cbi_datatype", type); - field.setAttribute("cbi_optional", (!!optional).toString()); - - validator(); - - var fcbox = document.getElementById('cbi.combobox.' + field.id); - if (fcbox) - cbi_validate_field(fcbox, optional, type); - } -} - -function cbi_row_swap(elem, up, store) -{ - var tr = findParent(elem.parentNode, '.cbi-section-table-row'); - - if (!tr) - return false; - - tr.classList.remove('flash'); - - if (up) { - var prev = tr.previousElementSibling; - - if (prev && prev.classList.contains('cbi-section-table-row')) - tr.parentNode.insertBefore(tr, prev); - else - return; - } - else { - var next = tr.nextElementSibling ? tr.nextElementSibling.nextElementSibling : null; - - if (next && next.classList.contains('cbi-section-table-row')) - tr.parentNode.insertBefore(tr, next); - else if (!next) - tr.parentNode.appendChild(tr); - else - return; - } - - var ids = [ ]; - - for (var i = 0, n = 0; i < tr.parentNode.childNodes.length; i++) { - var node = tr.parentNode.childNodes[i]; - if (node.classList && node.classList.contains('cbi-section-table-row')) { - node.classList.remove('cbi-rowstyle-1'); - node.classList.remove('cbi-rowstyle-2'); - node.classList.add((n++ % 2) ? 'cbi-rowstyle-2' : 'cbi-rowstyle-1'); - - if (/-([^\-]+)$/.test(node.id)) - ids.push(RegExp.$1); - } - } - - var input = document.getElementById(store); - if (input) - input.value = ids.join(' '); - - window.scrollTo(0, tr.offsetTop); - window.setTimeout(function() { tr.classList.add('flash'); }, 1); - - return false; -} - -function cbi_tag_last(container) -{ - var last; - - for (var i = 0; i < container.childNodes.length; i++) - { - var c = container.childNodes[i]; - if (c.nodeType == 1 && c.nodeName.toLowerCase() == 'div') - { - c.className = c.className.replace(/ cbi-value-last$/, ''); - last = c; - } - } - - if (last) - { - last.className += ' cbi-value-last'; - } -} - -function cbi_submit(elem, name, value, action) -{ - var form = elem.form || findParent(elem, 'form'); - - if (!form) - return false; - - if (action) - form.action = action; - - if (name) { - var hidden = form.querySelector('input[type="hidden"][name="%s"]'.format(name)) || - E('input', { type: 'hidden', name: name }); - - hidden.value = value || '1'; - form.appendChild(hidden); - } - - form.submit(); - return true; -} - -String.prototype.format = function() -{ - if (!RegExp) - return; - - var html_esc = [/&/g, '&', /"/g, '"', /'/g, ''', //g, '>']; - var quot_esc = [/"/g, '"', /'/g, ''']; - - function esc(s, r) { - if (typeof(s) !== 'string' && !(s instanceof String)) - return ''; - - for( var i = 0; i < r.length; i += 2 ) - s = s.replace(r[i], r[i+1]); - return s; - } - - var str = this; - var out = ''; - var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/; - var a = b = [], numSubstitutions = 0, numMatches = 0; - - while (a = re.exec(str)) - { - var m = a[1]; - var leftpart = a[2], pPad = a[3], pJustify = a[4], pMinLength = a[5]; - var pPrecision = a[6], pType = a[7]; - - numMatches++; - - if (pType == '%') - { - subst = '%'; - } - else - { - if (numSubstitutions < arguments.length) - { - var param = arguments[numSubstitutions++]; - - var pad = ''; - if (pPad && pPad.substr(0,1) == "'") - pad = leftpart.substr(1,1); - else if (pPad) - pad = pPad; - else - pad = ' '; - - var justifyRight = true; - if (pJustify && pJustify === "-") - justifyRight = false; - - var minLength = -1; - if (pMinLength) - minLength = +pMinLength; - - var precision = -1; - if (pPrecision && pType == 'f') - precision = +pPrecision.substring(1); - - var subst = param; - - switch(pType) - { - case 'b': - subst = (+param || 0).toString(2); - break; - - case 'c': - subst = String.fromCharCode(+param || 0); - break; - - case 'd': - subst = ~~(+param || 0); - break; - - case 'u': - subst = ~~Math.abs(+param || 0); - break; - - case 'f': - subst = (precision > -1) - ? ((+param || 0.0)).toFixed(precision) - : (+param || 0.0); - break; - - case 'o': - subst = (+param || 0).toString(8); - break; - - case 's': - subst = param; - break; - - case 'x': - subst = ('' + (+param || 0).toString(16)).toLowerCase(); - break; - - case 'X': - subst = ('' + (+param || 0).toString(16)).toUpperCase(); - break; - - case 'h': - subst = esc(param, html_esc); - break; - - case 'q': - subst = esc(param, quot_esc); - break; - - case 't': - var td = 0; - var th = 0; - var tm = 0; - var ts = (param || 0); - - if (ts > 60) { - tm = Math.floor(ts / 60); - ts = (ts % 60); - } - - if (tm > 60) { - th = Math.floor(tm / 60); - tm = (tm % 60); - } - - if (th > 24) { - td = Math.floor(th / 24); - th = (th % 24); - } - - subst = (td > 0) - ? String.format('%dd %dh %dm %ds', td, th, tm, ts) - : String.format('%dh %dm %ds', th, tm, ts); - - break; - - case 'm': - var mf = pMinLength ? +pMinLength : 1000; - var pr = pPrecision ? ~~(10 * +('0' + pPrecision)) : 2; - - var i = 0; - var val = (+param || 0); - var units = [ ' ', ' K', ' M', ' G', ' T', ' P', ' E' ]; - - for (i = 0; (i < units.length) && (val > mf); i++) - val /= mf; - - subst = (i ? val.toFixed(pr) : val) + units[i]; - pMinLength = null; - break; - } - } - } - - if (pMinLength) { - subst = subst.toString(); - for (var i = subst.length; i < pMinLength; i++) - if (pJustify == '-') - subst = subst + ' '; - else - subst = pad + subst; - } - - out += leftpart + subst; - str = str.substr(m.length); - } - - return out + str; -} - -String.prototype.nobr = function() -{ - return this.replace(/[\s\n]+/g, ' '); -} - -String.format = function() -{ - var a = [ ]; - for (var i = 1; i < arguments.length; i++) - a.push(arguments[i]); - return ''.format.apply(arguments[0], a); -} - -String.nobr = function() -{ - var a = [ ]; - for (var i = 1; i < arguments.length; i++) - a.push(arguments[i]); - return ''.nobr.apply(arguments[0], a); -} - -if (window.NodeList && !NodeList.prototype.forEach) { - NodeList.prototype.forEach = function (callback, thisArg) { - thisArg = thisArg || window; - for (var i = 0; i < this.length; i++) { - callback.call(thisArg, this[i], i, this); - } - }; -} - - -var dummyElem, domParser; - -function isElem(e) -{ - return (typeof(e) === 'object' && e !== null && 'nodeType' in e); -} - -function toElem(s) -{ - var elem; - - try { - domParser = domParser || new DOMParser(); - elem = domParser.parseFromString(s, 'text/html').body.firstChild; - } - catch(e) {} - - if (!elem) { - try { - dummyElem = dummyElem || document.createElement('div'); - dummyElem.innerHTML = s; - elem = dummyElem.firstChild; - } - catch (e) {} - } - - return elem || null; -} - -function findParent(node, selector) -{ - while (node) - if (node.msMatchesSelector && node.msMatchesSelector(selector)) - return node; - else if (node.matches && node.matches(selector)) - return node; - else - node = node.parentNode; - - return null; -} - -function E() -{ - var html = arguments[0], - attr = (arguments[1] instanceof Object && !Array.isArray(arguments[1])) ? arguments[1] : null, - data = attr ? arguments[2] : arguments[1], - elem; - - if (isElem(html)) - elem = html; - else if (html.charCodeAt(0) === 60) - elem = toElem(html); - else - elem = document.createElement(html); - - if (!elem) - return null; - - if (attr) - for (var key in attr) - if (attr.hasOwnProperty(key) && attr[key] !== null && attr[key] !== undefined) - elem.setAttribute(key, attr[key]); - - if (typeof(data) === 'function') - data = data(elem); - - if (isElem(data)) { - elem.appendChild(data); - } - else if (Array.isArray(data)) { - for (var i = 0; i < data.length; i++) - if (isElem(data[i])) - elem.appendChild(data[i]); - else - elem.appendChild(document.createTextNode('' + data[i])); - } - else if (data !== null && data !== undefined) { - elem.innerHTML = '' + data; - } - - return elem; -} - -if (typeof(window.CustomEvent) !== 'function') { - function CustomEvent(event, params) { - params = params || { bubbles: false, cancelable: false, detail: undefined }; - var evt = document.createEvent('CustomEvent'); - evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail ); - return evt; - } - - CustomEvent.prototype = window.Event.prototype; - window.CustomEvent = CustomEvent; -} - -CBIDropdown = { - openDropdown: function(sb) { - var st = window.getComputedStyle(sb, null), - ul = sb.querySelector('ul'), - li = ul.querySelectorAll('li'), - sel = ul.querySelector('[selected]'), - rect = sb.getBoundingClientRect(), - h = sb.clientHeight - parseFloat(st.paddingTop) - parseFloat(st.paddingBottom), - mh = this.dropdown_items * h, - eh = Math.min(mh, li.length * h); - - document.querySelectorAll('.cbi-dropdown[open]').forEach(function(s) { - s.dispatchEvent(new CustomEvent('cbi-dropdown-close', {})); - }); - - ul.style.maxHeight = mh + 'px'; - sb.setAttribute('open', ''); - - ul.scrollTop = sel ? Math.max(sel.offsetTop - sel.offsetHeight, 0) : 0; - ul.querySelectorAll('[selected] input[type="checkbox"]').forEach(function(c) { - c.checked = true; - }); - - ul.style.top = ul.style.bottom = ''; - ul.style[((sb.getBoundingClientRect().top + eh) > window.innerHeight) ? 'bottom' : 'top'] = rect.height + 'px'; - ul.classList.add('dropdown'); - - var pv = ul.cloneNode(true); - pv.classList.remove('dropdown'); - pv.classList.add('preview'); - - sb.insertBefore(pv, ul.nextElementSibling); - - li.forEach(function(l) { - l.setAttribute('tabindex', 0); - }); - - sb.lastElementChild.setAttribute('tabindex', 0); - - this.setFocus(sb, sel || li[0], true); - }, - - closeDropdown: function(sb, no_focus) { - if (!sb.hasAttribute('open')) - return; - - var pv = sb.querySelector('ul.preview'), - ul = sb.querySelector('ul.dropdown'), - li = ul.querySelectorAll('li'); - - li.forEach(function(l) { l.removeAttribute('tabindex'); }); - sb.lastElementChild.removeAttribute('tabindex'); - - sb.removeChild(pv); - sb.removeAttribute('open'); - sb.style.width = sb.style.height = ''; - - ul.classList.remove('dropdown'); - - if (!no_focus) - this.setFocus(sb, sb); - - this.saveValues(sb, ul); - }, - - toggleItem: function(sb, li, force_state) { - if (li.hasAttribute('unselectable')) - return; - - if (this.multi) { - var cbox = li.querySelector('input[type="checkbox"]'), - items = li.parentNode.querySelectorAll('li'), - label = sb.querySelector('ul.preview'), - sel = li.parentNode.querySelectorAll('[selected]').length, - more = sb.querySelector('.more'), - ndisplay = this.display_items, - n = 0; - - if (li.hasAttribute('selected')) { - if (force_state !== true) { - if (sel > 1 || this.optional) { - li.removeAttribute('selected'); - cbox.checked = cbox.disabled = false; - sel--; - } - else { - cbox.disabled = true; - } - } - } - else { - if (force_state !== false) { - li.setAttribute('selected', ''); - cbox.checked = true; - cbox.disabled = false; - sel++; - } - } - - while (label.firstElementChild) - label.removeChild(label.firstElementChild); - - for (var i = 0; i < items.length; i++) { - items[i].removeAttribute('display'); - if (items[i].hasAttribute('selected')) { - if (ndisplay-- > 0) { - items[i].setAttribute('display', n++); - label.appendChild(items[i].cloneNode(true)); - } - var c = items[i].querySelector('input[type="checkbox"]'); - if (c) - c.disabled = (sel == 1 && !this.optional); - } - } - - if (ndisplay < 0) - sb.setAttribute('more', ''); - else - sb.removeAttribute('more'); - - if (ndisplay === this.display_items) - sb.setAttribute('empty', ''); - else - sb.removeAttribute('empty'); - - more.innerHTML = (ndisplay === this.display_items) ? this.placeholder : '···'; - } - else { - var sel = li.parentNode.querySelector('[selected]'); - if (sel) { - sel.removeAttribute('display'); - sel.removeAttribute('selected'); - } - - li.setAttribute('display', 0); - li.setAttribute('selected', ''); - - this.closeDropdown(sb, true); - } - - this.saveValues(sb, li.parentNode); - }, - - transformItem: function(sb, li) { - var cbox = E('form', {}, E('input', { type: 'checkbox', tabindex: -1, onclick: 'event.preventDefault()' })), - label = E('label'); - - while (li.firstChild) - label.appendChild(li.firstChild); - - li.appendChild(cbox); - li.appendChild(label); - }, - - saveValues: function(sb, ul) { - var sel = ul.querySelectorAll('[selected]'), - div = sb.lastElementChild; - - while (div.lastElementChild) - div.removeChild(div.lastElementChild); - - sel.forEach(function (s) { - div.appendChild(E('input', { - type: 'hidden', - name: s.hasAttribute('name') ? s.getAttribute('name') : (sb.getAttribute('name') || ''), - value: s.hasAttribute('value') ? s.getAttribute('value') : s.innerText - })); - }); - - cbi_d_update(); - }, - - setFocus: function(sb, elem, scroll) { - if (sb && sb.hasAttribute && sb.hasAttribute('locked-in')) - return; - - document.querySelectorAll('.focus').forEach(function(e) { - if (e.nodeName.toLowerCase() !== 'input') { - e.classList.remove('focus'); - e.blur(); - } - }); - - if (elem) { - elem.focus(); - elem.classList.add('focus'); - - if (scroll) - elem.parentNode.scrollTop = elem.offsetTop - elem.parentNode.offsetTop; - } - }, - - createItems: function(sb, value) { - var sbox = this, - val = (value || '').trim().split(/\s+/), - ul = sb.querySelector('ul'); - - if (!sbox.multi) - val.length = Math.min(val.length, 1); - - val.forEach(function(item) { - var new_item = null; - - ul.childNodes.forEach(function(li) { - if (li.getAttribute && li.getAttribute('value') === item) - new_item = li; - }); - - if (!new_item) { - var markup, - tpl = sb.querySelector(sbox.template); - - if (tpl) - markup = (tpl.textContent || tpl.innerHTML || tpl.firstChild.data).replace(/^$/, '').trim(); - else - markup = '
  • {{value}}
  • '; - - new_item = E(markup.replace(/{{value}}/g, item)); - - if (sbox.multi) { - sbox.transformItem(sb, new_item); - } - else { - var old = ul.querySelector('li[created]'); - if (old) - ul.removeChild(old); - - new_item.setAttribute('created', ''); - } - - new_item = ul.insertBefore(new_item, ul.lastElementChild); - } - - sbox.toggleItem(sb, new_item, true); - sbox.setFocus(sb, new_item, true); - }); - }, - - closeAllDropdowns: function() { - document.querySelectorAll('.cbi-dropdown[open]').forEach(function(s) { - s.dispatchEvent(new CustomEvent('cbi-dropdown-close', {})); - }); - } -}; - -function cbi_dropdown_init(sb) { - if (!(this instanceof cbi_dropdown_init)) - return new cbi_dropdown_init(sb); - - this.multi = sb.hasAttribute('multiple'); - this.optional = sb.hasAttribute('optional'); - this.placeholder = sb.getAttribute('placeholder') || '---'; - this.display_items = parseInt(sb.getAttribute('display-items') || 3); - this.dropdown_items = parseInt(sb.getAttribute('dropdown-items') || 5); - this.create = sb.getAttribute('item-create') || '.create-item-input'; - this.template = sb.getAttribute('item-template') || 'script[type="item-template"]'; - - var sbox = this, - ul = sb.querySelector('ul'), - items = ul.querySelectorAll('li'), - more = sb.appendChild(E('span', { class: 'more', tabindex: -1 }, '···')), - open = sb.appendChild(E('span', { class: 'open', tabindex: -1 }, '▾')), - canary = sb.appendChild(E('div')), - create = sb.querySelector(this.create), - ndisplay = this.display_items, - n = 0; - - if (this.multi) { - for (var i = 0; i < items.length; i++) { - sbox.transformItem(sb, items[i]); - - if (items[i].hasAttribute('selected') && ndisplay-- > 0) - items[i].setAttribute('display', n++); - } - } - else { - var sel = sb.querySelectorAll('[selected]'); - - sel.forEach(function(s) { - s.removeAttribute('selected'); - }); - - var s = sel[0] || items[0]; - if (s) { - s.setAttribute('selected', ''); - s.setAttribute('display', n++); - } - - ndisplay--; - - if (this.optional && !ul.querySelector('li[value=""]')) { - var placeholder = E('li', { placeholder: '' }, this.placeholder); - ul.firstChild ? ul.insertBefore(placeholder, ul.firstChild) : ul.appendChild(placeholder); - } - } - - sbox.saveValues(sb, ul); - - ul.setAttribute('tabindex', -1); - sb.setAttribute('tabindex', 0); - - if (ndisplay < 0) - sb.setAttribute('more', '') - else - sb.removeAttribute('more'); - - if (ndisplay === this.display_items) - sb.setAttribute('empty', '') - else - sb.removeAttribute('empty'); - - more.innerHTML = (ndisplay === this.display_items) ? this.placeholder : '···'; - - - sb.addEventListener('click', function(ev) { - if (!this.hasAttribute('open')) { - if (ev.target.nodeName.toLowerCase() !== 'input') - sbox.openDropdown(this); - } - else { - var li = findParent(ev.target, 'li'); - if (li && li.parentNode.classList.contains('dropdown')) - sbox.toggleItem(this, li); - } - - ev.preventDefault(); - ev.stopPropagation(); - }); - - sb.addEventListener('keydown', function(ev) { - if (ev.target.nodeName.toLowerCase() === 'input') - return; - - if (!this.hasAttribute('open')) { - switch (ev.keyCode) { - case 37: - case 38: - case 39: - case 40: - sbox.openDropdown(this); - ev.preventDefault(); - } - } - else - { - var active = findParent(document.activeElement, 'li'); - - switch (ev.keyCode) { - case 27: - sbox.closeDropdown(this); - break; - - case 13: - if (active) { - if (!active.hasAttribute('selected')) - sbox.toggleItem(this, active); - sbox.closeDropdown(this); - ev.preventDefault(); - } - break; - - case 32: - if (active) { - sbox.toggleItem(this, active); - ev.preventDefault(); - } - break; - - case 38: - if (active && active.previousElementSibling) { - sbox.setFocus(this, active.previousElementSibling); - ev.preventDefault(); - } - break; - - case 40: - if (active && active.nextElementSibling) { - sbox.setFocus(this, active.nextElementSibling); - ev.preventDefault(); - } - break; - } - } - }); - - sb.addEventListener('cbi-dropdown-close', function(ev) { - sbox.closeDropdown(this, true); - }); - - if ('ontouchstart' in window) { - sb.addEventListener('touchstart', function(ev) { ev.stopPropagation(); }); - window.addEventListener('touchstart', sbox.closeAllDropdowns); - } - else { - sb.addEventListener('mouseover', function(ev) { - if (!this.hasAttribute('open')) - return; - - var li = findParent(ev.target, 'li'); - if (li) { - if (li.parentNode.classList.contains('dropdown')) - sbox.setFocus(this, li); - - ev.stopPropagation(); - } - }); - - sb.addEventListener('focus', function(ev) { - document.querySelectorAll('.cbi-dropdown[open]').forEach(function(s) { - if (s !== this || this.hasAttribute('open')) - s.dispatchEvent(new CustomEvent('cbi-dropdown-close', {})); - }); - }); - - canary.addEventListener('focus', function(ev) { - sbox.closeDropdown(this.parentNode); - }); - - window.addEventListener('mouseover', sbox.setFocus); - window.addEventListener('click', sbox.closeAllDropdowns); - } - - if (create) { - create.addEventListener('keydown', function(ev) { - switch (ev.keyCode) { - case 13: - sbox.createItems(sb, this.value); - ev.preventDefault(); - this.value = ''; - this.blur(); - break; - } - }); - - create.addEventListener('focus', function(ev) { - var cbox = findParent(this, 'li').querySelector('input[type="checkbox"]'); - if (cbox) cbox.checked = true; - sb.setAttribute('locked-in', ''); - }); - - create.addEventListener('blur', function(ev) { - var cbox = findParent(this, 'li').querySelector('input[type="checkbox"]'); - if (cbox) cbox.checked = false; - sb.removeAttribute('locked-in'); - }); - - var li = findParent(create, 'li'); - - li.setAttribute('unselectable', ''); - li.addEventListener('click', function(ev) { - this.querySelector(sbox.create).focus(); - }); - } -} - -cbi_dropdown_init.prototype = CBIDropdown; - -function cbi_update_table(table, data, placeholder) { - target = isElem(table) ? table : document.querySelector(table); - - if (!isElem(target)) - return; - - target.querySelectorAll('.tr.table-titles, .cbi-section-table-titles').forEach(function(thead) { - var titles = []; - - thead.querySelectorAll('.th').forEach(function(th) { - titles.push(th); - }); - - if (Array.isArray(data)) { - var n = 0, rows = target.querySelectorAll('.tr'); - - data.forEach(function(row) { - var trow = E('div', { 'class': 'tr' }); - - for (var i = 0; i < titles.length; i++) { - var text = (titles[i].innerText || '').trim(); - var td = trow.appendChild(E('div', { - 'class': titles[i].className, - 'data-title': (text !== '') ? text : null - }, row[i] || '')); - - td.classList.remove('th'); - td.classList.add('td'); - } - - trow.classList.add('cbi-rowstyle-%d'.format((n++ % 2) ? 2 : 1)); - - if (rows[n]) - target.replaceChild(trow, rows[n]); - else - target.appendChild(trow); - }); - - while (rows[++n]) - target.removeChild(rows[n]); - - if (placeholder && target.firstElementChild === target.lastElementChild) { - var trow = target.appendChild(E('div', { 'class': 'tr placeholder' })); - var td = trow.appendChild(E('div', { 'class': titles[0].className }, placeholder)); - - td.classList.remove('th'); - td.classList.add('td'); - } - } - else { - thead.parentNode.style.display = 'none'; - - thead.parentNode.querySelectorAll('.tr, .cbi-section-table-row').forEach(function(trow) { - if (trow !== thead) { - var n = 0; - trow.querySelectorAll('.th, .td').forEach(function(td) { - if (n < titles.length) { - var text = (titles[n++].innerText || '').trim(); - if (text !== '') - td.setAttribute('data-title', text); - } - }); - } - }); - - thead.parentNode.style.display = ''; - } - }); -} - -document.addEventListener('DOMContentLoaded', function() { - document.querySelectorAll('.table').forEach(cbi_update_table); -}); diff --git a/luci-base/htdocs/luci-static/resources/cbi/add.gif b/luci-base/htdocs/luci-static/resources/cbi/add.gif deleted file mode 100644 index 0888abf85..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/add.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/apply.gif b/luci-base/htdocs/luci-static/resources/cbi/apply.gif deleted file mode 100644 index 82ae7ed82..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/apply.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/arrow.gif b/luci-base/htdocs/luci-static/resources/cbi/arrow.gif deleted file mode 100644 index 10d797e9b..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/arrow.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/down.gif b/luci-base/htdocs/luci-static/resources/cbi/down.gif deleted file mode 100644 index f0bb6a4ea..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/down.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/download.gif b/luci-base/htdocs/luci-static/resources/cbi/download.gif deleted file mode 100644 index f99a5383b..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/download.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/edit.gif b/luci-base/htdocs/luci-static/resources/cbi/edit.gif deleted file mode 100644 index e06e37c75..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/edit.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/fieldadd.gif b/luci-base/htdocs/luci-static/resources/cbi/fieldadd.gif deleted file mode 100644 index eebe0fffe..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/fieldadd.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/file.gif b/luci-base/htdocs/luci-static/resources/cbi/file.gif deleted file mode 100644 index 342a8463d..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/file.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/find.gif b/luci-base/htdocs/luci-static/resources/cbi/find.gif deleted file mode 100644 index 9ae5e3489..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/find.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/folder.gif b/luci-base/htdocs/luci-static/resources/cbi/folder.gif deleted file mode 100644 index 22b583bb5..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/folder.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/help.gif b/luci-base/htdocs/luci-static/resources/cbi/help.gif deleted file mode 100644 index 9dfa0e196..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/help.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/key.gif b/luci-base/htdocs/luci-static/resources/cbi/key.gif deleted file mode 100644 index e3853e5af..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/key.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/link.gif b/luci-base/htdocs/luci-static/resources/cbi/link.gif deleted file mode 100644 index f0bb78da6..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/link.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/reload.gif b/luci-base/htdocs/luci-static/resources/cbi/reload.gif deleted file mode 100644 index 8268958a1..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/reload.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/remove.gif b/luci-base/htdocs/luci-static/resources/cbi/remove.gif deleted file mode 100644 index bf43a0a0b..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/remove.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/reset.gif b/luci-base/htdocs/luci-static/resources/cbi/reset.gif deleted file mode 100644 index c941c1902..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/reset.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/save.gif b/luci-base/htdocs/luci-static/resources/cbi/save.gif deleted file mode 100644 index 35e949963..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/save.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/up.gif b/luci-base/htdocs/luci-static/resources/cbi/up.gif deleted file mode 100644 index e8234178e..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/up.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/cbi/user.gif b/luci-base/htdocs/luci-static/resources/cbi/user.gif deleted file mode 100644 index dcb5c2a89..000000000 Binary files a/luci-base/htdocs/luci-static/resources/cbi/user.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/alias.png b/luci-base/htdocs/luci-static/resources/icons/alias.png deleted file mode 100644 index 8772bbad5..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/alias.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/alias_disabled.png b/luci-base/htdocs/luci-static/resources/icons/alias_disabled.png deleted file mode 100644 index 38d0531e3..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/alias_disabled.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/bridge.png b/luci-base/htdocs/luci-static/resources/icons/bridge.png deleted file mode 100644 index 7faadecf9..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/bridge.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png b/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png deleted file mode 100644 index b3e620b3a..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/bridge_disabled.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/ethernet.png b/luci-base/htdocs/luci-static/resources/icons/ethernet.png deleted file mode 100644 index e3d24f279..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/ethernet.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png b/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png deleted file mode 100644 index d8792df54..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/ethernet_disabled.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/loading.gif b/luci-base/htdocs/luci-static/resources/icons/loading.gif deleted file mode 100644 index 715431483..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/loading.gif and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/port_down.png b/luci-base/htdocs/luci-static/resources/icons/port_down.png deleted file mode 100644 index 5a2b235d0..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/port_down.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/port_up.png b/luci-base/htdocs/luci-static/resources/icons/port_up.png deleted file mode 100644 index 8105e77d0..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/port_up.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png b/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png deleted file mode 100644 index b3a8118af..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/signal-0-25.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/signal-0.png b/luci-base/htdocs/luci-static/resources/icons/signal-0.png deleted file mode 100644 index 333b1557b..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/signal-0.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png b/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png deleted file mode 100644 index b465de3f5..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/signal-25-50.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png b/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png deleted file mode 100644 index cd7bcaf9a..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/signal-50-75.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png b/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png deleted file mode 100644 index f7a3658df..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/signal-75-100.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/signal-none.png b/luci-base/htdocs/luci-static/resources/icons/signal-none.png deleted file mode 100644 index 4a11356af..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/signal-none.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/switch.png b/luci-base/htdocs/luci-static/resources/icons/switch.png deleted file mode 100644 index be99b19ba..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/switch.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png b/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png deleted file mode 100644 index 54588d24d..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/switch_disabled.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/tunnel.png b/luci-base/htdocs/luci-static/resources/icons/tunnel.png deleted file mode 100644 index 63eabfef5..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/tunnel.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png b/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png deleted file mode 100644 index ca79d8170..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/tunnel_disabled.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/vlan.png b/luci-base/htdocs/luci-static/resources/icons/vlan.png deleted file mode 100644 index be99b19ba..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/vlan.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png b/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png deleted file mode 100644 index 54588d24d..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/vlan_disabled.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/wifi.png b/luci-base/htdocs/luci-static/resources/icons/wifi.png deleted file mode 100644 index 80a23e8e9..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/wifi.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png b/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png deleted file mode 100644 index e989a2bd3..000000000 Binary files a/luci-base/htdocs/luci-static/resources/icons/wifi_disabled.png and /dev/null differ diff --git a/luci-base/htdocs/luci-static/resources/xhr.js b/luci-base/htdocs/luci-static/resources/xhr.js deleted file mode 100644 index 25a90e725..000000000 --- a/luci-base/htdocs/luci-static/resources/xhr.js +++ /dev/null @@ -1,268 +0,0 @@ -/* - * xhr.js - XMLHttpRequest helper class - * (c) 2008-2010 Jo-Philipp Wich - */ - -XHR = function() -{ - this.reinit = function() - { - if (window.XMLHttpRequest) { - this._xmlHttp = new XMLHttpRequest(); - } - else if (window.ActiveXObject) { - this._xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); - } - else { - alert("xhr.js: XMLHttpRequest is not supported by this browser!"); - } - } - - this.busy = function() { - if (!this._xmlHttp) - return false; - - switch (this._xmlHttp.readyState) - { - case 1: - case 2: - case 3: - return true; - - default: - return false; - } - } - - this.abort = function() { - if (this.busy()) - this._xmlHttp.abort(); - } - - this.get = function(url,data,callback,timeout) - { - this.reinit(); - - var ts = Date.now(); - var xhr = this._xmlHttp; - var code = this._encode(data); - - url = location.protocol + '//' + location.host + url; - - if (code) - if (url.substr(url.length-1,1) == '&') - url += code; - else - url += '?' + code; - - xhr.open('GET', url, true); - - if (!isNaN(timeout)) - xhr.timeout = timeout; - - xhr.onreadystatechange = function() - { - if (xhr.readyState == 4) { - var json = null; - if (xhr.getResponseHeader("Content-Type") == "application/json") { - try { json = JSON.parse(xhr.responseText); } - catch(e) { json = null; } - } - - callback(xhr, json, Date.now() - ts); - } - } - - xhr.send(null); - } - - this.post = function(url,data,callback,timeout) - { - this.reinit(); - - var ts = Date.now(); - var xhr = this._xmlHttp; - var code = this._encode(data); - - xhr.onreadystatechange = function() - { - if (xhr.readyState == 4) { - var json = null; - if (xhr.getResponseHeader("Content-Type") == "application/json") { - try { json = JSON.parse(xhr.responseText); } - catch(e) { json = null; } - } - - callback(xhr, json, Date.now() - ts); - } - } - - xhr.open('POST', url, true); - - if (!isNaN(timeout)) - xhr.timeout = timeout; - - xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); - xhr.send(code); - } - - this.cancel = function() - { - this._xmlHttp.onreadystatechange = function(){}; - this._xmlHttp.abort(); - } - - this.send_form = function(form,callback,extra_values) - { - var code = ''; - - for (var i = 0; i < form.elements.length; i++) - { - var e = form.elements[i]; - - if (e.options) - { - code += (code ? '&' : '') + - form.elements[i].name + '=' + encodeURIComponent( - e.options[e.selectedIndex].value - ); - } - else if (e.length) - { - for (var j = 0; j < e.length; j++) - if (e[j].name) { - code += (code ? '&' : '') + - e[j].name + '=' + encodeURIComponent(e[j].value); - } - } - else - { - code += (code ? '&' : '') + - e.name + '=' + encodeURIComponent(e.value); - } - } - - if (typeof extra_values == 'object') - for (var key in extra_values) - code += (code ? '&' : '') + - key + '=' + encodeURIComponent(extra_values[key]); - - return( - (form.method == 'get') - ? this.get(form.getAttribute('action'), code, callback) - : this.post(form.getAttribute('action'), code, callback) - ); - } - - this._encode = function(obj) - { - obj = obj ? obj : { }; - obj['_'] = Math.random(); - - if (typeof obj == 'object') - { - var code = ''; - var self = this; - - for (var k in obj) - code += (code ? '&' : '') + - k + '=' + encodeURIComponent(obj[k]); - - return code; - } - - return obj; - } -} - -XHR.get = function(url, data, callback) -{ - (new XHR()).get(url, data, callback); -} - -XHR.poll = function(interval, url, data, callback, post) -{ - if (isNaN(interval) || interval < 1) - interval = 5; - - if (!XHR._q) - { - XHR._t = 0; - XHR._q = [ ]; - XHR._r = function() { - for (var i = 0, e = XHR._q[0]; i < XHR._q.length; e = XHR._q[++i]) - { - if (!(XHR._t % e.interval) && !e.xhr.busy()) - e.xhr[post ? 'post' : 'get'](e.url, e.data, e.callback, e.interval * 1000 * 5 - 5); - } - - XHR._t++; - }; - } - - var e = { - interval: interval, - callback: callback, - url: url, - data: data, - xhr: new XHR() - }; - - XHR._q.push(e); - - return e; -} - -XHR.stop = function(e) -{ - for (var i = 0; XHR._q && XHR._q[i]; i++) { - if (XHR._q[i] === e) { - e.xhr.cancel(); - XHR._q.splice(i, 1); - return true; - } - } - - return false; -} - -XHR.halt = function() -{ - if (XHR._i) - { - /* show & set poll indicator */ - try { - document.getElementById('xhr_poll_status').style.display = ''; - document.getElementById('xhr_poll_status_on').style.display = 'none'; - document.getElementById('xhr_poll_status_off').style.display = ''; - } catch(e) { } - - window.clearInterval(XHR._i); - XHR._i = null; - } -} - -XHR.run = function() -{ - if (XHR._r && !XHR._i) - { - /* show & set poll indicator */ - try { - document.getElementById('xhr_poll_status').style.display = ''; - document.getElementById('xhr_poll_status_on').style.display = ''; - document.getElementById('xhr_poll_status_off').style.display = 'none'; - } catch(e) { } - - /* kick first round manually to prevent one second lag when setting up - * the poll interval */ - XHR._r(); - XHR._i = window.setInterval(XHR._r, 1000); - } -} - -XHR.running = function() -{ - return !!(XHR._r && XHR._i); -} - -document.addEventListener('DOMContentLoaded', XHR.run); diff --git a/luci-base/luasrc/cacheloader.lua b/luci-base/luasrc/cacheloader.lua deleted file mode 100644 index 11e5f6900..000000000 --- a/luci-base/luasrc/cacheloader.lua +++ /dev/null @@ -1,12 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local config = require "luci.config" -local ccache = require "luci.ccache" - -module "luci.cacheloader" - -if config.ccache and config.ccache.enable == "1" then - ccache.cache_ondemand() -end \ No newline at end of file diff --git a/luci-base/luasrc/cbi.lua b/luci-base/luasrc/cbi.lua deleted file mode 100644 index d275c5b27..000000000 --- a/luci-base/luasrc/cbi.lua +++ /dev/null @@ -1,1964 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -module("luci.cbi", package.seeall) - -require("luci.template") -local util = require("luci.util") -require("luci.http") - - ---local event = require "luci.sys.event" -local fs = require("nixio.fs") -local uci = require("luci.model.uci") -local datatypes = require("luci.cbi.datatypes") -local dispatcher = require("luci.dispatcher") -local class = util.class -local instanceof = util.instanceof - -FORM_NODATA = 0 -FORM_PROCEED = 0 -FORM_VALID = 1 -FORM_DONE = 1 -FORM_INVALID = -1 -FORM_CHANGED = 2 -FORM_SKIP = 4 - -AUTO = true - -CREATE_PREFIX = "cbi.cts." -REMOVE_PREFIX = "cbi.rts." -RESORT_PREFIX = "cbi.sts." -FEXIST_PREFIX = "cbi.cbe." - --- Loads a CBI map from given file, creating an environment and returns it -function load(cbimap, ...) - local fs = require "nixio.fs" - local i18n = require "luci.i18n" - require("luci.config") - require("luci.util") - - local upldir = "/etc/luci-uploads/" - local cbidir = luci.util.libpath() .. "/model/cbi/" - local func, err - - if fs.access(cbidir..cbimap..".lua") then - func, err = loadfile(cbidir..cbimap..".lua") - elseif fs.access(cbimap) then - func, err = loadfile(cbimap) - else - func, err = nil, "Model '" .. cbimap .. "' not found!" - end - - assert(func, err) - - local env = { - translate=i18n.translate, - translatef=i18n.translatef, - arg={...} - } - - setfenv(func, setmetatable(env, {__index = - function(tbl, key) - return rawget(tbl, key) or _M[key] or _G[key] - end})) - - local maps = { func() } - local uploads = { } - local has_upload = false - - for i, map in ipairs(maps) do - if not instanceof(map, Node) then - error("CBI map returns no valid map object!") - return nil - else - map:prepare() - if map.upload_fields then - has_upload = true - for _, field in ipairs(map.upload_fields) do - uploads[ - field.config .. '.' .. - (field.section.sectiontype or '1') .. '.' .. - field.option - ] = true - end - end - end - end - - if has_upload then - local uci = luci.model.uci.cursor() - local prm = luci.http.context.request.message.params - local fd, cbid - - luci.http.setfilehandler( - function( field, chunk, eof ) - if not field then return end - if field.name and not cbid then - local c, s, o = field.name:gmatch( - "cbid%.([^%.]+)%.([^%.]+)%.([^%.]+)" - )() - - if c and s and o then - local t = uci:get( c, s ) or s - if uploads[c.."."..t.."."..o] then - local path = upldir .. field.name - fd = io.open(path, "w") - if fd then - cbid = field.name - prm[cbid] = path - end - end - end - end - - if field.name == cbid and fd then - fd:write(chunk) - end - - if eof and fd then - fd:close() - fd = nil - cbid = nil - end - end - ) - end - - return maps -end - --- --- Compile a datatype specification into a parse tree for evaluation later on --- -local cdt_cache = { } - -function compile_datatype(code) - local i - local pos = 0 - local esc = false - local depth = 0 - local stack = { } - - for i = 1, #code+1 do - local byte = code:byte(i) or 44 - if esc then - esc = false - elseif byte == 92 then - esc = true - elseif byte == 40 or byte == 44 then - if depth <= 0 then - if pos < i then - local label = code:sub(pos, i-1) - :gsub("\\(.)", "%1") - :gsub("^%s+", "") - :gsub("%s+$", "") - - if #label > 0 and tonumber(label) then - stack[#stack+1] = tonumber(label) - elseif label:match("^'.*'$") or label:match('^".*"$') then - stack[#stack+1] = label:gsub("[\"'](.*)[\"']", "%1") - elseif type(datatypes[label]) == "function" then - stack[#stack+1] = datatypes[label] - stack[#stack+1] = { } - else - error("Datatype error, bad token %q" % label) - end - end - pos = i + 1 - end - depth = depth + (byte == 40 and 1 or 0) - elseif byte == 41 then - depth = depth - 1 - if depth <= 0 then - if type(stack[#stack-1]) ~= "function" then - error("Datatype error, argument list follows non-function") - end - stack[#stack] = compile_datatype(code:sub(pos, i-1)) - pos = i + 1 - end - end - end - - return stack -end - -function verify_datatype(dt, value) - if dt and #dt > 0 then - if not cdt_cache[dt] then - local c = compile_datatype(dt) - if c and type(c[1]) == "function" then - cdt_cache[dt] = c - else - error("Datatype error, not a function expression") - end - end - if cdt_cache[dt] then - return cdt_cache[dt][1](value, unpack(cdt_cache[dt][2])) - end - end - return true -end - - --- Node pseudo abstract class -Node = class() - -function Node.__init__(self, title, description) - self.children = {} - self.title = title or "" - self.description = description or "" - self.template = "cbi/node" -end - --- hook helper -function Node._run_hook(self, hook) - if type(self[hook]) == "function" then - return self[hook](self) - end -end - -function Node._run_hooks(self, ...) - local f - local r = false - for _, f in ipairs(arg) do - if type(self[f]) == "function" then - self[f](self) - r = true - end - end - return r -end - --- Prepare nodes -function Node.prepare(self, ...) - for k, child in ipairs(self.children) do - child:prepare(...) - end -end - --- Append child nodes -function Node.append(self, obj) - table.insert(self.children, obj) -end - --- Parse this node and its children -function Node.parse(self, ...) - for k, child in ipairs(self.children) do - child:parse(...) - end -end - --- Render this node -function Node.render(self, scope) - scope = scope or {} - scope.self = self - - luci.template.render(self.template, scope) -end - --- Render the children -function Node.render_children(self, ...) - local k, node - for k, node in ipairs(self.children) do - node.last_child = (k == #self.children) - node.index = k - node:render(...) - end -end - - ---[[ -A simple template element -]]-- -Template = class(Node) - -function Template.__init__(self, template) - Node.__init__(self) - self.template = template -end - -function Template.render(self) - luci.template.render(self.template, {self=self}) -end - -function Template.parse(self, readinput) - self.readinput = (readinput ~= false) - return Map.formvalue(self, "cbi.submit") and FORM_DONE or FORM_NODATA -end - - ---[[ -Map - A map describing a configuration file -]]-- -Map = class(Node) - -function Map.__init__(self, config, ...) - Node.__init__(self, ...) - - self.config = config - self.parsechain = {self.config} - self.template = "cbi/map" - self.apply_on_parse = nil - self.readinput = true - self.proceed = false - self.flow = {} - - self.uci = uci.cursor() - self.save = true - - self.changed = false - - local path = "%s/%s" %{ self.uci:get_confdir(), self.config } - if fs.stat(path, "type") ~= "reg" then - fs.writefile(path, "") - end - - local ok, err = self.uci:load(self.config) - if not ok then - local url = dispatcher.build_url(unpack(dispatcher.context.request)) - local source = self:formvalue("cbi.source") - if type(source) == "string" then - fs.writefile(path, source:gsub("\r\n", "\n")) - ok, err = self.uci:load(self.config) - if ok then - luci.http.redirect(url) - end - end - self.save = false - end - - if not ok then - self.template = "cbi/error" - self.error = err - self.source = fs.readfile(path) or "" - self.pageaction = false - end -end - -function Map.formvalue(self, key) - return self.readinput and luci.http.formvalue(key) or nil -end - -function Map.formvaluetable(self, key) - return self.readinput and luci.http.formvaluetable(key) or {} -end - -function Map.get_scheme(self, sectiontype, option) - if not option then - return self.scheme and self.scheme.sections[sectiontype] - else - return self.scheme and self.scheme.variables[sectiontype] - and self.scheme.variables[sectiontype][option] - end -end - -function Map.submitstate(self) - return self:formvalue("cbi.submit") -end - --- Chain foreign config -function Map.chain(self, config) - table.insert(self.parsechain, config) -end - -function Map.state_handler(self, state) - return state -end - --- Use optimized UCI writing -function Map.parse(self, readinput, ...) - if self:formvalue("cbi.skip") then - self.state = FORM_SKIP - elseif not self.save then - self.state = FORM_INVALID - elseif not self:submitstate() then - self.state = FORM_NODATA - end - - -- Back out early to prevent unauthorized changes on the subsequent parse - if self.state ~= nil then - return self:state_handler(self.state) - end - - self.readinput = (readinput ~= false) - self:_run_hooks("on_parse") - - Node.parse(self, ...) - - if self.save then - self:_run_hooks("on_save", "on_before_save") - local i, config - for i, config in ipairs(self.parsechain) do - self.uci:save(config) - end - self:_run_hooks("on_after_save") - if (not self.proceed and self.flow.autoapply) or luci.http.formvalue("cbi.apply") then - self:_run_hooks("on_before_commit") - if self.apply_on_parse == false then - for i, config in ipairs(self.parsechain) do - self.uci:commit(config) - end - end - self:_run_hooks("on_commit", "on_after_commit", "on_before_apply") - if self.apply_on_parse == true or self.apply_on_parse == false then - self.uci:apply(self.apply_on_parse) - self:_run_hooks("on_apply", "on_after_apply") - else - -- This is evaluated by the dispatcher and delegated to the - -- template which in turn fires XHR to perform the actual - -- apply actions. - self.apply_needed = true - end - - -- Reparse sections - Node.parse(self, true) - end - for i, config in ipairs(self.parsechain) do - self.uci:unload(config) - end - if type(self.commit_handler) == "function" then - self:commit_handler(self:submitstate()) - end - end - - if not self.save then - self.state = FORM_INVALID - elseif self.proceed then - self.state = FORM_PROCEED - elseif self.changed then - self.state = FORM_CHANGED - else - self.state = FORM_VALID - end - - return self:state_handler(self.state) -end - -function Map.render(self, ...) - self:_run_hooks("on_init") - Node.render(self, ...) -end - --- Creates a child section -function Map.section(self, class, ...) - if instanceof(class, AbstractSection) then - local obj = class(self, ...) - self:append(obj) - return obj - else - error("class must be a descendent of AbstractSection") - end -end - --- UCI add -function Map.add(self, sectiontype) - return self.uci:add(self.config, sectiontype) -end - --- UCI set -function Map.set(self, section, option, value) - if type(value) ~= "table" or #value > 0 then - if option then - return self.uci:set(self.config, section, option, value) - else - return self.uci:set(self.config, section, value) - end - else - return Map.del(self, section, option) - end -end - --- UCI del -function Map.del(self, section, option) - if option then - return self.uci:delete(self.config, section, option) - else - return self.uci:delete(self.config, section) - end -end - --- UCI get -function Map.get(self, section, option) - if not section then - return self.uci:get_all(self.config) - elseif option then - return self.uci:get(self.config, section, option) - else - return self.uci:get_all(self.config, section) - end -end - ---[[ -Compound - Container -]]-- -Compound = class(Node) - -function Compound.__init__(self, ...) - Node.__init__(self) - self.template = "cbi/compound" - self.children = {...} -end - -function Compound.populate_delegator(self, delegator) - for _, v in ipairs(self.children) do - v.delegator = delegator - end -end - -function Compound.parse(self, ...) - local cstate, state = 0 - - for k, child in ipairs(self.children) do - cstate = child:parse(...) - state = (not state or cstate < state) and cstate or state - end - - return state -end - - ---[[ -Delegator - Node controller -]]-- -Delegator = class(Node) -function Delegator.__init__(self, ...) - Node.__init__(self, ...) - self.nodes = {} - self.defaultpath = {} - self.pageaction = false - self.readinput = true - self.allow_reset = false - self.allow_cancel = false - self.allow_back = false - self.allow_finish = false - self.template = "cbi/delegator" -end - -function Delegator.set(self, name, node) - assert(not self.nodes[name], "Duplicate entry") - - self.nodes[name] = node -end - -function Delegator.add(self, name, node) - node = self:set(name, node) - self.defaultpath[#self.defaultpath+1] = name -end - -function Delegator.insert_after(self, name, after) - local n = #self.chain + 1 - for k, v in ipairs(self.chain) do - if v == after then - n = k + 1 - break - end - end - table.insert(self.chain, n, name) -end - -function Delegator.set_route(self, ...) - local n, chain, route = 0, self.chain, {...} - for i = 1, #chain do - if chain[i] == self.current then - n = i - break - end - end - for i = 1, #route do - n = n + 1 - chain[n] = route[i] - end - for i = n + 1, #chain do - chain[i] = nil - end -end - -function Delegator.get(self, name) - local node = self.nodes[name] - - if type(node) == "string" then - node = load(node, name) - end - - if type(node) == "table" and getmetatable(node) == nil then - node = Compound(unpack(node)) - end - - return node -end - -function Delegator.parse(self, ...) - if self.allow_cancel and Map.formvalue(self, "cbi.cancel") then - if self:_run_hooks("on_cancel") then - return FORM_DONE - end - end - - if not Map.formvalue(self, "cbi.delg.current") then - self:_run_hooks("on_init") - end - - local newcurrent - self.chain = self.chain or self:get_chain() - self.current = self.current or self:get_active() - self.active = self.active or self:get(self.current) - assert(self.active, "Invalid state") - - local stat = FORM_DONE - if type(self.active) ~= "function" then - self.active:populate_delegator(self) - stat = self.active:parse() - else - self:active() - end - - if stat > FORM_PROCEED then - if Map.formvalue(self, "cbi.delg.back") then - newcurrent = self:get_prev(self.current) - else - newcurrent = self:get_next(self.current) - end - elseif stat < FORM_PROCEED then - return stat - end - - - if not Map.formvalue(self, "cbi.submit") then - return FORM_NODATA - elseif stat > FORM_PROCEED - and (not newcurrent or not self:get(newcurrent)) then - return self:_run_hook("on_done") or FORM_DONE - else - self.current = newcurrent or self.current - self.active = self:get(self.current) - if type(self.active) ~= "function" then - self.active:populate_delegator(self) - local stat = self.active:parse(false) - if stat == FORM_SKIP then - return self:parse(...) - else - return FORM_PROCEED - end - else - return self:parse(...) - end - end -end - -function Delegator.get_next(self, state) - for k, v in ipairs(self.chain) do - if v == state then - return self.chain[k+1] - end - end -end - -function Delegator.get_prev(self, state) - for k, v in ipairs(self.chain) do - if v == state then - return self.chain[k-1] - end - end -end - -function Delegator.get_chain(self) - local x = Map.formvalue(self, "cbi.delg.path") or self.defaultpath - return type(x) == "table" and x or {x} -end - -function Delegator.get_active(self) - return Map.formvalue(self, "cbi.delg.current") or self.chain[1] -end - ---[[ -Page - A simple node -]]-- - -Page = class(Node) -Page.__init__ = Node.__init__ -Page.parse = function() end - - ---[[ -SimpleForm - A Simple non-UCI form -]]-- -SimpleForm = class(Node) - -function SimpleForm.__init__(self, config, title, description, data) - Node.__init__(self, title, description) - self.config = config - self.data = data or {} - self.template = "cbi/simpleform" - self.dorender = true - self.pageaction = false - self.readinput = true -end - -SimpleForm.formvalue = Map.formvalue -SimpleForm.formvaluetable = Map.formvaluetable - -function SimpleForm.parse(self, readinput, ...) - self.readinput = (readinput ~= false) - - if self:formvalue("cbi.skip") then - return FORM_SKIP - end - - if self:formvalue("cbi.cancel") and self:_run_hooks("on_cancel") then - return FORM_DONE - end - - if self:submitstate() then - Node.parse(self, 1, ...) - end - - local valid = true - for k, j in ipairs(self.children) do - for i, v in ipairs(j.children) do - valid = valid - and (not v.tag_missing or not v.tag_missing[1]) - and (not v.tag_invalid or not v.tag_invalid[1]) - and (not v.error) - end - end - - local state = - not self:submitstate() and FORM_NODATA - or valid and FORM_VALID - or FORM_INVALID - - self.dorender = not self.handle - if self.handle then - local nrender, nstate = self:handle(state, self.data) - self.dorender = self.dorender or (nrender ~= false) - state = nstate or state - end - return state -end - -function SimpleForm.render(self, ...) - if self.dorender then - Node.render(self, ...) - end -end - -function SimpleForm.submitstate(self) - return self:formvalue("cbi.submit") -end - -function SimpleForm.section(self, class, ...) - if instanceof(class, AbstractSection) then - local obj = class(self, ...) - self:append(obj) - return obj - else - error("class must be a descendent of AbstractSection") - end -end - --- Creates a child field -function SimpleForm.field(self, class, ...) - local section - for k, v in ipairs(self.children) do - if instanceof(v, SimpleSection) then - section = v - break - end - end - if not section then - section = self:section(SimpleSection) - end - - if instanceof(class, AbstractValue) then - local obj = class(self, section, ...) - obj.track_missing = true - section:append(obj) - return obj - else - error("class must be a descendent of AbstractValue") - end -end - -function SimpleForm.set(self, section, option, value) - self.data[option] = value -end - - -function SimpleForm.del(self, section, option) - self.data[option] = nil -end - - -function SimpleForm.get(self, section, option) - return self.data[option] -end - - -function SimpleForm.get_scheme() - return nil -end - - -Form = class(SimpleForm) - -function Form.__init__(self, ...) - SimpleForm.__init__(self, ...) - self.embedded = true -end - - ---[[ -AbstractSection -]]-- -AbstractSection = class(Node) - -function AbstractSection.__init__(self, map, sectiontype, ...) - Node.__init__(self, ...) - self.sectiontype = sectiontype - self.map = map - self.config = map.config - self.optionals = {} - self.defaults = {} - self.fields = {} - self.tag_error = {} - self.tag_invalid = {} - self.tag_deperror = {} - self.changed = false - - self.optional = true - self.addremove = false - self.dynamic = false -end - --- Define a tab for the section -function AbstractSection.tab(self, tab, title, desc) - self.tabs = self.tabs or { } - self.tab_names = self.tab_names or { } - - self.tab_names[#self.tab_names+1] = tab - self.tabs[tab] = { - title = title, - description = desc, - childs = { } - } -end - --- Check whether the section has tabs -function AbstractSection.has_tabs(self) - return (self.tabs ~= nil) and (next(self.tabs) ~= nil) -end - --- Appends a new option -function AbstractSection.option(self, class, option, ...) - if instanceof(class, AbstractValue) then - local obj = class(self.map, self, option, ...) - self:append(obj) - self.fields[option] = obj - return obj - elseif class == true then - error("No valid class was given and autodetection failed.") - else - error("class must be a descendant of AbstractValue") - end -end - --- Appends a new tabbed option -function AbstractSection.taboption(self, tab, ...) - - assert(tab and self.tabs and self.tabs[tab], - "Cannot assign option to not existing tab %q" % tostring(tab)) - - local l = self.tabs[tab].childs - local o = AbstractSection.option(self, ...) - - if o then l[#l+1] = o end - - return o -end - --- Render a single tab -function AbstractSection.render_tab(self, tab, ...) - - assert(tab and self.tabs and self.tabs[tab], - "Cannot render not existing tab %q" % tostring(tab)) - - local k, node - for k, node in ipairs(self.tabs[tab].childs) do - node.last_child = (k == #self.tabs[tab].childs) - node.index = k - node:render(...) - end -end - --- Parse optional options -function AbstractSection.parse_optionals(self, section, noparse) - if not self.optional then - return - end - - self.optionals[section] = {} - - local field = nil - if not noparse then - field = self.map:formvalue("cbi.opt."..self.config.."."..section) - end - - for k,v in ipairs(self.children) do - if v.optional and not v:cfgvalue(section) and not self:has_tabs() then - if field == v.option then - field = nil - self.map.proceed = true - else - table.insert(self.optionals[section], v) - end - end - end - - if field and #field > 0 and self.dynamic then - self:add_dynamic(field) - end -end - --- Add a dynamic option -function AbstractSection.add_dynamic(self, field, optional) - local o = self:option(Value, field, field) - o.optional = optional -end - --- Parse all dynamic options -function AbstractSection.parse_dynamic(self, section) - if not self.dynamic then - return - end - - local arr = luci.util.clone(self:cfgvalue(section)) - local form = self.map:formvaluetable("cbid."..self.config.."."..section) - for k, v in pairs(form) do - arr[k] = v - end - - for key,val in pairs(arr) do - local create = true - - for i,c in ipairs(self.children) do - if c.option == key then - create = false - end - end - - if create and key:sub(1, 1) ~= "." then - self.map.proceed = true - self:add_dynamic(key, true) - end - end -end - --- Returns the section's UCI table -function AbstractSection.cfgvalue(self, section) - return self.map:get(section) -end - --- Push events -function AbstractSection.push_events(self) - --luci.util.append(self.map.events, self.events) - self.map.changed = true -end - --- Removes the section -function AbstractSection.remove(self, section) - self.map.proceed = true - return self.map:del(section) -end - --- Creates the section -function AbstractSection.create(self, section) - local stat - - if section then - stat = section:match("^[%w_]+$") and self.map:set(section, nil, self.sectiontype) - else - section = self.map:add(self.sectiontype) - stat = section - end - - if stat then - for k,v in pairs(self.children) do - if v.default then - self.map:set(section, v.option, v.default) - end - end - - for k,v in pairs(self.defaults) do - self.map:set(section, k, v) - end - end - - self.map.proceed = true - - return stat -end - - -SimpleSection = class(AbstractSection) - -function SimpleSection.__init__(self, form, ...) - AbstractSection.__init__(self, form, nil, ...) - self.template = "cbi/nullsection" -end - - -Table = class(AbstractSection) - -function Table.__init__(self, form, data, ...) - local datasource = {} - local tself = self - datasource.config = "table" - self.data = data or {} - - datasource.formvalue = Map.formvalue - datasource.formvaluetable = Map.formvaluetable - datasource.readinput = true - - function datasource.get(self, section, option) - return tself.data[section] and tself.data[section][option] - end - - function datasource.submitstate(self) - return Map.formvalue(self, "cbi.submit") - end - - function datasource.del(...) - return true - end - - function datasource.get_scheme() - return nil - end - - AbstractSection.__init__(self, datasource, "table", ...) - self.template = "cbi/tblsection" - self.rowcolors = true - self.anonymous = true -end - -function Table.parse(self, readinput) - self.map.readinput = (readinput ~= false) - for i, k in ipairs(self:cfgsections()) do - if self.map:submitstate() then - Node.parse(self, k) - end - end -end - -function Table.cfgsections(self) - local sections = {} - - for i, v in luci.util.kspairs(self.data) do - table.insert(sections, i) - end - - return sections -end - -function Table.update(self, data) - self.data = data -end - - - ---[[ -NamedSection - A fixed configuration section defined by its name -]]-- -NamedSection = class(AbstractSection) - -function NamedSection.__init__(self, map, section, stype, ...) - AbstractSection.__init__(self, map, stype, ...) - - -- Defaults - self.addremove = false - self.template = "cbi/nsection" - self.section = section -end - -function NamedSection.prepare(self) - AbstractSection.prepare(self) - AbstractSection.parse_optionals(self, self.section, true) -end - -function NamedSection.parse(self, novld) - local s = self.section - local active = self:cfgvalue(s) - - if self.addremove then - local path = self.config.."."..s - if active then -- Remove the section - if self.map:formvalue("cbi.rns."..path) and self:remove(s) then - self:push_events() - return - end - else -- Create and apply default values - if self.map:formvalue("cbi.cns."..path) then - self:create(s) - return - end - end - end - - if active then - AbstractSection.parse_dynamic(self, s) - if self.map:submitstate() then - Node.parse(self, s) - end - AbstractSection.parse_optionals(self, s) - - if self.changed then - self:push_events() - end - end -end - - ---[[ -TypedSection - A (set of) configuration section(s) defined by the type - addremove: Defines whether the user can add/remove sections of this type - anonymous: Allow creating anonymous sections - validate: a validation function returning nil if the section is invalid -]]-- -TypedSection = class(AbstractSection) - -function TypedSection.__init__(self, map, type, ...) - AbstractSection.__init__(self, map, type, ...) - - self.template = "cbi/tsection" - self.deps = {} - self.anonymous = false -end - -function TypedSection.prepare(self) - AbstractSection.prepare(self) - - local i, s - for i, s in ipairs(self:cfgsections()) do - AbstractSection.parse_optionals(self, s, true) - end -end - --- Return all matching UCI sections for this TypedSection -function TypedSection.cfgsections(self) - local sections = {} - self.map.uci:foreach(self.map.config, self.sectiontype, - function (section) - if self:checkscope(section[".name"]) then - table.insert(sections, section[".name"]) - end - end) - - return sections -end - --- Limits scope to sections that have certain option => value pairs -function TypedSection.depends(self, option, value) - table.insert(self.deps, {option=option, value=value}) -end - -function TypedSection.parse(self, novld) - if self.addremove then - -- Remove - local crval = REMOVE_PREFIX .. self.config - local name = self.map:formvaluetable(crval) - for k,v in pairs(name) do - if k:sub(-2) == ".x" then - k = k:sub(1, #k - 2) - end - if self:cfgvalue(k) and self:checkscope(k) then - self:remove(k) - end - end - end - - local co - for i, k in ipairs(self:cfgsections()) do - AbstractSection.parse_dynamic(self, k) - if self.map:submitstate() then - Node.parse(self, k, novld) - end - AbstractSection.parse_optionals(self, k) - end - - if self.addremove then - -- Create - local created - local crval = CREATE_PREFIX .. self.config .. "." .. self.sectiontype - local origin, name = next(self.map:formvaluetable(crval)) - if self.anonymous then - if name then - created = self:create(nil, origin) - end - else - if name then - -- Ignore if it already exists - if self:cfgvalue(name) then - name = nil; - end - - name = self:checkscope(name) - - if not name then - self.err_invalid = true - end - - if name and #name > 0 then - created = self:create(name, origin) and name - if not created then - self.invalid_cts = true - end - end - end - end - - if created then - AbstractSection.parse_optionals(self, created) - end - end - - if self.sortable then - local stval = RESORT_PREFIX .. self.config .. "." .. self.sectiontype - local order = self.map:formvalue(stval) - if order and #order > 0 then - local sids, sid = { }, nil - for sid in util.imatch(order) do - sids[#sids+1] = sid - end - if #sids > 0 then - self.map.uci:reorder(self.config, sids) - self.changed = true - end - end - end - - if created or self.changed then - self:push_events() - end -end - --- Verifies scope of sections -function TypedSection.checkscope(self, section) - -- Check if we are not excluded - if self.filter and not self:filter(section) then - return nil - end - - -- Check if at least one dependency is met - if #self.deps > 0 and self:cfgvalue(section) then - local stat = false - - for k, v in ipairs(self.deps) do - if self:cfgvalue(section)[v.option] == v.value then - stat = true - end - end - - if not stat then - return nil - end - end - - return self:validate(section) -end - - --- Dummy validate function -function TypedSection.validate(self, section) - return section -end - - ---[[ -AbstractValue - An abstract Value Type - null: Value can be empty - valid: A function returning the value if it is valid otherwise nil - depends: A table of option => value pairs of which one must be true - default: The default value - size: The size of the input fields - rmempty: Unset value if empty - optional: This value is optional (see AbstractSection.optionals) -]]-- -AbstractValue = class(Node) - -function AbstractValue.__init__(self, map, section, option, ...) - Node.__init__(self, ...) - self.section = section - self.option = option - self.map = map - self.config = map.config - self.tag_invalid = {} - self.tag_missing = {} - self.tag_reqerror = {} - self.tag_error = {} - self.deps = {} - --self.cast = "string" - - self.track_missing = false - self.rmempty = true - self.default = nil - self.size = nil - self.optional = false -end - -function AbstractValue.prepare(self) - self.cast = self.cast or "string" -end - --- Add a dependencie to another section field -function AbstractValue.depends(self, field, value) - local deps - if type(field) == "string" then - deps = {} - deps[field] = value - else - deps = field - end - - table.insert(self.deps, deps) -end - --- Serialize dependencies -function AbstractValue.deplist2json(self, section, deplist) - local deps, i, d = { } - - if type(self.deps) == "table" then - for i, d in ipairs(deplist or self.deps) do - local a, k, v = { } - for k, v in pairs(d) do - if k:find("!", 1, true) then - a[k] = v - elseif k:find(".", 1, true) then - a['cbid.%s' % k] = v - else - a['cbid.%s.%s.%s' %{ self.config, section, k }] = v - end - end - deps[#deps+1] = a - end - end - - return util.serialize_json(deps) -end - --- Generates the unique CBID -function AbstractValue.cbid(self, section) - return "cbid."..self.map.config.."."..section.."."..self.option -end - --- Return whether this object should be created -function AbstractValue.formcreated(self, section) - local key = "cbi.opt."..self.config.."."..section - return (self.map:formvalue(key) == self.option) -end - --- Returns the formvalue for this object -function AbstractValue.formvalue(self, section) - return self.map:formvalue(self:cbid(section)) -end - -function AbstractValue.additional(self, value) - self.optional = value -end - -function AbstractValue.mandatory(self, value) - self.rmempty = not value -end - -function AbstractValue.add_error(self, section, type, msg) - self.error = self.error or { } - self.error[section] = msg or type - - self.section.error = self.section.error or { } - self.section.error[section] = self.section.error[section] or { } - table.insert(self.section.error[section], msg or type) - - if type == "invalid" then - self.tag_invalid[section] = true - elseif type == "missing" then - self.tag_missing[section] = true - end - - self.tag_error[section] = true - self.map.save = false -end - -function AbstractValue.parse(self, section, novld) - local fvalue = self:formvalue(section) - local cvalue = self:cfgvalue(section) - - -- If favlue and cvalue are both tables and have the same content - -- make them identical - if type(fvalue) == "table" and type(cvalue) == "table" then - local equal = #fvalue == #cvalue - if equal then - for i=1, #fvalue do - if cvalue[i] ~= fvalue[i] then - equal = false - end - end - end - if equal then - fvalue = cvalue - end - end - - if fvalue and #fvalue > 0 then -- If we have a form value, write it to UCI - local val_err - fvalue, val_err = self:validate(fvalue, section) - fvalue = self:transform(fvalue) - - if not fvalue and not novld then - self:add_error(section, "invalid", val_err) - end - - if self.alias then - self.section.aliased = self.section.aliased or {} - self.section.aliased[section] = self.section.aliased[section] or {} - self.section.aliased[section][self.alias] = true - end - - if fvalue and (self.forcewrite or not (fvalue == cvalue)) then - if self:write(section, fvalue) then - -- Push events - self.section.changed = true - --luci.util.append(self.map.events, self.events) - end - end - else -- Unset the UCI or error - if self.rmempty or self.optional then - if not self.alias or - not self.section.aliased or - not self.section.aliased[section] or - not self.section.aliased[section][self.alias] - then - if self:remove(section) then - -- Push events - self.section.changed = true - --luci.util.append(self.map.events, self.events) - end - end - elseif cvalue ~= fvalue and not novld then - -- trigger validator with nil value to get custom user error msg. - local _, val_err = self:validate(nil, section) - self:add_error(section, "missing", val_err) - end - end -end - --- Render if this value exists or if it is mandatory -function AbstractValue.render(self, s, scope) - if not self.optional or self.section:has_tabs() or self:cfgvalue(s) or self:formcreated(s) then - scope = scope or {} - scope.section = s - scope.cbid = self:cbid(s) - Node.render(self, scope) - end -end - --- Return the UCI value of this object -function AbstractValue.cfgvalue(self, section) - local value - if self.tag_error[section] then - value = self:formvalue(section) - else - value = self.map:get(section, self.alias or self.option) - end - - if not value then - return nil - elseif not self.cast or self.cast == type(value) then - return value - elseif self.cast == "string" then - if type(value) == "table" then - return value[1] - end - elseif self.cast == "table" then - return { value } - end -end - --- Validate the form value -function AbstractValue.validate(self, value) - if self.datatype and value then - if type(value) == "table" then - local v - for _, v in ipairs(value) do - if v and #v > 0 and not verify_datatype(self.datatype, v) then - return nil - end - end - else - if not verify_datatype(self.datatype, value) then - return nil - end - end - end - - return value -end - -AbstractValue.transform = AbstractValue.validate - - --- Write to UCI -function AbstractValue.write(self, section, value) - return self.map:set(section, self.alias or self.option, value) -end - --- Remove from UCI -function AbstractValue.remove(self, section) - return self.map:del(section, self.alias or self.option) -end - - - - ---[[ -Value - A one-line value - maxlength: The maximum length -]]-- -Value = class(AbstractValue) - -function Value.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/value" - self.keylist = {} - self.vallist = {} - self.readonly = nil -end - -function Value.reset_values(self) - self.keylist = {} - self.vallist = {} -end - -function Value.value(self, key, val) - val = val or key - table.insert(self.keylist, tostring(key)) - table.insert(self.vallist, tostring(val)) -end - -function Value.parse(self, section, novld) - if self.readonly then return end - AbstractValue.parse(self, section, novld) -end - --- DummyValue - This does nothing except being there -DummyValue = class(AbstractValue) - -function DummyValue.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/dvalue" - self.value = nil -end - -function DummyValue.cfgvalue(self, section) - local value - if self.value then - if type(self.value) == "function" then - value = self:value(section) - else - value = self.value - end - else - value = AbstractValue.cfgvalue(self, section) - end - return value -end - -function DummyValue.parse(self) - -end - - ---[[ -Flag - A flag being enabled or disabled -]]-- -Flag = class(AbstractValue) - -function Flag.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/fvalue" - - self.enabled = "1" - self.disabled = "0" - self.default = self.disabled -end - --- A flag can only have two states: set or unset -function Flag.parse(self, section, novld) - local fexists = self.map:formvalue( - FEXIST_PREFIX .. self.config .. "." .. section .. "." .. self.option) - - if fexists then - local fvalue = self:formvalue(section) and self.enabled or self.disabled - local cvalue = self:cfgvalue(section) - local val_err - fvalue, val_err = self:validate(fvalue, section) - if not fvalue then - if not novld then - self:add_error(section, "invalid", val_err) - end - return - end - if fvalue == self.default and (self.optional or self.rmempty) then - self:remove(section) - else - self:write(section, fvalue) - end - if (fvalue ~= cvalue) then self.section.changed = true end - else - self:remove(section) - self.section.changed = true - end -end - -function Flag.cfgvalue(self, section) - return AbstractValue.cfgvalue(self, section) or self.default -end -function Flag.validate(self, value) - return value -end - ---[[ -ListValue - A one-line value predefined in a list - widget: The widget that will be used (select, radio) -]]-- -ListValue = class(AbstractValue) - -function ListValue.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/lvalue" - - self.size = 1 - self.widget = "select" - - self:reset_values() -end - -function ListValue.reset_values(self) - self.keylist = {} - self.vallist = {} - self.deplist = {} -end - -function ListValue.value(self, key, val, ...) - if luci.util.contains(self.keylist, key) then - return - end - - val = val or key - table.insert(self.keylist, tostring(key)) - table.insert(self.vallist, tostring(val)) - table.insert(self.deplist, {...}) -end - -function ListValue.validate(self, val) - if luci.util.contains(self.keylist, val) then - return val - else - return nil - end -end - - - ---[[ -MultiValue - Multiple delimited values - widget: The widget that will be used (select, checkbox) - delimiter: The delimiter that will separate the values (default: " ") -]]-- -MultiValue = class(AbstractValue) - -function MultiValue.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/mvalue" - - self.widget = "checkbox" - self.delimiter = " " - - self:reset_values() -end - -function MultiValue.render(self, ...) - if self.widget == "select" and not self.size then - self.size = #self.vallist - end - - AbstractValue.render(self, ...) -end - -function MultiValue.reset_values(self) - self.keylist = {} - self.vallist = {} - self.deplist = {} -end - -function MultiValue.value(self, key, val) - if luci.util.contains(self.keylist, key) then - return - end - - val = val or key - table.insert(self.keylist, tostring(key)) - table.insert(self.vallist, tostring(val)) -end - -function MultiValue.valuelist(self, section) - local val = self:cfgvalue(section) - - if not(type(val) == "string") then - return {} - end - - return luci.util.split(val, self.delimiter) -end - -function MultiValue.validate(self, val) - val = (type(val) == "table") and val or {val} - - local result - - for i, value in ipairs(val) do - if luci.util.contains(self.keylist, value) then - result = result and (result .. self.delimiter .. value) or value - end - end - - return result -end - - -StaticList = class(MultiValue) - -function StaticList.__init__(self, ...) - MultiValue.__init__(self, ...) - self.cast = "table" - self.valuelist = self.cfgvalue - - if not self.override_scheme - and self.map:get_scheme(self.section.sectiontype, self.option) then - local vs = self.map:get_scheme(self.section.sectiontype, self.option) - if self.value and vs.values and not self.override_values then - for k, v in pairs(vs.values) do - self:value(k, v) - end - end - end -end - -function StaticList.validate(self, value) - value = (type(value) == "table") and value or {value} - - local valid = {} - for i, v in ipairs(value) do - if luci.util.contains(self.keylist, v) then - table.insert(valid, v) - end - end - return valid -end - - -DynamicList = class(AbstractValue) - -function DynamicList.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/dynlist" - self.cast = "table" - self:reset_values() -end - -function DynamicList.reset_values(self) - self.keylist = {} - self.vallist = {} -end - -function DynamicList.value(self, key, val) - val = val or key - table.insert(self.keylist, tostring(key)) - table.insert(self.vallist, tostring(val)) -end - -function DynamicList.write(self, section, value) - local t = { } - - if type(value) == "table" then - local x - for _, x in ipairs(value) do - if x and #x > 0 then - t[#t+1] = x - end - end - else - t = { value } - end - - if self.cast == "string" then - value = table.concat(t, " ") - else - value = t - end - - return AbstractValue.write(self, section, value) -end - -function DynamicList.cfgvalue(self, section) - local value = AbstractValue.cfgvalue(self, section) - - if type(value) == "string" then - local x - local t = { } - for x in value:gmatch("%S+") do - if #x > 0 then - t[#t+1] = x - end - end - value = t - end - - return value -end - -function DynamicList.formvalue(self, section) - local value = AbstractValue.formvalue(self, section) - - if type(value) == "string" then - if self.cast == "string" then - local x - local t = { } - for x in value:gmatch("%S+") do - t[#t+1] = x - end - value = t - else - value = { value } - end - end - - return value -end - - -DropDown = class(MultiValue) - -function DropDown.__init__(self, ...) - ListValue.__init__(self, ...) - self.template = "cbi/dropdown" - self.delimiter = " " -end - - ---[[ -TextValue - A multi-line value - rows: Rows -]]-- -TextValue = class(AbstractValue) - -function TextValue.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/tvalue" -end - ---[[ -Button -]]-- -Button = class(AbstractValue) - -function Button.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/button" - self.inputstyle = nil - self.rmempty = true - self.unsafeupload = false -end - - -FileUpload = class(AbstractValue) - -function FileUpload.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/upload" - if not self.map.upload_fields then - self.map.upload_fields = { self } - else - self.map.upload_fields[#self.map.upload_fields+1] = self - end -end - -function FileUpload.formcreated(self, section) - if self.unsafeupload then - return AbstractValue.formcreated(self, section) or - self.map:formvalue("cbi.rlf."..section.."."..self.option) or - self.map:formvalue("cbi.rlf."..section.."."..self.option..".x") or - self.map:formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox") - else - return AbstractValue.formcreated(self, section) or - self.map:formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox") - end -end - -function FileUpload.cfgvalue(self, section) - local val = AbstractValue.cfgvalue(self, section) - if val and fs.access(val) then - return val - end - return nil -end - --- If we have a new value, use it --- otherwise use old value --- deletion should be managed by a separate button object --- unless self.unsafeupload is set in which case if the user --- choose to remove the old file we do so. --- Also, allow to specify (via textbox) a file already on router -function FileUpload.formvalue(self, section) - local val = AbstractValue.formvalue(self, section) - if val then - if self.unsafeupload then - if not self.map:formvalue("cbi.rlf."..section.."."..self.option) and - not self.map:formvalue("cbi.rlf."..section.."."..self.option..".x") - then - return val - end - fs.unlink(val) - self.value = nil - return nil - elseif val ~= "" then - return val - end - end - val = luci.http.formvalue("cbid."..self.map.config.."."..section.."."..self.option..".textbox") - if val == "" then - val = nil - end - if not self.unsafeupload then - if not val then - val = self.map:formvalue("cbi.rlf."..section.."."..self.option) - end - end - return val -end - -function FileUpload.remove(self, section) - if self.unsafeupload then - local val = AbstractValue.formvalue(self, section) - if val and fs.access(val) then fs.unlink(val) end - return AbstractValue.remove(self, section) - else - return nil - end -end - -FileBrowser = class(AbstractValue) - -function FileBrowser.__init__(self, ...) - AbstractValue.__init__(self, ...) - self.template = "cbi/browser" -end diff --git a/luci-base/luasrc/cbi/datatypes.lua b/luci-base/luasrc/cbi/datatypes.lua deleted file mode 100644 index 99113e0b7..000000000 --- a/luci-base/luasrc/cbi/datatypes.lua +++ /dev/null @@ -1,462 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Copyright 2017 Dan Luedtke --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local ip = require "luci.ip" -local math = require "math" -local util = require "luci.util" -local tonumber, tostring, type, unpack, select = tonumber, tostring, type, unpack, select - - -module "luci.cbi.datatypes" - - -_M['or'] = function(v, ...) - local i - for i = 1, select('#', ...), 2 do - local f = select(i, ...) - local a = select(i+1, ...) - if type(f) ~= "function" then - if f == v then - return true - end - i = i - 1 - elseif f(v, unpack(a)) then - return true - end - end - return false -end - -_M['and'] = function(v, ...) - local i - for i = 1, select('#', ...), 2 do - local f = select(i, ...) - local a = select(i+1, ...) - if type(f) ~= "function" then - if f ~= v then - return false - end - i = i - 1 - elseif not f(v, unpack(a)) then - return false - end - end - return true -end - -function neg(v, ...) - return _M['or'](v:gsub("^%s*!%s*", ""), ...) -end - -function list(v, subvalidator, subargs) - if type(subvalidator) ~= "function" then - return false - end - local token - for token in v:gmatch("%S+") do - if not subvalidator(token, unpack(subargs)) then - return false - end - end - return true -end - -function bool(val) - if val == "1" or val == "yes" or val == "on" or val == "true" then - return true - elseif val == "0" or val == "no" or val == "off" or val == "false" then - return true - elseif val == "" or val == nil then - return true - end - - return false -end - -function uinteger(val) - local n = tonumber(val) - if n ~= nil and math.floor(n) == n and n >= 0 then - return true - end - - return false -end - -function integer(val) - local n = tonumber(val) - if n ~= nil and math.floor(n) == n then - return true - end - - return false -end - -function ufloat(val) - local n = tonumber(val) - return ( n ~= nil and n >= 0 ) -end - -function float(val) - return ( tonumber(val) ~= nil ) -end - -function ipaddr(val) - return ip4addr(val) or ip6addr(val) -end - -function ip4addr(val) - if val then - return ip.IPv4(val) and true or false - end - - return false -end - -function ip4prefix(val) - val = tonumber(val) - return ( val and val >= 0 and val <= 32 ) -end - -function ip6addr(val) - if val then - return ip.IPv6(val) and true or false - end - - return false -end - -function ip6prefix(val) - val = tonumber(val) - return ( val and val >= 0 and val <= 128 ) -end - -function cidr4(val) - local ip, mask = val:match("^([^/]+)/([^/]+)$") - - return ip4addr(ip) and ip4prefix(mask) -end - -function cidr6(val) - local ip, mask = val:match("^([^/]+)/([^/]+)$") - - return ip6addr(ip) and ip6prefix(mask) -end - -function ipnet4(val) - local ip, mask = val:match("^([^/]+)/([^/]+)$") - - return ip4addr(ip) and ip4addr(mask) -end - -function ipnet6(val) - local ip, mask = val:match("^([^/]+)/([^/]+)$") - - return ip6addr(ip) and ip6addr(mask) -end - -function ipmask(val) - return ipmask4(val) or ipmask6(val) -end - -function ipmask4(val) - return cidr4(val) or ipnet4(val) or ip4addr(val) -end - -function ipmask6(val) - return cidr6(val) or ipnet6(val) or ip6addr(val) -end - -function ip6hostid(val) - if val == "eui64" or val == "random" then - return true - else - local addr = ip.IPv6(val) - if addr and addr:prefix() == 128 and addr:lower("::1:0:0:0:0") then - return true - end - end - - return false -end - -function port(val) - val = tonumber(val) - return ( val and val >= 0 and val <= 65535 ) -end - -function portrange(val) - local p1, p2 = val:match("^(%d+)%-(%d+)$") - if p1 and p2 and port(p1) and port(p2) then - return true - else - return port(val) - end -end - -function macaddr(val) - return ip.checkmac(val) and true or false -end - -function hostname(val, strict) - if val and (#val < 254) and ( - val:match("^[a-zA-Z_]+$") or - (val:match("^[a-zA-Z0-9_][a-zA-Z0-9_%-%.]*[a-zA-Z0-9]$") and - val:match("[^0-9%.]")) - ) then - return (not strict or not val:match("^_")) - end - return false -end - -function host(val, ipv4only) - return hostname(val) or ((ipv4only == 1) and ip4addr(val)) or ((not (ipv4only == 1)) and ipaddr(val)) -end - -function network(val) - return uciname(val) or host(val) -end - -function hostport(val, ipv4only) - local h, p = val:match("^([^:]+):([^:]+)$") - return not not (h and p and host(h, ipv4only) and port(p)) -end - -function ip4addrport(val, bracket) - local h, p = val:match("^([^:]+):([^:]+)$") - return (h and p and ip4addr(h) and port(p)) -end - -function ip4addrport(val) - local h, p = val:match("^([^:]+):([^:]+)$") - return (h and p and ip4addr(h) and port(p)) -end - -function ipaddrport(val, bracket) - local h, p = val:match("^([^%[%]:]+):([^:]+)$") - if (h and p and ip4addr(h) and port(p)) then - return true - elseif (bracket == 1) then - h, p = val:match("^%[(.+)%]:([^:]+)$") - if (h and p and ip6addr(h) and port(p)) then - return true - end - end - h, p = val:match("^([^%[%]]+):([^:]+)$") - return (h and p and ip6addr(h) and port(p)) -end - -function wpakey(val) - if #val == 64 then - return (val:match("^[a-fA-F0-9]+$") ~= nil) - else - return (#val >= 8) and (#val <= 63) - end -end - -function wepkey(val) - if val:sub(1, 2) == "s:" then - val = val:sub(3) - end - - if (#val == 10) or (#val == 26) then - return (val:match("^[a-fA-F0-9]+$") ~= nil) - else - return (#val == 5) or (#val == 13) - end -end - -function hexstring(val) - if val then - return (val:match("^[a-fA-F0-9]+$") ~= nil) - end - return false -end - -function hex(val, maxbytes) - maxbytes = tonumber(maxbytes) - if val and maxbytes ~= nil then - return ((val:match("^0x[a-fA-F0-9]+$") ~= nil) and (#val <= 2 + maxbytes * 2)) - end - return false -end - -function base64(val) - if val then - return (val:match("^[a-zA-Z0-9/+]+=?=?$") ~= nil) and (math.fmod(#val, 4) == 0) - end - return false -end - -function string(val) - return true -- Everything qualifies as valid string -end - -function directory(val, seen) - local s = fs.stat(val) - seen = seen or { } - - if s and not seen[s.ino] then - seen[s.ino] = true - if s.type == "dir" then - return true - elseif s.type == "lnk" then - return directory( fs.readlink(val), seen ) - end - end - - return false -end - -function file(val, seen) - local s = fs.stat(val) - seen = seen or { } - - if s and not seen[s.ino] then - seen[s.ino] = true - if s.type == "reg" then - return true - elseif s.type == "lnk" then - return file( fs.readlink(val), seen ) - end - end - - return false -end - -function device(val, seen) - local s = fs.stat(val) - seen = seen or { } - - if s and not seen[s.ino] then - seen[s.ino] = true - if s.type == "chr" or s.type == "blk" then - return true - elseif s.type == "lnk" then - return device( fs.readlink(val), seen ) - end - end - - return false -end - -function uciname(val) - return (val:match("^[a-zA-Z0-9_]+$") ~= nil) -end - -function range(val, min, max) - val = tonumber(val) - min = tonumber(min) - max = tonumber(max) - - if val ~= nil and min ~= nil and max ~= nil then - return ((val >= min) and (val <= max)) - end - - return false -end - -function min(val, min) - val = tonumber(val) - min = tonumber(min) - - if val ~= nil and min ~= nil then - return (val >= min) - end - - return false -end - -function max(val, max) - val = tonumber(val) - max = tonumber(max) - - if val ~= nil and max ~= nil then - return (val <= max) - end - - return false -end - -function rangelength(val, min, max) - val = tostring(val) - min = tonumber(min) - max = tonumber(max) - - if val ~= nil and min ~= nil and max ~= nil then - return ((#val >= min) and (#val <= max)) - end - - return false -end - -function minlength(val, min) - val = tostring(val) - min = tonumber(min) - - if val ~= nil and min ~= nil then - return (#val >= min) - end - - return false -end - -function maxlength(val, max) - val = tostring(val) - max = tonumber(max) - - if val ~= nil and max ~= nil then - return (#val <= max) - end - - return false -end - -function phonedigit(val) - return (val:match("^[0-9\*#!%.]+$") ~= nil) -end - -function timehhmmss(val) - return (val:match("^[0-6][0-9]:[0-6][0-9]:[0-6][0-9]$") ~= nil) -end - -function dateyyyymmdd(val) - if val ~= nil then - yearstr, monthstr, daystr = val:match("^(%d%d%d%d)-(%d%d)-(%d%d)$") - if (yearstr == nil) or (monthstr == nil) or (daystr == nil) then - return false; - end - year = tonumber(yearstr) - month = tonumber(monthstr) - day = tonumber(daystr) - if (year == nil) or (month == nil) or (day == nil) then - return false; - end - - local days_in_month = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 } - - local function is_leap_year(year) - return (year % 4 == 0) and ((year % 100 ~= 0) or (year % 400 == 0)) - end - - function get_days_in_month(month, year) - if (month == 2) and is_leap_year(year) then - return 29 - else - return days_in_month[month] - end - end - if (year < 2015) then - return false - end - if ((month == 0) or (month > 12)) then - return false - end - if ((day == 0) or (day > get_days_in_month(month, year))) then - return false - end - return true - end - return false -end diff --git a/luci-base/luasrc/ccache.lua b/luci-base/luasrc/ccache.lua deleted file mode 100644 index bcc76e6a7..000000000 --- a/luci-base/luasrc/ccache.lua +++ /dev/null @@ -1,76 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local io = require "io" -local fs = require "nixio.fs" -local util = require "luci.util" -local nixio = require "nixio" -local debug = require "debug" -local string = require "string" -local package = require "package" - -local type, loadfile = type, loadfile - - -module "luci.ccache" - -function cache_ondemand(...) - if debug.getinfo(1, 'S').source ~= "=?" then - cache_enable(...) - end -end - -function cache_enable(cachepath, mode) - cachepath = cachepath or "/tmp/luci-modulecache" - mode = mode or "r--r--r--" - - local loader = package.loaders[2] - local uid = nixio.getuid() - - if not fs.stat(cachepath) then - fs.mkdir(cachepath) - end - - local function _encode_filename(name) - local encoded = "" - for i=1, #name do - encoded = encoded .. ("%2X" % string.byte(name, i)) - end - return encoded - end - - local function _load_sane(file) - local stat = fs.stat(file) - if stat and stat.uid == uid and stat.modestr == mode then - return loadfile(file) - end - end - - local function _write_sane(file, func) - if nixio.getuid() == uid then - local fp = io.open(file, "w") - if fp then - fp:write(util.get_bytecode(func)) - fp:close() - fs.chmod(file, mode) - end - end - end - - package.loaders[2] = function(mod) - local encoded = cachepath .. "/" .. _encode_filename(mod) - local modcons = _load_sane(encoded) - - if modcons then - return modcons - end - - -- No cachefile - modcons = loader(mod) - if type(modcons) == "function" then - _write_sane(encoded, modcons) - end - return modcons - end -end diff --git a/luci-base/luasrc/config.lua b/luci-base/luasrc/config.lua deleted file mode 100644 index d01153f4f..000000000 --- a/luci-base/luasrc/config.lua +++ /dev/null @@ -1,18 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -module("luci.config", - function(m) - if pcall(require, "luci.model.uci") then - local config = util.threadlocal() - setmetatable(m, { - __index = function(tbl, key) - if not config[key] then - config[key] = luci.model.uci.cursor():get_all("luci", key) - end - return config[key] - end - }) - end - end) diff --git a/luci-base/luasrc/debug.lua b/luci-base/luasrc/debug.lua deleted file mode 100644 index 8ff1bb698..000000000 --- a/luci-base/luasrc/debug.lua +++ /dev/null @@ -1,37 +0,0 @@ -local debug = require "debug" -local io = require "io" -local collectgarbage, floor = collectgarbage, math.floor - -module "luci.debug" -__file__ = debug.getinfo(1, 'S').source:sub(2) - --- Enables the memory tracer with given flags and returns a function to disable the tracer again -function trap_memtrace(flags, dest) - flags = flags or "clr" - local tracefile = io.open(dest or "/tmp/memtrace", "w") - local peak = 0 - - local function trap(what, line) - local info = debug.getinfo(2, "Sn") - local size = floor(collectgarbage("count")) - if size > peak then - peak = size - end - if tracefile then - tracefile:write( - "[", what, "] ", info.source, ":", (line or "?"), "\t", - (info.namewhat or ""), "\t", - (info.name or ""), "\t", - size, " (", peak, ")\n" - ) - end - end - - debug.sethook(trap, flags) - - return function() - debug.sethook() - tracefile:close() - end -end - diff --git a/luci-base/luasrc/dispatcher.lua b/luci-base/luasrc/dispatcher.lua deleted file mode 100644 index 6cf2712eb..000000000 --- a/luci-base/luasrc/dispatcher.lua +++ /dev/null @@ -1,1003 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local sys = require "luci.sys" -local util = require "luci.util" -local http = require "luci.http" -local nixio = require "nixio", require "nixio.util" - -module("luci.dispatcher", package.seeall) -context = util.threadlocal() -uci = require "luci.model.uci" -i18n = require "luci.i18n" -_M.fs = fs - --- Index table -local index = nil - --- Fastindex -local fi - - -function build_url(...) - local path = {...} - local url = { http.getenv("SCRIPT_NAME") or "" } - - local p - for _, p in ipairs(path) do - if p:match("^[a-zA-Z0-9_%-%.%%/,;]+$") then - url[#url+1] = "/" - url[#url+1] = p - end - end - - if #path == 0 then - url[#url+1] = "/" - end - - return table.concat(url, "") -end - -function node_visible(node) - if node then - return not ( - (not node.title or #node.title == 0) or - (not node.target or node.hidden == true) or - (type(node.target) == "table" and node.target.type == "firstchild" and - (type(node.nodes) ~= "table" or not next(node.nodes))) - ) - end - return false -end - -function node_childs(node) - local rv = { } - if node then - local k, v - for k, v in util.spairs(node.nodes, - function(a, b) - return (node.nodes[a].order or 100) - < (node.nodes[b].order or 100) - end) - do - if node_visible(v) then - rv[#rv+1] = k - end - end - end - return rv -end - - -function error404(message) - http.status(404, "Not Found") - message = message or "Not Found" - - local function render() - local template = require "luci.template" - template.render("error404") - end - - if not util.copcall(render) then - http.prepare_content("text/plain") - http.write(message) - end - - return false -end - -function error500(message) - util.perror(message) - if not context.template_header_sent then - http.status(500, "Internal Server Error") - http.prepare_content("text/plain") - http.write(message) - else - require("luci.template") - if not util.copcall(luci.template.render, "error500", {message=message}) then - http.prepare_content("text/plain") - http.write(message) - end - end - return false -end - -function httpdispatch(request, prefix) - http.context.request = request - - local r = {} - context.request = r - - local pathinfo = http.urldecode(request:getenv("PATH_INFO") or "", true) - - if prefix then - for _, node in ipairs(prefix) do - r[#r+1] = node - end - end - - local node - for node in pathinfo:gmatch("[^/%z]+") do - r[#r+1] = node - end - - local stat, err = util.coxpcall(function() - dispatch(context.request) - end, error500) - - http.close() - - --context._disable_memtrace() -end - -local function require_post_security(target) - if type(target) == "table" then - if type(target.post) == "table" then - local param_name, required_val, request_val - - for param_name, required_val in pairs(target.post) do - request_val = http.formvalue(param_name) - - if (type(required_val) == "string" and - request_val ~= required_val) or - (required_val == true and request_val == nil) - then - return false - end - end - - return true - end - - return (target.post == true) - end - - return false -end - -function test_post_security() - if http.getenv("REQUEST_METHOD") ~= "POST" then - http.status(405, "Method Not Allowed") - http.header("Allow", "POST") - return false - end - - if http.formvalue("token") ~= context.authtoken then - http.status(403, "Forbidden") - luci.template.render("csrftoken") - return false - end - - return true -end - -local function session_retrieve(sid, allowed_users) - local sdat = util.ubus("session", "get", { ubus_rpc_session = sid }) - - if type(sdat) == "table" and - type(sdat.values) == "table" and - type(sdat.values.token) == "string" and - (not allowed_users or - util.contains(allowed_users, sdat.values.username)) - then - uci:set_session_id(sid) - return sid, sdat.values - end - - return nil, nil -end - -local function session_setup(user, pass, allowed_users) - if util.contains(allowed_users, user) then - local login = util.ubus("session", "login", { - username = user, - password = pass, - timeout = tonumber(luci.config.sauth.sessiontime) - }) - - local rp = context.requestpath - and table.concat(context.requestpath, "/") or "" - - if type(login) == "table" and - type(login.ubus_rpc_session) == "string" - then - util.ubus("session", "set", { - ubus_rpc_session = login.ubus_rpc_session, - values = { token = sys.uniqueid(16) } - }) - - io.stderr:write("luci: accepted login on /%s for %s from %s\n" - %{ rp, user, http.getenv("REMOTE_ADDR") or "?" }) - - return session_retrieve(login.ubus_rpc_session) - end - - io.stderr:write("luci: failed login on /%s for %s from %s\n" - %{ rp, user, http.getenv("REMOTE_ADDR") or "?" }) - end - - return nil, nil -end - -function dispatch(request) - --context._disable_memtrace = require "luci.debug".trap_memtrace("l") - local ctx = context - ctx.path = request - - local conf = require "luci.config" - assert(conf.main, - "/etc/config/luci seems to be corrupt, unable to find section 'main'") - - local i18n = require "luci.i18n" - local lang = conf.main.lang or "auto" - if lang == "auto" then - local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or "" - for aclang in aclang:gmatch("[%w_-]+") do - local country, culture = aclang:match("^([a-z][a-z])[_-]([a-zA-Z][a-zA-Z])$") - if country and culture then - local cc = "%s_%s" %{ country, culture:lower() } - if conf.languages[cc] then - lang = cc - break - elseif conf.languages[country] then - lang = country - break - end - elseif conf.languages[aclang] then - lang = aclang - break - end - end - end - if lang == "auto" then - lang = i18n.default - end - i18n.setlanguage(lang) - - local c = ctx.tree - local stat - if not c then - c = createtree() - end - - local track = {} - local args = {} - ctx.args = args - ctx.requestargs = ctx.requestargs or args - local n - local preq = {} - local freq = {} - - for i, s in ipairs(request) do - preq[#preq+1] = s - freq[#freq+1] = s - c = c.nodes[s] - n = i - if not c then - break - end - - util.update(track, c) - - if c.leaf then - break - end - end - - if c and c.leaf then - for j=n+1, #request do - args[#args+1] = request[j] - freq[#freq+1] = request[j] - end - end - - ctx.requestpath = ctx.requestpath or freq - ctx.path = preq - - if track.i18n then - i18n.loadc(track.i18n) - end - - -- Init template engine - if (c and c.index) or not track.notemplate then - local tpl = require("luci.template") - local media = track.mediaurlbase or luci.config.main.mediaurlbase - if not pcall(tpl.Template, "themes/%s/header" % fs.basename(media)) then - media = nil - for name, theme in pairs(luci.config.themes) do - if name:sub(1,1) ~= "." and pcall(tpl.Template, - "themes/%s/header" % fs.basename(theme)) then - media = theme - end - end - assert(media, "No valid theme found") - end - - local function _ifattr(cond, key, val) - if cond then - local env = getfenv(3) - local scope = (type(env.self) == "table") and env.self - if type(val) == "table" then - if not next(val) then - return '' - else - val = util.serialize_json(val) - end - end - return string.format( - ' %s="%s"', tostring(key), - util.pcdata(tostring( val - or (type(env[key]) ~= "function" and env[key]) - or (scope and type(scope[key]) ~= "function" and scope[key]) - or "" )) - ) - else - return '' - end - end - - tpl.context.viewns = setmetatable({ - write = http.write; - include = function(name) tpl.Template(name):render(getfenv(2)) end; - translate = i18n.translate; - translatef = i18n.translatef; - export = function(k, v) if tpl.context.viewns[k] == nil then tpl.context.viewns[k] = v end end; - striptags = util.striptags; - pcdata = util.pcdata; - media = media; - theme = fs.basename(media); - resource = luci.config.main.resourcebase; - ifattr = function(...) return _ifattr(...) end; - attr = function(...) return _ifattr(true, ...) end; - url = build_url; - }, {__index=function(tbl, key) - if key == "controller" then - return build_url() - elseif key == "REQUEST_URI" then - return build_url(unpack(ctx.requestpath)) - elseif key == "FULL_REQUEST_URI" then - local url = { http.getenv("SCRIPT_NAME") or "", http.getenv("PATH_INFO") } - local query = http.getenv("QUERY_STRING") - if query and #query > 0 then - url[#url+1] = "?" - url[#url+1] = query - end - return table.concat(url, "") - elseif key == "token" then - return ctx.authtoken - else - return rawget(tbl, key) or _G[key] - end - end}) - end - - track.dependent = (track.dependent ~= false) - assert(not track.dependent or not track.auto, - "Access Violation\nThe page at '" .. table.concat(request, "/") .. "/' " .. - "has no parent node so the access to this location has been denied.\n" .. - "This is a software bug, please report this message at " .. - "https://github.com/openwrt/luci/issues" - ) - - if track.sysauth and not ctx.authsession then - local authen = track.sysauth_authenticator - local _, sid, sdat, default_user, allowed_users - - if type(authen) == "string" and authen ~= "htmlauth" then - error500("Unsupported authenticator %q configured" % authen) - return - end - - if type(track.sysauth) == "table" then - default_user, allowed_users = nil, track.sysauth - else - default_user, allowed_users = track.sysauth, { track.sysauth } - end - - if type(authen) == "function" then - _, sid = authen(sys.user.checkpasswd, allowed_users) - else - sid = http.getcookie("sysauth") - end - - sid, sdat = session_retrieve(sid, allowed_users) - - if not (sid and sdat) and authen == "htmlauth" then - local user = http.getenv("HTTP_AUTH_USER") - local pass = http.getenv("HTTP_AUTH_PASS") - - if user == nil and pass == nil then - user = http.formvalue("luci_username") - pass = http.formvalue("luci_password") - end - - sid, sdat = session_setup(user, pass, allowed_users) - - if not sid then - local tmpl = require "luci.template" - - context.path = {} - - http.status(403, "Forbidden") - tmpl.render(track.sysauth_template or "sysauth", { - duser = default_user, - fuser = user - }) - - return - end - - http.header("Set-Cookie", 'sysauth=%s; path=%s; HttpOnly%s' %{ - sid, build_url(), http.getenv("HTTPS") == "on" and "; secure" or "" - }) - http.redirect(build_url(unpack(ctx.requestpath))) - end - - if not sid or not sdat then - http.status(403, "Forbidden") - return - end - - ctx.authsession = sid - ctx.authtoken = sdat.token - ctx.authuser = sdat.username - end - - if track.cors and http.getenv("REQUEST_METHOD") == "OPTIONS" then - luci.http.status(200, "OK") - luci.http.header("Access-Control-Allow-Origin", http.getenv("HTTP_ORIGIN") or "*") - luci.http.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS") - return - end - - if c and require_post_security(c.target) then - if not test_post_security(c) then - return - end - end - - if track.setgroup then - sys.process.setgroup(track.setgroup) - end - - if track.setuser then - sys.process.setuser(track.setuser) - end - - local target = nil - if c then - if type(c.target) == "function" then - target = c.target - elseif type(c.target) == "table" then - target = c.target.target - end - end - - if c and (c.index or type(target) == "function") then - ctx.dispatched = c - ctx.requested = ctx.requested or ctx.dispatched - end - - if c and c.index then - local tpl = require "luci.template" - - if util.copcall(tpl.render, "indexer", {}) then - return true - end - end - - if type(target) == "function" then - util.copcall(function() - local oldenv = getfenv(target) - local module = require(c.module) - local env = setmetatable({}, {__index= - - function(tbl, key) - return rawget(tbl, key) or module[key] or oldenv[key] - end}) - - setfenv(target, env) - end) - - local ok, err - if type(c.target) == "table" then - ok, err = util.copcall(target, c.target, unpack(args)) - else - ok, err = util.copcall(target, unpack(args)) - end - if not ok then - error500("Failed to execute " .. (type(c.target) == "function" and "function" or c.target.type or "unknown") .. - " dispatcher target for entry '/" .. table.concat(request, "/") .. "'.\n" .. - "The called action terminated with an exception:\n" .. tostring(err or "(unknown)")) - end - else - local root = node() - if not root or not root.target then - error404("No root node was registered, this usually happens if no module was installed.\n" .. - "Install luci-mod-admin-full and retry. " .. - "If the module is already installed, try removing the /tmp/luci-indexcache file.") - else - error404("No page is registered at '/" .. table.concat(request, "/") .. "'.\n" .. - "If this url belongs to an extension, make sure it is properly installed.\n" .. - "If the extension was recently installed, try removing the /tmp/luci-indexcache file.") - end - end -end - -function createindex() - local controllers = { } - local base = "%s/controller/" % util.libpath() - local _, path - - for path in (fs.glob("%s*.lua" % base) or function() end) do - controllers[#controllers+1] = path - end - - for path in (fs.glob("%s*/*.lua" % base) or function() end) do - controllers[#controllers+1] = path - end - - if indexcache then - local cachedate = fs.stat(indexcache, "mtime") - if cachedate then - local realdate = 0 - for _, obj in ipairs(controllers) do - local omtime = fs.stat(obj, "mtime") - realdate = (omtime and omtime > realdate) and omtime or realdate - end - - if cachedate > realdate and sys.process.info("uid") == 0 then - assert( - sys.process.info("uid") == fs.stat(indexcache, "uid") - and fs.stat(indexcache, "modestr") == "rw-------", - "Fatal: Indexcache is not sane!" - ) - - index = loadfile(indexcache)() - return index - end - end - end - - index = {} - - for _, path in ipairs(controllers) do - local modname = "luci.controller." .. path:sub(#base+1, #path-4):gsub("/", ".") - local mod = require(modname) - assert(mod ~= true, - "Invalid controller file found\n" .. - "The file '" .. path .. "' contains an invalid module line.\n" .. - "Please verify whether the module name is set to '" .. modname .. - "' - It must correspond to the file path!") - - local idx = mod.index - assert(type(idx) == "function", - "Invalid controller file found\n" .. - "The file '" .. path .. "' contains no index() function.\n" .. - "Please make sure that the controller contains a valid " .. - "index function and verify the spelling!") - - index[modname] = idx - end - - if indexcache then - local f = nixio.open(indexcache, "w", 600) - f:writeall(util.get_bytecode(index)) - f:close() - end -end - --- Build the index before if it does not exist yet. -function createtree() - if not index then - createindex() - end - - local ctx = context - local tree = {nodes={}, inreq=true} - local modi = {} - - ctx.treecache = setmetatable({}, {__mode="v"}) - ctx.tree = tree - ctx.modifiers = modi - - -- Load default translation - require "luci.i18n".loadc("base") - - local scope = setmetatable({}, {__index = luci.dispatcher}) - - for k, v in pairs(index) do - scope._NAME = k - setfenv(v, scope) - v() - end - - local function modisort(a,b) - return modi[a].order < modi[b].order - end - - for _, v in util.spairs(modi, modisort) do - scope._NAME = v.module - setfenv(v.func, scope) - v.func() - end - - return tree -end - -function modifier(func, order) - context.modifiers[#context.modifiers+1] = { - func = func, - order = order or 0, - module - = getfenv(2)._NAME - } -end - -function assign(path, clone, title, order) - local obj = node(unpack(path)) - obj.nodes = nil - obj.module = nil - - obj.title = title - obj.order = order - - setmetatable(obj, {__index = _create_node(clone)}) - - return obj -end - -function entry(path, target, title, order) - local c = node(unpack(path)) - - c.target = target - c.title = title - c.order = order - c.module = getfenv(2)._NAME - - return c -end - --- enabling the node. -function get(...) - return _create_node({...}) -end - -function node(...) - local c = _create_node({...}) - - c.module = getfenv(2)._NAME - c.auto = nil - - return c -end - -function lookup(...) - local i, path = nil, {} - for i = 1, select('#', ...) do - local name, arg = nil, tostring(select(i, ...)) - for name in arg:gmatch("[^/]+") do - path[#path+1] = name - end - end - - for i = #path, 1, -1 do - local node = context.treecache[table.concat(path, ".", 1, i)] - if node and (i == #path or node.leaf) then - return node, build_url(unpack(path)) - end - end -end - -function _create_node(path) - if #path == 0 then - return context.tree - end - - local name = table.concat(path, ".") - local c = context.treecache[name] - - if not c then - local last = table.remove(path) - local parent = _create_node(path) - - c = {nodes={}, auto=true, inreq=true} - - local _, n - for _, n in ipairs(path) do - if context.path[_] ~= n then - c.inreq = false - break - end - end - - c.inreq = c.inreq and (context.path[#path + 1] == last) - - parent.nodes[last] = c - context.treecache[name] = c - end - - return c -end - --- Subdispatchers -- - -function _firstchild() - local path = { unpack(context.path) } - local name = table.concat(path, ".") - local node = context.treecache[name] - - local lowest - if node and node.nodes and next(node.nodes) then - local k, v - for k, v in pairs(node.nodes) do - if not lowest or - (v.order or 100) < (node.nodes[lowest].order or 100) - then - lowest = k - end - end - end - - assert(lowest ~= nil, - "The requested node contains no childs, unable to redispatch") - - path[#path+1] = lowest - dispatch(path) -end - -function firstchild() - return { type = "firstchild", target = _firstchild } -end - -function alias(...) - local req = {...} - return function(...) - for _, r in ipairs({...}) do - req[#req+1] = r - end - - dispatch(req) - end -end - -function rewrite(n, ...) - local req = {...} - return function(...) - local dispatched = util.clone(context.dispatched) - - for i=1,n do - table.remove(dispatched, 1) - end - - for i, r in ipairs(req) do - table.insert(dispatched, i, r) - end - - for _, r in ipairs({...}) do - dispatched[#dispatched+1] = r - end - - dispatch(dispatched) - end -end - - -local function _call(self, ...) - local func = getfenv()[self.name] - assert(func ~= nil, - 'Cannot resolve function "' .. self.name .. '". Is it misspelled or local?') - - assert(type(func) == "function", - 'The symbol "' .. self.name .. '" does not refer to a function but data ' .. - 'of type "' .. type(func) .. '".') - - if #self.argv > 0 then - return func(unpack(self.argv), ...) - else - return func(...) - end -end - -function call(name, ...) - return {type = "call", argv = {...}, name = name, target = _call} -end - -function post_on(params, name, ...) - return { - type = "call", - post = params, - argv = { ... }, - name = name, - target = _call - } -end - -function post(...) - return post_on(true, ...) -end - - -local _template = function(self, ...) - require "luci.template".render(self.view) -end - -function template(name) - return {type = "template", view = name, target = _template} -end - - -local function _cbi(self, ...) - local cbi = require "luci.cbi" - local tpl = require "luci.template" - local http = require "luci.http" - - local config = self.config or {} - local maps = cbi.load(self.model, ...) - - local state = nil - - local i, res - for i, res in ipairs(maps) do - if util.instanceof(res, cbi.SimpleForm) then - io.stderr:write("Model %s returns SimpleForm but is dispatched via cbi(),\n" - % self.model) - - io.stderr:write("please change %s to use the form() action instead.\n" - % table.concat(context.request, "/")) - end - - res.flow = config - local cstate = res:parse() - if cstate and (not state or cstate < state) then - state = cstate - end - end - - local function _resolve_path(path) - return type(path) == "table" and build_url(unpack(path)) or path - end - - if config.on_valid_to and state and state > 0 and state < 2 then - http.redirect(_resolve_path(config.on_valid_to)) - return - end - - if config.on_changed_to and state and state > 1 then - http.redirect(_resolve_path(config.on_changed_to)) - return - end - - if config.on_success_to and state and state > 0 then - http.redirect(_resolve_path(config.on_success_to)) - return - end - - if config.state_handler then - if not config.state_handler(state, maps) then - return - end - end - - http.header("X-CBI-State", state or 0) - - if not config.noheader then - tpl.render("cbi/header", {state = state}) - end - - local redirect - local messages - local applymap = false - local pageaction = true - local parsechain = { } - - for i, res in ipairs(maps) do - if res.apply_needed and res.parsechain then - local c - for _, c in ipairs(res.parsechain) do - parsechain[#parsechain+1] = c - end - applymap = true - end - - if res.redirect then - redirect = redirect or res.redirect - end - - if res.pageaction == false then - pageaction = false - end - - if res.message then - messages = messages or { } - messages[#messages+1] = res.message - end - end - - for i, res in ipairs(maps) do - res:render({ - firstmap = (i == 1), - redirect = redirect, - messages = messages, - pageaction = pageaction, - parsechain = parsechain - }) - end - - if not config.nofooter then - tpl.render("cbi/footer", { - flow = config, - pageaction = pageaction, - redirect = redirect, - state = state, - autoapply = config.autoapply, - trigger_apply = applymap - }) - end -end - -function cbi(model, config) - return { - type = "cbi", - post = { ["cbi.submit"] = true }, - config = config, - model = model, - target = _cbi - } -end - - -local function _arcombine(self, ...) - local argv = {...} - local target = #argv > 0 and self.targets[2] or self.targets[1] - setfenv(target.target, self.env) - target:target(unpack(argv)) -end - -function arcombine(trg1, trg2) - return {type = "arcombine", env = getfenv(), target = _arcombine, targets = {trg1, trg2}} -end - - -local function _form(self, ...) - local cbi = require "luci.cbi" - local tpl = require "luci.template" - local http = require "luci.http" - - local maps = luci.cbi.load(self.model, ...) - local state = nil - - local i, res - for i, res in ipairs(maps) do - local cstate = res:parse() - if cstate and (not state or cstate < state) then - state = cstate - end - end - - http.header("X-CBI-State", state or 0) - tpl.render("header") - for i, res in ipairs(maps) do - res:render() - end - tpl.render("footer") -end - -function form(model) - return { - type = "cbi", - post = { ["cbi.submit"] = true }, - model = model, - target = _form - } -end - -translate = i18n.translate - --- This function does not actually translate the given argument but --- is used by build/i18n-scan.pl to find translatable entries. -function _(text) - return text -end diff --git a/luci-base/luasrc/dispatcher.luadoc b/luci-base/luasrc/dispatcher.luadoc deleted file mode 100644 index ddf534b3e..000000000 --- a/luci-base/luasrc/dispatcher.luadoc +++ /dev/null @@ -1,229 +0,0 @@ ----[[ -LuCI web dispatcher. -]] -module "luci.dispatcher" - ----[[ -Build the URL relative to the server webroot from given virtual path. - -@class function -@name build_url -@param ... Virtual path -@return Relative URL -]] - ----[[ -Check whether a dispatch node shall be visible - -@class function -@name node_visible -@param node Dispatch node -@return Boolean indicating whether the node should be visible -]] - ----[[ -Return a sorted table of visible childs within a given node - -@class function -@name node_childs -@param node Dispatch node -@return Ordered table of child node names -]] - ----[[ -Send a 404 error code and render the "error404" template if available. - -@class function -@name error404 -@param message Custom error message (optional) -@return false -]] - ----[[ -Send a 500 error code and render the "error500" template if available. - -@class function -@name error500 -@param message Custom error message (optional)# -@return false -]] - ----[[ -Dispatch an HTTP request. - -@class function -@name httpdispatch -@param request LuCI HTTP Request object -]] - ----[[ -Dispatches a LuCI virtual path. - -@class function -@name dispatch -@param request Virtual path -]] - ----[[ -Generate the dispatching index using the native file-cache based strategy. - - -@class function -@name createindex -]] - ----[[ -Create the dispatching tree from the index. - -Build the index before if it does not exist yet. - -@class function -@name createtree -]] - ----[[ -Register a tree modifier. - -@class function -@name modifier -@param func Modifier function -@param order Modifier order value (optional) -]] - ----[[ -Clone a node of the dispatching tree to another position. - -@class function -@name assign -@param path Virtual path destination -@param clone Virtual path source -@param title Destination node title (optional) -@param order Destination node order value (optional) -@return Dispatching tree node -]] - ----[[ -Create a new dispatching node and define common parameters. - -@class function -@name entry -@param path Virtual path -@param target Target function to call when dispatched. -@param title Destination node title -@param order Destination node order value (optional) -@return Dispatching tree node -]] - ----[[ -Fetch or create a dispatching node without setting the target module or -enabling the node. - -@class function -@name get -@param ... Virtual path -@return Dispatching tree node -]] - ----[[ -Fetch or create a new dispatching node. - -@class function -@name node -@param ... Virtual path -@return Dispatching tree node -]] - ----[[ -Lookup node in dispatching tree. - -@class function -@name lookup -@param ... Virtual path -@return Node object, canonical url or nil if the path was not found. -]] - ----[[ -Alias the first (lowest order) page automatically - - -@class function -@name firstchild -]] - ----[[ -Create a redirect to another dispatching node. - -@class function -@name alias -@param ... Virtual path destination -]] - ----[[ -Rewrite the first x path values of the request. - -@class function -@name rewrite -@param n Number of path values to replace -@param ... Virtual path to replace removed path values with -]] - ----[[ -Create a function-call dispatching target. - -@class function -@name call -@param name Target function of local controller -@param ... Additional parameters passed to the function -]] - ----[[ -Create a template render dispatching target. - -@class function -@name template -@param name Template to be rendered -]] - ----[[ -Create a CBI model dispatching target. - -@class function -@name cbi -@param model CBI model to be rendered -]] - ----[[ -Create a combined dispatching target for non argv and argv requests. - -@class function -@name arcombine -@param trg1 Overview Target -@param trg2 Detail Target -]] - ----[[ -Create a CBI form model dispatching target. - -@class function -@name form -@param model CBI form model tpo be rendered -]] - ----[[ -Access the luci.i18n translate() api. - -@class function -@name translate -@param text Text to translate -]] - ----[[ -No-op function used to mark translation entries for menu labels. - -This function does not actually translate the given argument but -is used by build/i18n-scan.pl to find translatable entries. - -@class function -@name _ -]] - diff --git a/luci-base/luasrc/http.lua b/luci-base/luasrc/http.lua deleted file mode 100644 index f4ede4b8a..000000000 --- a/luci-base/luasrc/http.lua +++ /dev/null @@ -1,554 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2018 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -local coroutine = require "coroutine" -local table = require "table" -local lhttp = require "lucihttp" -local nixio = require "nixio" -local ltn12 = require "luci.ltn12" - -local table, ipairs, pairs, type, tostring, tonumber, error = - table, ipairs, pairs, type, tostring, tonumber, error - -module "luci.http" - -HTTP_MAX_CONTENT = 1024*100 -- 100 kB maximum content size - -context = util.threadlocal() - -Request = util.class() -function Request.__init__(self, env, sourcein, sinkerr) - self.input = sourcein - self.error = sinkerr - - - -- File handler nil by default to let .content() work - self.filehandler = nil - - -- HTTP-Message table - self.message = { - env = env, - headers = {}, - params = urldecode_params(env.QUERY_STRING or ""), - } - - self.parsed_input = false -end - -function Request.formvalue(self, name, noparse) - if not noparse and not self.parsed_input then - self:_parse_input() - end - - if name then - return self.message.params[name] - else - return self.message.params - end -end - -function Request.formvaluetable(self, prefix) - local vals = {} - prefix = prefix and prefix .. "." or "." - - if not self.parsed_input then - self:_parse_input() - end - - local void = self.message.params[nil] - for k, v in pairs(self.message.params) do - if k:find(prefix, 1, true) == 1 then - vals[k:sub(#prefix + 1)] = tostring(v) - end - end - - return vals -end - -function Request.content(self) - if not self.parsed_input then - self:_parse_input() - end - - return self.message.content, self.message.content_length -end - -function Request.getcookie(self, name) - return lhttp.header_attribute("cookie; " .. (self:getenv("HTTP_COOKIE") or ""), name) -end - -function Request.getenv(self, name) - if name then - return self.message.env[name] - else - return self.message.env - end -end - -function Request.setfilehandler(self, callback) - self.filehandler = callback - - if not self.parsed_input then - return - end - - -- If input has already been parsed then uploads are stored as unlinked - -- temporary files pointed to by open file handles in the parameter - -- value table. Loop all params, and invoke the file callback for any - -- param with an open file handle. - local name, value - for name, value in pairs(self.message.params) do - if type(value) == "table" then - while value.fd do - local data = value.fd:read(1024) - local eof = (not data or data == "") - - callback(value, data, eof) - - if eof then - value.fd:close() - value.fd = nil - end - end - end - end -end - -function Request._parse_input(self) - parse_message_body( - self.input, - self.message, - self.filehandler - ) - self.parsed_input = true -end - -function close() - if not context.eoh then - context.eoh = true - coroutine.yield(3) - end - - if not context.closed then - context.closed = true - coroutine.yield(5) - end -end - -function content() - return context.request:content() -end - -function formvalue(name, noparse) - return context.request:formvalue(name, noparse) -end - -function formvaluetable(prefix) - return context.request:formvaluetable(prefix) -end - -function getcookie(name) - return context.request:getcookie(name) -end - --- or the environment table itself. -function getenv(name) - return context.request:getenv(name) -end - -function setfilehandler(callback) - return context.request:setfilehandler(callback) -end - -function header(key, value) - if not context.headers then - context.headers = {} - end - context.headers[key:lower()] = value - coroutine.yield(2, key, value) -end - -function prepare_content(mime) - if not context.headers or not context.headers["content-type"] then - if mime == "application/xhtml+xml" then - if not getenv("HTTP_ACCEPT") or - not getenv("HTTP_ACCEPT"):find("application/xhtml+xml", nil, true) then - mime = "text/html; charset=UTF-8" - end - header("Vary", "Accept") - end - header("Content-Type", mime) - end -end - -function source() - return context.request.input -end - -function status(code, message) - code = code or 200 - message = message or "OK" - context.status = code - coroutine.yield(1, code, message) -end - --- This function is as a valid LTN12 sink. --- If the content chunk is nil this function will automatically invoke close. -function write(content, src_err) - if not content then - if src_err then - error(src_err) - else - close() - end - return true - elseif #content == 0 then - return true - else - if not context.eoh then - if not context.status then - status() - end - if not context.headers or not context.headers["content-type"] then - header("Content-Type", "text/html; charset=utf-8") - end - if not context.headers["cache-control"] then - header("Cache-Control", "no-cache") - header("Expires", "0") - end - if not context.headers["x-frame-options"] then - header("X-Frame-Options", "SAMEORIGIN") - end - if not context.headers["x-xss-protection"] then - header("X-XSS-Protection", "1; mode=block") - end - if not context.headers["x-content-type-options"] then - header("X-Content-Type-Options", "nosniff") - end - - context.eoh = true - coroutine.yield(3) - end - coroutine.yield(4, content) - return true - end -end - -function splice(fd, size) - coroutine.yield(6, fd, size) -end - -function redirect(url) - if url == "" then url = "/" end - status(302, "Found") - header("Location", url) - close() -end - -function build_querystring(q) - local s, n, k, v = {}, 1, nil, nil - - for k, v in pairs(q) do - s[n+0] = (n == 1) and "?" or "&" - s[n+1] = util.urlencode(k) - s[n+2] = "=" - s[n+3] = util.urlencode(v) - n = n + 4 - end - - return table.concat(s, "") -end - -urldecode = util.urldecode - -urlencode = util.urlencode - -function write_json(x) - util.serialize_json(x, write) -end - --- from given url or string. Returns a table with urldecoded values. --- Simple parameters are stored as string values associated with the parameter --- name within the table. Parameters with multiple values are stored as array --- containing the corresponding values. -function urldecode_params(url, tbl) - local parser, name - local params = tbl or { } - - parser = lhttp.urlencoded_parser(function (what, buffer, length) - if what == parser.TUPLE then - name, value = nil, nil - elseif what == parser.NAME then - name = lhttp.urldecode(buffer) - elseif what == parser.VALUE and name then - params[name] = lhttp.urldecode(buffer) or "" - end - - return true - end) - - if parser then - parser:parse((url or ""):match("[^?]*$")) - parser:parse(nil) - end - - return params -end - --- separated by "&". Tables are encoded as parameters with multiple values by --- repeating the parameter name with each value. -function urlencode_params(tbl) - local k, v - local n, enc = 1, {} - for k, v in pairs(tbl) do - if type(v) == "table" then - local i, v2 - for i, v2 in ipairs(v) do - if enc[1] then - enc[n] = "&" - n = n + 1 - end - - enc[n+0] = lhttp.urlencode(k) - enc[n+1] = "=" - enc[n+2] = lhttp.urlencode(v2) - n = n + 3 - end - else - if enc[1] then - enc[n] = "&" - n = n + 1 - end - - enc[n+0] = lhttp.urlencode(k) - enc[n+1] = "=" - enc[n+2] = lhttp.urlencode(v) - n = n + 3 - end - end - - return table.concat(enc, "") -end - --- Content-Type. Stores all extracted data associated with its parameter name --- in the params table within the given message object. Multiple parameter --- values are stored as tables, ordinary ones as strings. --- If an optional file callback function is given then it is feeded with the --- file contents chunk by chunk and only the extracted file name is stored --- within the params table. The callback function will be called subsequently --- with three arguments: --- o Table containing decoded (name, file) and raw (headers) mime header data --- o String value containing a chunk of the file data --- o Boolean which indicates wheather the current chunk is the last one (eof) -function mimedecode_message_body(src, msg, file_cb) - local parser, header, field - local len, maxlen = 0, tonumber(msg.env.CONTENT_LENGTH or nil) - - parser, err = lhttp.multipart_parser(msg.env.CONTENT_TYPE, function (what, buffer, length) - if what == parser.PART_INIT then - field = { } - - elseif what == parser.HEADER_NAME then - header = buffer:lower() - - elseif what == parser.HEADER_VALUE and header then - if header:lower() == "content-disposition" and - lhttp.header_attribute(buffer, nil) == "form-data" - then - field.name = lhttp.header_attribute(buffer, "name") - field.file = lhttp.header_attribute(buffer, "filename") - field[1] = field.file - end - - if field.headers then - field.headers[header] = buffer - else - field.headers = { [header] = buffer } - end - - elseif what == parser.PART_BEGIN then - return not field.file - - elseif what == parser.PART_DATA and field.name and length > 0 then - if field.file then - if file_cb then - file_cb(field, buffer, false) - msg.params[field.name] = msg.params[field.name] or field - else - if not field.fd then - field.fd = nixio.mkstemp(field.name) - end - - if field.fd then - field.fd:write(buffer) - msg.params[field.name] = msg.params[field.name] or field - end - end - else - field.value = buffer - end - - elseif what == parser.PART_END and field.name then - if field.file and msg.params[field.name] then - if file_cb then - file_cb(field, "", true) - elseif field.fd then - field.fd:seek(0, "set") - end - else - local val = msg.params[field.name] - - if type(val) == "table" then - val[#val+1] = field.value or "" - elseif val ~= nil then - msg.params[field.name] = { val, field.value or "" } - else - msg.params[field.name] = field.value or "" - end - end - - field = nil - - elseif what == parser.ERROR then - err = buffer - end - - return true - end, HTTP_MAX_CONTENT) - - return ltn12.pump.all(src, function (chunk) - len = len + (chunk and #chunk or 0) - - if maxlen and len > maxlen + 2 then - return nil, "Message body size exceeds Content-Length" - end - - if not parser or not parser:parse(chunk) then - return nil, err - end - - return true - end) -end - --- Content-Type. Stores all extracted data associated with its parameter name --- in the params table within the given message object. Multiple parameter --- values are stored as tables, ordinary ones as strings. -function urldecode_message_body(src, msg) - local err, name, value, parser - local len, maxlen = 0, tonumber(msg.env.CONTENT_LENGTH or nil) - - parser = lhttp.urlencoded_parser(function (what, buffer, length) - if what == parser.TUPLE then - name, value = nil, nil - elseif what == parser.NAME then - name = lhttp.urldecode(buffer, lhttp.DECODE_PLUS) - elseif what == parser.VALUE and name then - local val = msg.params[name] - - if type(val) == "table" then - val[#val+1] = lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or "" - elseif val ~= nil then - msg.params[name] = { val, lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or "" } - else - msg.params[name] = lhttp.urldecode(buffer, lhttp.DECODE_PLUS) or "" - end - elseif what == parser.ERROR then - err = buffer - end - - return true - end, HTTP_MAX_CONTENT) - - return ltn12.pump.all(src, function (chunk) - len = len + (chunk and #chunk or 0) - - if maxlen and len > maxlen + 2 then - return nil, "Message body size exceeds Content-Length" - elseif len > HTTP_MAX_CONTENT then - return nil, "Message body size exceeds maximum allowed length" - end - - if not parser or not parser:parse(chunk) then - return nil, err - end - - return true - end) -end - --- This function will examine the Content-Type within the given message object --- to select the appropriate content decoder. --- Currently the application/x-www-urlencoded and application/form-data --- mime types are supported. If the encountered content encoding can't be --- handled then the whole message body will be stored unaltered as "content" --- property within the given message object. -function parse_message_body(src, msg, filecb) - if msg.env.CONTENT_LENGTH or msg.env.REQUEST_METHOD == "POST" then - local ctype = lhttp.header_attribute(msg.env.CONTENT_TYPE, nil) - - -- Is it multipart/mime ? - if ctype == "multipart/form-data" then - return mimedecode_message_body(src, msg, filecb) - - -- Is it application/x-www-form-urlencoded ? - elseif ctype == "application/x-www-form-urlencoded" then - return urldecode_message_body(src, msg) - - end - - -- Unhandled encoding - -- If a file callback is given then feed it chunk by chunk, else - -- store whole buffer in message.content - local sink - - -- If we have a file callback then feed it - if type(filecb) == "function" then - local meta = { - name = "raw", - encoding = msg.env.CONTENT_TYPE - } - sink = function( chunk ) - if chunk then - return filecb(meta, chunk, false) - else - return filecb(meta, nil, true) - end - end - -- ... else append to .content - else - msg.content = "" - msg.content_length = 0 - - sink = function( chunk ) - if chunk then - if ( msg.content_length + #chunk ) <= HTTP_MAX_CONTENT then - msg.content = msg.content .. chunk - msg.content_length = msg.content_length + #chunk - return true - else - return nil, "POST data exceeds maximum allowed length" - end - end - return true - end - end - - -- Pump data... - while true do - local ok, err = ltn12.pump.step( src, sink ) - - if not ok and err then - return nil, err - elseif not ok then -- eof - return true - end - end - - return true - end - - return false -end diff --git a/luci-base/luasrc/http.luadoc b/luci-base/luasrc/http.luadoc deleted file mode 100644 index f8121230b..000000000 --- a/luci-base/luasrc/http.luadoc +++ /dev/null @@ -1,260 +0,0 @@ ----[[ -LuCI Web Framework high-level HTTP functions. -]] -module "luci.http" - ----[[ -Close the HTTP-Connection. - -@class function -@name close -]] - ----[[ -Return the request content if the request was of unknown type. - -@class function -@name content -@return HTTP request body -@return HTTP request body length -]] - ----[[ -Get a certain HTTP input value or a table of all input values. - -@class function -@name formvalue -@param name Name of the GET or POST variable to fetch -@param noparse Don't parse POST data before getting the value -@return HTTP input value or table of all input value -]] - ----[[ -Get a table of all HTTP input values with a certain prefix. - -@class function -@name formvaluetable -@param prefix Prefix -@return Table of all HTTP input values with given prefix -]] - ----[[ -Get the value of a certain HTTP-Cookie. - -@class function -@name getcookie -@param name Cookie Name -@return String containing cookie data -]] - ----[[ -Get the value of a certain HTTP environment variable -or the environment table itself. - -@class function -@name getenv -@param name Environment variable -@return HTTP environment value or environment table -]] - ----[[ -Set a handler function for incoming user file uploads. - -@class function -@name setfilehandler -@param callback Handler function -]] - ----[[ -Send a HTTP-Header. - -@class function -@name header -@param key Header key -@param value Header value -]] - ----[[ -Set the mime type of following content data. - -@class function -@name prepare_content -@param mime Mimetype of following content -]] - ----[[ -Get the RAW HTTP input source - -@class function -@name source -@return HTTP LTN12 source -]] - ----[[ -Set the HTTP status code and status message. - -@class function -@name status -@param code Status code -@param message Status message -]] - ----[[ -Send a chunk of content data to the client. - -This function is as a valid LTN12 sink. -If the content chunk is nil this function will automatically invoke close. - -@class function -@name write -@param content Content chunk -@param src_err Error object from source (optional) -@see close -]] - ----[[ -Splice data from a filedescriptor to the client. - -@class function -@name splice -@param fp File descriptor -@param size Bytes to splice (optional) -]] - ----[[ -Redirects the client to a new URL and closes the connection. - -@class function -@name redirect -@param url Target URL -]] - ----[[ -Create a querystring out of a table of key - value pairs. - -@class function -@name build_querystring -@param table Query string source table -@return Encoded HTTP query string -]] - ----[[ -Return the URL-decoded equivalent of a string. - -@class function -@name urldecode -@param str URL-encoded string -@param no_plus Don't decode + to " " -@return URL-decoded string -@see urlencode -]] - ----[[ -Return the URL-encoded equivalent of a string. - -@class function -@name urlencode -@param str Source string -@return URL-encoded string -@see urldecode -]] - ----[[ -Send the given data as JSON encoded string. - -@class function -@name write_json -@param data Data to send -]] - ----[[ -Extract and split urlencoded data pairs, separated bei either "&" or ";" -from given url or string. Returns a table with urldecoded values. - -Simple parameters are stored as string values associated with the parameter -name within the table. Parameters with multiple values are stored as array -containing the corresponding values. - -@class function -@name urldecode_params -@param url The url or string which contains x-www-urlencoded form data -@param tbl Use the given table for storing values (optional) -@return Table containing the urldecoded parameters -@see urlencode_params -]] - ----[[ -Encode each key-value-pair in given table to x-www-urlencoded format, -separated by "&". - -Tables are encoded as parameters with multiple values by repeating the -parameter name with each value. - -@class function -@name urlencode_params -@param tbl Table with the values -@return String containing encoded values -@see urldecode_params -]] - ----[[ -Decode a mime encoded http message body with multipart/form-data Content-Type. - -Stores all extracted data associated with its parameter name -in the params table within the given message object. Multiple parameter -values are stored as tables, ordinary ones as strings. - -If an optional file callback function is given then it is feeded with the -file contents chunk by chunk and only the extracted file name is stored -within the params table. The callback function will be called subsequently -with three arguments: - o Table containing decoded (name, file) and raw (headers) mime header data - o String value containing a chunk of the file data - o Boolean which indicates wheather the current chunk is the last one (eof) - -@class function -@name mimedecode_message_body -@param src Ltn12 source function -@param msg HTTP message object -@param filecb File callback function (optional) -@return Value indicating successful operation (not nil means "ok") -@return String containing the error if unsuccessful -@see parse_message_header -]] - ----[[ -Decode an urlencoded http message body with application/x-www-urlencoded -Content-Type. - -Stores all extracted data associated with its parameter name in the params -table within the given message object. Multiple parameter values are stored -as tables, ordinary ones as strings. - -@class function -@name urldecode_message_body -@param src Ltn12 source function -@param msg HTTP message object -@return Value indicating successful operation (not nil means "ok") -@return String containing the error if unsuccessful -@see parse_message_header -]] - ----[[ -Try to extract and decode a http message body from the given ltn12 source. -This function will examine the Content-Type within the given message object -to select the appropriate content decoder. - -Currently the application/x-www-urlencoded and application/form-data -mime types are supported. If the encountered content encoding can't be -handled then the whole message body will be stored unaltered as "content" -property within the given message object. - -@class function -@name parse_message_body -@param src Ltn12 source function -@param msg HTTP message object -@param filecb File data callback (optional, see mimedecode_message_body()) -@return Value indicating successful operation (not nil means "ok") -@return String containing the error if unsuccessful -@see parse_message_header -]] diff --git a/luci-base/luasrc/i18n.lua b/luci-base/luasrc/i18n.lua deleted file mode 100644 index bcb16d5c0..000000000 --- a/luci-base/luasrc/i18n.lua +++ /dev/null @@ -1,55 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -module("luci.i18n", package.seeall) -require("luci.util") - -local tparser = require "luci.template.parser" - -table = {} -i18ndir = luci.util.libpath() .. "/i18n/" -loaded = {} -context = luci.util.threadlocal() -default = "en" - -function clear() -end - -function load(file, lang, force) -end - --- Alternatively load the translation of the fallback language. -function loadc(file, force) -end - -function setlanguage(lang) - context.lang = lang:gsub("_", "-") - context.parent = (context.lang:match("^([a-z][a-z])_")) - if not tparser.load_catalog(context.lang, i18ndir) then - if context.parent then - tparser.load_catalog(context.parent, i18ndir) - return context.parent - end - end - return context.lang -end - -function translate(key) - return tparser.translate(key) or key -end - -function translatef(key, ...) - return tostring(translate(key)):format(...) -end - --- and ensure that the returned value is a Lua string value. --- This is the same as calling tostring(translate(...)) -function string(key) - return tostring(translate(key)) -end - --- Ensure that the returned value is a Lua string value. --- This is the same as calling tostring(translatef(...)) -function stringf(key, ...) - return tostring(translate(key)):format(...) -end diff --git a/luci-base/luasrc/i18n.luadoc b/luci-base/luasrc/i18n.luadoc deleted file mode 100644 index aa38841e1..000000000 --- a/luci-base/luasrc/i18n.luadoc +++ /dev/null @@ -1,84 +0,0 @@ ----[[ -LuCI translation library. -]] -module "luci.i18n" - ----[[ -Clear the translation table. - - -@class function -@name clear -]] - ----[[ -Load a translation and copy its data into the translation table. - -@class function -@name load -@param file Language file -@param lang Two-letter language code -@param force Force reload even if already loaded (optional) -@return Success status -]] - ----[[ -Load a translation file using the default translation language. - -Alternatively load the translation of the fallback language. -@class function -@name loadc -@param file Language file -@param force Force reload even if already loaded (optional) -]] - ----[[ -Set the context default translation language. - -@class function -@name setlanguage -@param lang Two-letter language code -]] - ----[[ -Return the translated value for a specific translation key. - -@class function -@name translate -@param key Default translation text -@return Translated string -]] - ----[[ -Return the translated value for a specific translation key and use it as sprintf pattern. - -@class function -@name translatef -@param key Default translation text -@param ... Format parameters -@return Translated and formatted string -]] - ----[[ -Return the translated value for a specific translation key - -and ensure that the returned value is a Lua string value. -This is the same as calling tostring(translate(...)) -@class function -@name string -@param key Default translation text -@return Translated string -]] - ----[[ -Return the translated value for a specific translation key and use it as sprintf pattern. - -Ensure that the returned value is a Lua string value. -This is the same as calling tostring(translatef(...)) -@class function -@name stringf -@param key Default translation text -@param ... Format parameters -@return Translated and formatted string -]] - diff --git a/luci-base/luasrc/ltn12.lua b/luci-base/luasrc/ltn12.lua deleted file mode 100644 index 3a7268cca..000000000 --- a/luci-base/luasrc/ltn12.lua +++ /dev/null @@ -1,316 +0,0 @@ ---[[ -LuaSocket 2.0.2 license -Copyright � 2004-2007 Diego Nehab - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. -]]-- ---[[ - Changes made by LuCI project: - * Renamed to luci.ltn12 to avoid collisions with luasocket - * Added inline documentation -]]-- ------------------------------------------------------------------------------ --- LTN12 - Filters, sources, sinks and pumps. --- LuaSocket toolkit. --- Author: Diego Nehab --- RCS ID: $Id$ ------------------------------------------------------------------------------ - ------------------------------------------------------------------------------ --- Declare module ------------------------------------------------------------------------------ -local string = require("string") -local table = require("table") -local base = _G - --- See http://lua-users.org/wiki/FiltersSourcesAndSinks for design concepts -module("luci.ltn12") - -filter = {} -source = {} -sink = {} -pump = {} - --- 2048 seems to be better in windows... -BLOCKSIZE = 2048 -_VERSION = "LTN12 1.0.1" - ------------------------------------------------------------------------------ --- Filter stuff ------------------------------------------------------------------------------ - - --- by passing it each chunk and updating a context between calls. -function filter.cycle(low, ctx, extra) - base.assert(low) - return function(chunk) - local ret - ret, ctx = low(ctx, chunk, extra) - return ret - end -end - --- (thanks to Wim Couwenberg) -function filter.chain(...) - local n = table.getn(arg) - local top, index = 1, 1 - local retry = "" - return function(chunk) - retry = chunk and retry - while true do - if index == top then - chunk = arg[index](chunk) - if chunk == "" or top == n then return chunk - elseif chunk then index = index + 1 - else - top = top+1 - index = top - end - else - chunk = arg[index](chunk or "") - if chunk == "" then - index = index - 1 - chunk = retry - elseif chunk then - if index == n then return chunk - else index = index + 1 end - else base.error("filter returned inappropriate nil") end - end - end - end -end - ------------------------------------------------------------------------------ --- Source stuff ------------------------------------------------------------------------------ - - --- create an empty source -local function empty() - return nil -end - -function source.empty() - return empty -end - -function source.error(err) - return function() - return nil, err - end -end - -function source.file(handle, io_err) - if handle then - return function() - local chunk = handle:read(BLOCKSIZE) - if chunk and chunk:len() == 0 then chunk = nil end - if not chunk then handle:close() end - return chunk - end - else return source.error(io_err or "unable to open file") end -end - -function source.simplify(src) - base.assert(src) - return function() - local chunk, err_or_new = src() - src = err_or_new or src - if not chunk then return nil, err_or_new - else return chunk end - end -end - -function source.string(s) - if s then - local i = 1 - return function() - local chunk = string.sub(s, i, i+BLOCKSIZE-1) - i = i + BLOCKSIZE - if chunk ~= "" then return chunk - else return nil end - end - else return source.empty() end -end - -function source.rewind(src) - base.assert(src) - local t = {} - return function(chunk) - if not chunk then - chunk = table.remove(t) - if not chunk then return src() - else return chunk end - else - t[#t+1] = chunk - end - end -end - -function source.chain(src, f) - base.assert(src and f) - local last_in, last_out = "", "" - local state = "feeding" - local err - return function() - if not last_out then - base.error('source is empty!', 2) - end - while true do - if state == "feeding" then - last_in, err = src() - if err then return nil, err end - last_out = f(last_in) - if not last_out then - if last_in then - base.error('filter returned inappropriate nil') - else - return nil - end - elseif last_out ~= "" then - state = "eating" - if last_in then last_in = "" end - return last_out - end - else - last_out = f(last_in) - if last_out == "" then - if last_in == "" then - state = "feeding" - else - base.error('filter returned ""') - end - elseif not last_out then - if last_in then - base.error('filter returned inappropriate nil') - else - return nil - end - else - return last_out - end - end - end - end -end - --- Sources will be used one after the other, as if they were concatenated --- (thanks to Wim Couwenberg) -function source.cat(...) - local src = table.remove(arg, 1) - return function() - while src do - local chunk, err = src() - if chunk then return chunk end - if err then return nil, err end - src = table.remove(arg, 1) - end - end -end - ------------------------------------------------------------------------------ --- Sink stuff ------------------------------------------------------------------------------ - - -function sink.table(t) - t = t or {} - local f = function(chunk, err) - if chunk then t[#t+1] = chunk end - return 1 - end - return f, t -end - -function sink.simplify(snk) - base.assert(snk) - return function(chunk, err) - local ret, err_or_new = snk(chunk, err) - if not ret then return nil, err_or_new end - snk = err_or_new or snk - return 1 - end -end - -function sink.file(handle, io_err) - if handle then - return function(chunk, err) - if not chunk then - handle:close() - return 1 - else return handle:write(chunk) end - end - else return sink.error(io_err or "unable to open file") end -end - --- creates a sink that discards data -local function null() - return 1 -end - -function sink.null() - return null -end - -function sink.error(err) - return function() - return nil, err - end -end - -function sink.chain(f, snk) - base.assert(f and snk) - return function(chunk, err) - if chunk ~= "" then - local filtered = f(chunk) - local done = chunk and "" - while true do - local ret, snkerr = snk(filtered, err) - if not ret then return nil, snkerr end - if filtered == done then return 1 end - filtered = f(done) - end - else return 1 end - end -end - ------------------------------------------------------------------------------ --- Pump stuff ------------------------------------------------------------------------------ - - -function pump.step(src, snk) - local chunk, src_err = src() - local ret, snk_err = snk(chunk, src_err) - if chunk and ret then return 1 - else return nil, src_err or snk_err end -end - -function pump.all(src, snk, step) - base.assert(src and snk) - step = step or pump.step - while true do - local ret, err = step(src, snk) - if not ret then - if err then return nil, err - else return 1 end - end - end -end - diff --git a/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua b/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua deleted file mode 100644 index dc702e4a9..000000000 --- a/luci-base/luasrc/model/cbi/admin_network/proto_dhcp.lua +++ /dev/null @@ -1,67 +0,0 @@ --- Copyright 2011-2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... -local ifc = net:get_interface() - -local hostname, accept_ra, send_rs -local bcast, defaultroute, peerdns, dns, metric, clientid, vendorclass - - -hostname = section:taboption("general", Value, "hostname", - translate("Hostname to send when requesting DHCP")) - -hostname.placeholder = luci.sys.hostname() -hostname.datatype = "hostname" - - -bcast = section:taboption("advanced", Flag, "broadcast", - translate("Use broadcast flag"), - translate("Required for certain ISPs, e.g. Charter with DOCSIS 3")) - -bcast.default = bcast.disabled - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -peerdns = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) - -peerdns.default = peerdns.enabled - - -dns = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns:depends("peerdns", "") -dns.datatype = "ipaddr" -dns.cast = "string" - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" - - -clientid = section:taboption("advanced", Value, "clientid", - translate("Client ID to send when requesting DHCP")) - - -vendorclass = section:taboption("advanced", Value, "vendorid", - translate("Vendor Class to send when requesting DHCP")) - - -luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) - - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1500" -mtu.datatype = "max(9200)" diff --git a/luci-base/luasrc/model/cbi/admin_network/proto_none.lua b/luci-base/luasrc/model/cbi/admin_network/proto_none.lua deleted file mode 100644 index 6fdded9ad..000000000 --- a/luci-base/luasrc/model/cbi/admin_network/proto_none.lua +++ /dev/null @@ -1,4 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... diff --git a/luci-base/luasrc/model/cbi/admin_network/proto_static.lua b/luci-base/luasrc/model/cbi/admin_network/proto_static.lua deleted file mode 100644 index 1c70f85af..000000000 --- a/luci-base/luasrc/model/cbi/admin_network/proto_static.lua +++ /dev/null @@ -1,96 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... -local ifc = net:get_interface() - -local ipaddr, netmask, gateway, broadcast, dns, accept_ra, send_rs, ip6addr, ip6gw -local mtu, metric - - -ipaddr = section:taboption("general", Value, "ipaddr", translate("IPv4 address")) -ipaddr.datatype = "ip4addr" - - -netmask = section:taboption("general", Value, "netmask", - translate("IPv4 netmask")) - -netmask.datatype = "ip4addr" -netmask:value("255.255.255.0") -netmask:value("255.255.0.0") -netmask:value("255.0.0.0") - - -gateway = section:taboption("general", Value, "gateway", translate("IPv4 gateway")) -gateway.datatype = "ip4addr" - - -broadcast = section:taboption("general", Value, "broadcast", translate("IPv4 broadcast")) -broadcast.datatype = "ip4addr" - - -dns = section:taboption("general", DynamicList, "dns", - translate("Use custom DNS servers")) - -dns.datatype = "ipaddr" -dns.cast = "string" - - -if luci.model.network:has_ipv6() then - - local ip6assign = section:taboption("general", Value, "ip6assign", translate("IPv6 assignment length"), - translate("Assign a part of given length of every public IPv6-prefix to this interface")) - ip6assign:value("", translate("disabled")) - ip6assign:value("64") - ip6assign.datatype = "max(64)" - - local ip6hint = section:taboption("general", Value, "ip6hint", translate("IPv6 assignment hint"), - translate("Assign prefix parts using this hexadecimal subprefix ID for this interface.")) - for i=33,64 do ip6hint:depends("ip6assign", i) end - - ip6addr = section:taboption("general", Value, "ip6addr", translate("IPv6 address")) - ip6addr.datatype = "ip6addr" - ip6addr:depends("ip6assign", "") - - - ip6gw = section:taboption("general", Value, "ip6gw", translate("IPv6 gateway")) - ip6gw.datatype = "ip6addr" - ip6gw:depends("ip6assign", "") - - - local ip6prefix = s:taboption("general", Value, "ip6prefix", translate("IPv6 routed prefix"), - translate("Public prefix routed to this device for distribution to clients.")) - ip6prefix.datatype = "ip6addr" - ip6prefix:depends("ip6assign", "") - - local ip6ifaceid = s:taboption("general", Value, "ip6ifaceid", translate("IPv6 suffix"), - translate("Optional. Allowed values: 'eui64', 'random', fixed value like '::1' " .. - "or '::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a " .. - "delegating server, use the suffix (like '::1') to form the IPv6 address " .. - "('a:b:c:d::1') for the interface.")) - ip6ifaceid.datatype = "ip6hostid" - ip6ifaceid.placeholder = "::1" - ip6ifaceid.rmempty = true - -end - - -luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) - - -mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -mtu.placeholder = "1500" -mtu.datatype = "max(9200)" - - ---metric = section:taboption("advanced", Value, "metric", --- translate("Use gateway metric")) ---metric.default = "1" ---metric.datatype = "uinteger" - ---local nw = require "luci.model.network".init() ---for _, network in ipairs(nw:get_networks()) do --- if network:proto() == "static" and network:type() == "macvlan" and tonumber(network:metric()) >= tonumber(metric.default) then --- metric.default = network:metric() + 1 --- end ---end diff --git a/luci-base/luasrc/model/firewall.lua b/luci-base/luasrc/model/firewall.lua deleted file mode 100644 index feff0855c..000000000 --- a/luci-base/luasrc/model/firewall.lua +++ /dev/null @@ -1,568 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local type, pairs, ipairs, table, luci, math - = type, pairs, ipairs, table, luci, math - -local tpl = require "luci.template.parser" -local utl = require "luci.util" -local uci = require "luci.model.uci" - -module "luci.model.firewall" - - -local uci_r, uci_s - -function _valid_id(x) - return (x and #x > 0 and x:match("^[a-zA-Z0-9_]+$")) -end - -function _get(c, s, o) - return uci_r:get(c, s, o) -end - -function _set(c, s, o, v) - if v ~= nil then - if type(v) == "boolean" then v = v and "1" or "0" end - return uci_r:set(c, s, o, v) - else - return uci_r:delete(c, s, o) - end -end - - -function init(cursor) - uci_r = cursor or uci_r or uci.cursor() - uci_s = uci_r:substate() - - return _M -end - -function save(self, ...) - uci_r:save(...) - uci_r:load(...) -end - -function commit(self, ...) - uci_r:commit(...) - uci_r:load(...) -end - -function get_defaults() - return defaults() -end - -function new_zone(self) - local name = "newzone" - local count = 1 - - while self:get_zone(name) do - count = count + 1 - name = "newzone%d" % count - end - - return self:add_zone(name) -end - -function add_zone(self, n) - if _valid_id(n) and not self:get_zone(n) then - local d = defaults() - local z = uci_r:section("firewall", "zone", nil, { - name = n, - network = " ", - input = d:input() or "DROP", - forward = d:forward() or "DROP", - output = d:output() or "DROP" - }) - - return z and zone(z) - end -end - -function get_zone(self, n) - if uci_r:get("firewall", n) == "zone" then - return zone(n) - else - local z - uci_r:foreach("firewall", "zone", - function(s) - if n and s.name == n then - z = s['.name'] - return false - end - end) - return z and zone(z) - end -end - -function get_zones(self) - local zones = { } - local znl = { } - - uci_r:foreach("firewall", "zone", - function(s) - if s.name then - znl[s.name] = zone(s['.name']) - end - end) - - local z - for z in utl.kspairs(znl) do - zones[#zones+1] = znl[z] - end - - return zones -end - -function get_zone_by_network(self, net) - local z - - uci_r:foreach("firewall", "zone", - function(s) - if s.name and net then - local n - for n in utl.imatch(s.network or s.name) do - if n == net then - z = s['.name'] - return false - end - end - end - end) - - return z and zone(z) -end - -function del_zone(self, n) - local r = false - - if uci_r:get("firewall", n) == "zone" then - local z = uci_r:get("firewall", n, "name") - r = uci_r:delete("firewall", n) - n = z - else - uci_r:foreach("firewall", "zone", - function(s) - if n and s.name == n then - r = uci_r:delete("firewall", s['.name']) - return false - end - end) - end - - if r then - uci_r:foreach("firewall", "rule", - function(s) - if s.src == n or s.dest == n then - uci_r:delete("firewall", s['.name']) - end - end) - - uci_r:foreach("firewall", "redirect", - function(s) - if s.src == n or s.dest == n then - uci_r:delete("firewall", s['.name']) - end - end) - - uci_r:foreach("firewall", "forwarding", - function(s) - if s.src == n or s.dest == n then - uci_r:delete("firewall", s['.name']) - end - end) - end - - return r -end - -function rename_zone(self, old, new) - local r = false - - if _valid_id(new) and not self:get_zone(new) then - uci_r:foreach("firewall", "zone", - function(s) - if old and s.name == old then - if not s.network then - uci_r:set("firewall", s['.name'], "network", old) - end - uci_r:set("firewall", s['.name'], "name", new) - r = true - return false - end - end) - - if r then - uci_r:foreach("firewall", "rule", - function(s) - if s.src == old then - uci_r:set("firewall", s['.name'], "src", new) - end - if s.dest == old then - uci_r:set("firewall", s['.name'], "dest", new) - end - end) - - uci_r:foreach("firewall", "redirect", - function(s) - if s.src == old then - uci_r:set("firewall", s['.name'], "src", new) - end - if s.dest == old then - uci_r:set("firewall", s['.name'], "dest", new) - end - end) - - uci_r:foreach("firewall", "forwarding", - function(s) - if s.src == old then - uci_r:set("firewall", s['.name'], "src", new) - end - if s.dest == old then - uci_r:set("firewall", s['.name'], "dest", new) - end - end) - end - end - - return r -end - -function del_network(self, net) - local z - if net then - for _, z in ipairs(self:get_zones()) do - z:del_network(net) - end - end -end - - -defaults = utl.class() -function defaults.__init__(self) - uci_r:foreach("firewall", "defaults", - function(s) - self.sid = s['.name'] - return false - end) - - self.sid = self.sid or uci_r:section("firewall", "defaults", nil, { }) -end - -function defaults.get(self, opt) - return _get("firewall", self.sid, opt) -end - -function defaults.set(self, opt, val) - return _set("firewall", self.sid, opt, val) -end - -function defaults.syn_flood(self) - return (self:get("syn_flood") == "1") -end - -function defaults.drop_invalid(self) - return (self:get("drop_invalid") == "1") -end - -function defaults.input(self) - return self:get("input") or "DROP" -end - -function defaults.forward(self) - return self:get("forward") or "DROP" -end - -function defaults.output(self) - return self:get("output") or "DROP" -end - - -zone = utl.class() -function zone.__init__(self, z) - if uci_r:get("firewall", z) == "zone" then - self.sid = z - self.data = uci_r:get_all("firewall", z) - else - uci_r:foreach("firewall", "zone", - function(s) - if s.name == z then - self.sid = s['.name'] - self.data = s - return false - end - end) - end -end - -function zone.get(self, opt) - return _get("firewall", self.sid, opt) -end - -function zone.set(self, opt, val) - return _set("firewall", self.sid, opt, val) -end - -function zone.masq(self) - return (self:get("masq") == "1") -end - -function zone.name(self) - return self:get("name") -end - -function zone.network(self) - return self:get("network") -end - -function zone.input(self) - return self:get("input") or defaults():input() or "DROP" -end - -function zone.forward(self) - return self:get("forward") or defaults():forward() or "DROP" -end - -function zone.output(self) - return self:get("output") or defaults():output() or "DROP" -end - -function zone.add_network(self, net) - if uci_r:get("network", net) == "interface" then - local nets = { } - - local n - for n in utl.imatch(self:get("network") or self:get("name")) do - if n ~= net then - nets[#nets+1] = n - end - end - - nets[#nets+1] = net - - _M:del_network(net) - self:set("network", table.concat(nets, " ")) - end -end - -function zone.del_network(self, net) - local nets = { } - - local n - for n in utl.imatch(self:get("network") or self:get("name")) do - if n ~= net then - nets[#nets+1] = n - end - end - - if #nets > 0 then - self:set("network", table.concat(nets, " ")) - else - self:set("network", " ") - end -end - -function zone.get_networks(self) - local nets = { } - - local n - for n in utl.imatch(self:get("network") or self:get("name")) do - nets[#nets+1] = n - end - - return nets -end - -function zone.clear_networks(self) - self:set("network", " ") -end - -function zone.get_forwardings_by(self, what) - local name = self:name() - local forwards = { } - - uci_r:foreach("firewall", "forwarding", - function(s) - if s.src and s.dest and s[what] == name then - forwards[#forwards+1] = forwarding(s['.name']) - end - end) - - return forwards -end - -function zone.add_forwarding_to(self, dest) - local exist, forward - - for _, forward in ipairs(self:get_forwardings_by('src')) do - if forward:dest() == dest then - exist = true - break - end - end - - if not exist and dest ~= self:name() and _valid_id(dest) then - local s = uci_r:section("firewall", "forwarding", nil, { - src = self:name(), - dest = dest - }) - - return s and forwarding(s) - end -end - -function zone.add_forwarding_from(self, src) - local exist, forward - - for _, forward in ipairs(self:get_forwardings_by('dest')) do - if forward:src() == src then - exist = true - break - end - end - - if not exist and src ~= self:name() and _valid_id(src) then - local s = uci_r:section("firewall", "forwarding", nil, { - src = src, - dest = self:name() - }) - - return s and forwarding(s) - end -end - -function zone.del_forwardings_by(self, what) - local name = self:name() - - uci_r:delete_all("firewall", "forwarding", - function(s) - return (s.src and s.dest and s[what] == name) - end) -end - -function zone.add_redirect(self, options) - options = options or { } - options.src = self:name() - - local s = uci_r:section("firewall", "redirect", nil, options) - return s and redirect(s) -end - -function zone.add_rule(self, options) - options = options or { } - options.src = self:name() - - local s = uci_r:section("firewall", "rule", nil, options) - return s and rule(s) -end - -function zone.get_color(self) - if self and self:name() == "lan" then - return "#90f090" - elseif self and self:name() == "wan" then - return "#f09090" - elseif self then - math.randomseed(tpl.hash(self:name())) - - local r = math.random(128) - local g = math.random(128) - local min = 0 - local max = 128 - - if ( r + g ) < 128 then - min = 128 - r - g - else - max = 255 - r - g - end - - local b = min + math.floor( math.random() * ( max - min ) ) - - return "#%02x%02x%02x" % { 0xFF - r, 0xFF - g, 0xFF - b } - else - return "#eeeeee" - end -end - - -forwarding = utl.class() -function forwarding.__init__(self, f) - self.sid = f -end - -function forwarding.src(self) - return uci_r:get("firewall", self.sid, "src") -end - -function forwarding.dest(self) - return uci_r:get("firewall", self.sid, "dest") -end - -function forwarding.src_zone(self) - local z = zone(self:src()) - return z.sid and z -end - -function forwarding.dest_zone(self) - local z = zone(self:dest()) - return z.sid and z -end - - -rule = utl.class() -function rule.__init__(self, f) - self.sid = f -end - -function rule.get(self, opt) - return _get("firewall", self.sid, opt) -end - -function rule.set(self, opt, val) - return _set("firewall", self.sid, opt, val) -end - -function rule.src(self) - return uci_r:get("firewall", self.sid, "src") -end - -function rule.dest(self) - return uci_r:get("firewall", self.sid, "dest") -end - -function rule.src_zone(self) - return zone(self:src()) -end - -function rule.dest_zone(self) - return zone(self:dest()) -end - - -redirect = utl.class() -function redirect.__init__(self, f) - self.sid = f -end - -function redirect.get(self, opt) - return _get("firewall", self.sid, opt) -end - -function redirect.set(self, opt, val) - return _set("firewall", self.sid, opt, val) -end - -function redirect.src(self) - return uci_r:get("firewall", self.sid, "src") -end - -function redirect.dest(self) - return uci_r:get("firewall", self.sid, "dest") -end - -function redirect.src_zone(self) - return zone(self:src()) -end - -function redirect.dest_zone(self) - return zone(self:dest()) -end diff --git a/luci-base/luasrc/model/ipkg.lua b/luci-base/luasrc/model/ipkg.lua deleted file mode 100644 index e27ea5289..000000000 --- a/luci-base/luasrc/model/ipkg.lua +++ /dev/null @@ -1,247 +0,0 @@ --- Copyright 2008-2011 Jo-Philipp Wich --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local os = require "os" -local io = require "io" -local fs = require "nixio.fs" -local util = require "luci.util" - -local type = type -local pairs = pairs -local error = error -local table = table - -local ipkg = "opkg --force-removal-of-dependent-packages --force-overwrite --nocase" -local icfg = "/etc/opkg.conf" - -module "luci.model.ipkg" - - --- Internal action function -local function _action(cmd, ...) - local cmdline = { ipkg, cmd } - - local k, v - for k, v in pairs({...}) do - cmdline[#cmdline+1] = util.shellquote(v) - end - - local c = "%s >/tmp/opkg.stdout 2>/tmp/opkg.stderr" % table.concat(cmdline, " ") - local r = os.execute(c) - local e = fs.readfile("/tmp/opkg.stderr") - local o = fs.readfile("/tmp/opkg.stdout") - - fs.unlink("/tmp/opkg.stderr") - fs.unlink("/tmp/opkg.stdout") - - return r, o or "", e or "" -end - --- Internal parser function -local function _parselist(rawdata) - if type(rawdata) ~= "function" then - error("OPKG: Invalid rawdata given") - end - - local data = {} - local c = {} - local l = nil - - for line in rawdata do - if line:sub(1, 1) ~= " " then - local key, val = line:match("(.-): ?(.*)%s*") - - if key and val then - if key == "Package" then - c = {Package = val} - data[val] = c - elseif key == "Status" then - c.Status = {} - for j in val:gmatch("([^ ]+)") do - c.Status[j] = true - end - else - c[key] = val - end - l = key - end - else - -- Multi-line field - c[l] = c[l] .. "\n" .. line - end - end - - return data -end - --- Internal lookup function -local function _lookup(cmd, pkg) - local cmdline = { ipkg, cmd } - if pkg then - cmdline[#cmdline+1] = util.shellquote(pkg) - end - - -- OPKG sometimes kills the whole machine because it sucks - -- Therefore we have to use a sucky approach too and use - -- tmpfiles instead of directly reading the output - local tmpfile = os.tmpname() - os.execute("%s >%s 2>/dev/null" %{ table.concat(cmdline, " "), tmpfile }) - - local data = _parselist(io.lines(tmpfile)) - os.remove(tmpfile) - return data -end - - -function info(pkg) - return _lookup("info", pkg) -end - -function status(pkg) - return _lookup("status", pkg) -end - -function install(...) - return _action("install", ...) -end - -function installed(pkg) - local p = status(pkg)[pkg] - return (p and p.Status and p.Status.installed) -end - -function remove(...) - return _action("remove", ...) -end - -function update() - return _action("update") -end - -function upgrade() - return _action("upgrade") -end - --- List helper -local function _list(action, pat, cb) - local cmdline = { ipkg, action } - if pat then - cmdline[#cmdline+1] = util.shellquote(pat) - end - - local fd = io.popen(table.concat(cmdline, " ")) - if fd then - local name, version, sz, desc - while true do - local line = fd:read("*l") - if not line then break end - - name, version, sz, desc = line:match("^(.-) %- (.-) %- (.-) %- (.+)") - - if not name then - name, version, sz = line:match("^(.-) %- (.-) %- (.+)") - desc = "" - end - - if name and version then - if #version > 26 then - version = version:sub(1,21) .. ".." .. version:sub(-3,-1) - end - - cb(name, version, sz, desc) - end - - name = nil - version = nil - sz = nil - desc = nil - end - - fd:close() - end -end - -function list_all(pat, cb) - _list("list --size", pat, cb) -end - -function list_installed(pat, cb) - _list("list_installed --size", pat, cb) -end - -function find(pat, cb) - _list("find --size", pat, cb) -end - - -function overlay_root() - local od = "/" - local fd = io.open(icfg, "r") - - if fd then - local ln - - repeat - ln = fd:read("*l") - if ln and ln:match("^%s*option%s+overlay_root%s+") then - od = ln:match("^%s*option%s+overlay_root%s+(%S+)") - - local s = fs.stat(od) - if not s or s.type ~= "dir" then - od = "/" - end - - break - end - until not ln - - fd:close() - end - - return od -end - -function compare_versions(ver1, comp, ver2) - if not ver1 or not ver2 - or not comp or not (#comp > 0) then - error("Invalid parameters") - return nil - end - -- correct compare string - if comp == "<>" or comp == "><" or comp == "!=" or comp == "~=" then comp = "~=" - elseif comp == "<=" or comp == "<" or comp == "=<" then comp = "<=" - elseif comp == ">=" or comp == ">" or comp == "=>" then comp = ">=" - elseif comp == "=" or comp == "==" then comp = "==" - elseif comp == "<<" then comp = "<" - elseif comp == ">>" then comp = ">" - else - error("Invalid compare string") - return nil - end - - local av1 = util.split(ver1, "[%.%-]", nil, true) - local av2 = util.split(ver2, "[%.%-]", nil, true) - - local max = table.getn(av1) - if (table.getn(av1) < table.getn(av2)) then - max = table.getn(av2) - end - - for i = 1, max, 1 do - local s1 = av1[i] or "" - local s2 = av2[i] or "" - - -- first "not equal" found return true - if comp == "~=" and (s1 ~= s2) then return true end - -- first "lower" found return true - if (comp == "<" or comp == "<=") and (s1 < s2) then return true end - -- first "greater" found return true - if (comp == ">" or comp == ">=") and (s1 > s2) then return true end - -- not equal then return false - if (s1 ~= s2) then return false end - end - - -- all equal and not compare greater or lower then true - return not (comp == "<" or comp == ">") -end diff --git a/luci-base/luasrc/model/ipkg.luadoc b/luci-base/luasrc/model/ipkg.luadoc deleted file mode 100644 index 4e1548dda..000000000 --- a/luci-base/luasrc/model/ipkg.luadoc +++ /dev/null @@ -1,125 +0,0 @@ ----[[ -LuCI OPKG call abstraction library -]] -module "luci.model.ipkg" - ----[[ -Return information about installed and available packages. - -@class function -@name info -@param pkg Limit output to a (set of) packages -@return Table containing package information -]] - ----[[ -Return the package status of one or more packages. - -@class function -@name status -@param pkg Limit output to a (set of) packages -@return Table containing package status information -]] - ----[[ -Install one or more packages. - -@class function -@name install -@param ... List of packages to install -@return Boolean indicating the status of the action -@return OPKG return code, STDOUT and STDERR -]] - ----[[ -Determine whether a given package is installed. - -@class function -@name installed -@param pkg Package -@return Boolean -]] - ----[[ -Remove one or more packages. - -@class function -@name remove -@param ... List of packages to install -@return Boolean indicating the status of the action -@return OPKG return code, STDOUT and STDERR -]] - ----[[ -Update package lists. - -@class function -@name update -@return Boolean indicating the status of the action -@return OPKG return code, STDOUT and STDERR -]] - ----[[ -Upgrades all installed packages. - -@class function -@name upgrade -@return Boolean indicating the status of the action -@return OPKG return code, STDOUT and STDERR -]] - ----[[ -List all packages known to opkg. - -@class function -@name list_all -@param pat Only find packages matching this pattern, nil lists all packages -@param cb Callback function invoked for each package, receives name, version and description as arguments -@return nothing -]] - ----[[ -List installed packages. - -@class function -@name list_installed -@param pat Only find packages matching this pattern, nil lists all packages -@param cb Callback function invoked for each package, receives name, version and description as arguments -@return nothing -]] - ----[[ -Find packages that match the given pattern. - -@class function -@name find -@param pat Find packages whose names or descriptions match this pattern, nil results in zero results -@param cb Callback function invoked for each patckage, receives name, version and description as arguments -@return nothing -]] - ----[[ -Determines the overlay root used by opkg. - -@class function -@name overlay_root -@return String containing the directory path of the overlay root. -]] - ----[[ -lua version of opkg compare-versions - -@class function -@name compare_versions -@param ver1 string version 1 -@param ver2 string version 2 -@param comp string compare versions using - "<=" or "<" lower-equal - ">" or ">=" greater-equal - "=" equal - "<<" lower - ">>" greater - "~=" not equal -@return Boolean indicating the status of the compare -]] - diff --git a/luci-base/luasrc/model/network.lua b/luci-base/luasrc/model/network.lua deleted file mode 100644 index cce559aab..000000000 --- a/luci-base/luasrc/model/network.lua +++ /dev/null @@ -1,1887 +0,0 @@ --- Copyright 2009-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local type, next, pairs, ipairs, loadfile, table, select - = type, next, pairs, ipairs, loadfile, table, select - -local tonumber, tostring, math = tonumber, tostring, math - -local pcall, require, setmetatable = pcall, require, setmetatable - -local nxo = require "nixio" -local nfs = require "nixio.fs" -local ipc = require "luci.ip" -local utl = require "luci.util" -local uci = require "luci.model.uci" -local lng = require "luci.i18n" -local jsc = require "luci.jsonc" - -module "luci.model.network" - - -IFACE_PATTERNS_VIRTUAL = { } -IFACE_PATTERNS_IGNORE = { "^wmaster%d", "^wifi%d", "^hwsim%d", "^imq%d", "^ifb%d", "^mon%.wlan%d", "^sit%d", "^gre%d", "^gretap%d", "^ip6gre%d", "^ip6tnl%d", "^tunl%d", "^lo$" } -IFACE_PATTERNS_WIRELESS = { "^wlan%d", "^wl%d", "^ath%d", "^%w+%.network%d" } - -IFACE_ERRORS = { - CONNECT_FAILED = lng.translate("Connection attempt failed"), - INVALID_ADDRESS = lng.translate("IP address in invalid"), - INVALID_GATEWAY = lng.translate("Gateway address is invalid"), - INVALID_LOCAL_ADDRESS = lng.translate("Local IP address is invalid"), - MISSING_ADDRESS = lng.translate("IP address is missing"), - MISSING_PEER_ADDRESS = lng.translate("Peer address is missing"), - NO_DEVICE = lng.translate("Network device is not present"), - NO_IFACE = lng.translate("Unable to determine device name"), - NO_IFNAME = lng.translate("Unable to determine device name"), - NO_WAN_ADDRESS = lng.translate("Unable to determine external IP address"), - NO_WAN_LINK = lng.translate("Unable to determine upstream interface"), - PEER_RESOLVE_FAIL = lng.translate("Unable to resolve peer host name"), - PIN_FAILED = lng.translate("PIN code rejected") -} - - -protocol = utl.class() - -local _protocols = { } - -local _interfaces, _bridge, _switch, _tunnel, _swtopo -local _ubusnetcache, _ubusdevcache, _ubuswificache -local _uci - -function _filter(c, s, o, r) - local val = _uci:get(c, s, o) - if val then - local l = { } - if type(val) == "string" then - for val in val:gmatch("%S+") do - if val ~= r then - l[#l+1] = val - end - end - if #l > 0 then - _uci:set(c, s, o, table.concat(l, " ")) - else - _uci:delete(c, s, o) - end - elseif type(val) == "table" then - for _, val in ipairs(val) do - if val ~= r then - l[#l+1] = val - end - end - if #l > 0 then - _uci:set(c, s, o, l) - else - _uci:delete(c, s, o) - end - end - end -end - -function _append(c, s, o, a) - local val = _uci:get(c, s, o) or "" - if type(val) == "string" then - local l = { } - for val in val:gmatch("%S+") do - if val ~= a then - l[#l+1] = val - end - end - l[#l+1] = a - _uci:set(c, s, o, table.concat(l, " ")) - elseif type(val) == "table" then - local l = { } - for _, val in ipairs(val) do - if val ~= a then - l[#l+1] = val - end - end - l[#l+1] = a - _uci:set(c, s, o, l) - end -end - -function _stror(s1, s2) - if not s1 or #s1 == 0 then - return s2 and #s2 > 0 and s2 - else - return s1 - end -end - -function _get(c, s, o) - return _uci:get(c, s, o) -end - -function _set(c, s, o, v) - if v ~= nil then - if type(v) == "boolean" then v = v and "1" or "0" end - return _uci:set(c, s, o, v) - else - return _uci:delete(c, s, o) - end -end - -local function _wifi_state() - if not next(_ubuswificache) then - _ubuswificache = utl.ubus("network.wireless", "status", {}) or {} - end - return _ubuswificache -end - -local function _wifi_state_by_sid(sid) - local t1, n1 = _uci:get("wireless", sid) - if t1 == "wifi-iface" and n1 ~= nil then - local radioname, radiostate - for radioname, radiostate in pairs(_wifi_state()) do - if type(radiostate) == "table" and - type(radiostate.interfaces) == "table" - then - local netidx, netstate - for netidx, netstate in ipairs(radiostate.interfaces) do - if type(netstate) == "table" and - type(netstate.section) == "string" - then - local t2, n2 = _uci:get("wireless", netstate.section) - if t1 == t2 and n1 == n2 then - return radioname, radiostate, netstate - end - end - end - end - end - end -end - -local function _wifi_state_by_ifname(ifname) - if type(ifname) == "string" then - local radioname, radiostate - for radioname, radiostate in pairs(_wifi_state()) do - if type(radiostate) == "table" and - type(radiostate.interfaces) == "table" - then - local netidx, netstate - for netidx, netstate in ipairs(radiostate.interfaces) do - if type(netstate) == "table" and - type(netstate.ifname) == "string" and - netstate.ifname == ifname - then - return radioname, radiostate, netstate - end - end - end - end - end -end - -function _wifi_iface(x) - local _, p - for _, p in ipairs(IFACE_PATTERNS_WIRELESS) do - if x:match(p) then - return true - end - end - return false -end - -local function _wifi_iwinfo_by_ifname(ifname, force_phy_only) - local stat, iwinfo = pcall(require, "iwinfo") - local iwtype = stat and type(ifname) == "string" and iwinfo.type(ifname) - local is_nonphy_op = { - bitrate = true, - quality = true, - quality_max = true, - mode = true, - ssid = true, - bssid = true, - assoclist = true, - encryption = true - } - - if iwtype then - -- if we got a type but no real netdev, we're referring to a phy - local phy_only = force_phy_only or (ipc.link(ifname).type ~= 1) - - return setmetatable({}, { - __index = function(t, k) - if k == "ifname" then - return ifname - elseif phy_only and is_nonphy_op[k] then - return nil - elseif iwinfo[iwtype][k] then - return iwinfo[iwtype][k](ifname) - end - end - }) - end -end - -local function _wifi_sid_by_netid(netid) - if type(netid) == "string" then - local radioname, netidx = netid:match("^(%w+)%.network(%d+)$") - if radioname and netidx then - local i, n = 0, nil - - netidx = tonumber(netidx) - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device == radioname then - i = i + 1 - if i == netidx then - n = s[".name"] - return false - end - end - end) - - return n - end - end -end - -function _wifi_sid_by_ifname(ifn) - local sid = _wifi_sid_by_netid(ifn) - if sid then - return sid - end - - local _, _, netstate = _wifi_state_by_ifname(ifn) - if netstate and type(netstate.section) == "string" then - return netstate.section - end -end - -local function _wifi_netid_by_sid(sid) - local t, n = _uci:get("wireless", sid) - if t == "wifi-iface" and n ~= nil then - local radioname = _uci:get("wireless", n, "device") - if type(radioname) == "string" then - local i, netid = 0, nil - - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device == radioname then - i = i + 1 - if s[".name"] == n then - netid = "%s.network%d" %{ radioname, i } - return false - end - end - end) - - return netid, radioname - end - end -end - -local function _wifi_netid_by_netname(name) - local netid = nil - - _uci:foreach("wireless", "wifi-iface", - function(s) - local net - for net in utl.imatch(s.network) do - if net == name then - netid = _wifi_netid_by_sid(s[".name"]) - return false - end - end - end) - - return netid -end - -function _iface_virtual(x) - local _, p - for _, p in ipairs(IFACE_PATTERNS_VIRTUAL) do - if x:match(p) then - return true - end - end - return false -end - -function _iface_ignore(x) - local _, p - for _, p in ipairs(IFACE_PATTERNS_IGNORE) do - if x:match(p) then - return true - end - end - return false -end - -function init(cursor) - _uci = cursor or _uci or uci.cursor() - - _interfaces = { } - _bridge = { } - _switch = { } - _tunnel = { } - _swtopo = { } - - _ubusnetcache = { } - _ubusdevcache = { } - _ubuswificache = { } - - -- read interface information - local n, i - for n, i in ipairs(nxo.getifaddrs()) do - local name = i.name:match("[^:]+") - - if _iface_virtual(name) then - _tunnel[name] = true - end - - if _tunnel[name] or not (_iface_ignore(name) or _iface_virtual(name)) then - _interfaces[name] = _interfaces[name] or { - idx = i.ifindex or n, - name = name, - rawname = i.name, - flags = { }, - ipaddrs = { }, - ip6addrs = { } - } - - if i.family == "packet" then - _interfaces[name].flags = i.flags - _interfaces[name].stats = i.data - _interfaces[name].macaddr = ipc.checkmac(i.addr) - elseif i.family == "inet" then - _interfaces[name].ipaddrs[#_interfaces[name].ipaddrs+1] = ipc.IPv4(i.addr, i.netmask) - elseif i.family == "inet6" then - _interfaces[name].ip6addrs[#_interfaces[name].ip6addrs+1] = ipc.IPv6(i.addr, i.netmask) - end - end - end - - -- read bridge informaton - local b, l - for l in utl.execi("brctl show") do - if not l:match("STP") then - local r = utl.split(l, "%s+", nil, true) - if #r == 4 then - b = { - name = r[1], - id = r[2], - stp = r[3] == "yes", - ifnames = { _interfaces[r[4]] } - } - if b.ifnames[1] then - b.ifnames[1].bridge = b - end - _bridge[r[1]] = b - elseif b then - b.ifnames[#b.ifnames+1] = _interfaces[r[2]] - b.ifnames[#b.ifnames].bridge = b - end - end - end - - -- read switch topology - local boardinfo = jsc.parse(nfs.readfile("/etc/board.json") or "") - if type(boardinfo) == "table" and type(boardinfo.switch) == "table" then - local switch, layout - for switch, layout in pairs(boardinfo.switch) do - if type(layout) == "table" and type(layout.ports) == "table" then - local _, port - local ports = { } - local nports = { } - local netdevs = { } - - for _, port in ipairs(layout.ports) do - if type(port) == "table" and - type(port.num) == "number" and - (type(port.role) == "string" or - type(port.device) == "string") - then - local spec = { - num = port.num, - role = port.role or "cpu", - index = port.index or port.num - } - - if port.device then - spec.device = port.device - spec.tagged = port.need_tag - netdevs[tostring(port.num)] = port.device - end - - ports[#ports+1] = spec - - if port.role then - nports[port.role] = (nports[port.role] or 0) + 1 - end - end - end - - table.sort(ports, function(a, b) - if a.role ~= b.role then - return (a.role < b.role) - end - - return (a.index < b.index) - end) - - local pnum, role - for _, port in ipairs(ports) do - if port.role ~= role then - role = port.role - pnum = 1 - end - - if role == "cpu" then - port.label = "CPU (%s)" % port.device - elseif nports[role] > 1 then - port.label = "%s %d" %{ role:upper(), pnum } - pnum = pnum + 1 - else - port.label = role:upper() - end - - port.role = nil - port.index = nil - end - - _swtopo[switch] = { - ports = ports, - netdevs = netdevs - } - end - end - end - - return _M -end - -function save(self, ...) - _uci:save(...) - _uci:load(...) -end - -function commit(self, ...) - _uci:commit(...) - _uci:load(...) -end - -function ifnameof(self, x) - if utl.instanceof(x, interface) then - return x:name() - elseif utl.instanceof(x, protocol) then - return x:ifname() - elseif type(x) == "string" then - return x:match("^[^:]+") - end -end - -function get_protocol(self, protoname, netname) - local v = _protocols[protoname] - if v then - return v(netname or "__dummy__") - end -end - -function get_protocols(self) - local p = { } - local _, v - for _, v in ipairs(_protocols) do - p[#p+1] = v("__dummy__") - end - return p -end - -function register_protocol(self, protoname) - local proto = utl.class(protocol) - - function proto.__init__(self, name) - self.sid = name - end - - function proto.proto(self) - return protoname - end - - _protocols[#_protocols+1] = proto - _protocols[protoname] = proto - - return proto -end - -function register_pattern_virtual(self, pat) - IFACE_PATTERNS_VIRTUAL[#IFACE_PATTERNS_VIRTUAL+1] = pat -end - -function register_error_code(self, code, message) - if type(code) == "string" and - type(message) == "string" and - not IFACE_ERRORS[code] - then - IFACE_ERRORS[code] = message - return true - end - - return false -end - -function has_ipv6(self) - return nfs.access("/proc/net/ipv6_route") -end - -function add_network(self, n, options) - local oldnet = self:get_network(n) - if n and #n > 0 and n:match("^[a-zA-Z0-9_]+$") and not oldnet then - if _uci:section("network", "interface", n, options) then - return network(n) - end - elseif oldnet and oldnet:is_empty() then - if options then - local k, v - for k, v in pairs(options) do - oldnet:set(k, v) - end - end - return oldnet - end -end - -function get_network(self, n) - if n and _uci:get("network", n) == "interface" then - return network(n) - elseif n then - local stat = utl.ubus("network.interface", "status", { interface = n }) - if type(stat) == "table" and - type(stat.proto) == "string" - then - return network(n, stat.proto) - end - end -end - -function get_networks(self) - local nets = { } - local nls = { } - - _uci:foreach("network", "interface", - function(s) - nls[s['.name']] = network(s['.name']) - end) - - local dump = utl.ubus("network.interface", "dump", { }) - if type(dump) == "table" and - type(dump.interface) == "table" - then - local _, net - for _, net in ipairs(dump.interface) do - if type(net) == "table" and - type(net.proto) == "string" and - type(net.interface) == "string" - then - if not nls[net.interface] then - nls[net.interface] = network(net.interface, net.proto) - end - end - end - end - - local n - for n in utl.kspairs(nls) do - nets[#nets+1] = nls[n] - end - - return nets -end - -function del_network(self, n) - local r = _uci:delete("network", n) - if r then - _uci:delete_all("luci", "ifstate", - function(s) return (s.interface == n) end) - - _uci:delete_all("network", "alias", - function(s) return (s.interface == n) end) - - _uci:delete_all("network", "route", - function(s) return (s.interface == n) end) - - _uci:delete_all("network", "route6", - function(s) return (s.interface == n) end) - - _uci:foreach("wireless", "wifi-iface", - function(s) - local net - local rest = { } - for net in utl.imatch(s.network) do - if net ~= n then - rest[#rest+1] = net - end - end - if #rest > 0 then - _uci:set("wireless", s['.name'], "network", - table.concat(rest, " ")) - else - _uci:delete("wireless", s['.name'], "network") - end - end) - end - return r -end - -function rename_network(self, old, new) - local r - if new and #new > 0 and new:match("^[a-zA-Z0-9_]+$") and not self:get_network(new) then - r = _uci:section("network", "interface", new, _uci:get_all("network", old)) - - if r then - _uci:foreach("network", "alias", - function(s) - if s.interface == old then - _uci:set("network", s['.name'], "interface", new) - end - end) - - _uci:foreach("network", "route", - function(s) - if s.interface == old then - _uci:set("network", s['.name'], "interface", new) - end - end) - - _uci:foreach("network", "route6", - function(s) - if s.interface == old then - _uci:set("network", s['.name'], "interface", new) - end - end) - - _uci:foreach("wireless", "wifi-iface", - function(s) - local net - local list = { } - for net in utl.imatch(s.network) do - if net == old then - list[#list+1] = new - else - list[#list+1] = net - end - end - if #list > 0 then - _uci:set("wireless", s['.name'], "network", - table.concat(list, " ")) - end - end) - - _uci:delete("network", old) - end - end - return r or false -end - -function get_interface(self, i) - if _interfaces[i] or _wifi_iface(i) then - return interface(i) - else - local netid = _wifi_netid_by_sid(i) - return netid and interface(netid) - end -end - -function get_interfaces(self) - local iface - local ifaces = { } - local nfs = { } - - -- find normal interfaces - _uci:foreach("network", "interface", - function(s) - for iface in utl.imatch(s.ifname) do - if not _iface_ignore(iface) and not _iface_virtual(iface) and not _wifi_iface(iface) then - nfs[iface] = interface(iface) - end - end - end) - - for iface in utl.kspairs(_interfaces) do - if not (nfs[iface] or _iface_ignore(iface) or _iface_virtual(iface) or _wifi_iface(iface)) then - nfs[iface] = interface(iface) - end - end - - -- find vlan interfaces - _uci:foreach("network", "switch_vlan", - function(s) - if type(s.ports) ~= "string" or - type(s.device) ~= "string" or - type(_swtopo[s.device]) ~= "table" - then - return - end - - local pnum, ptag - for pnum, ptag in s.ports:gmatch("(%d+)([tu]?)") do - local netdev = _swtopo[s.device].netdevs[pnum] - if netdev then - if not nfs[netdev] then - nfs[netdev] = interface(netdev) - end - _switch[netdev] = true - - if ptag == "t" then - local vid = tonumber(s.vid or s.vlan) - if vid ~= nil and vid >= 0 and vid <= 4095 then - local iface = "%s.%d" %{ netdev, vid } - if not nfs[iface] then - nfs[iface] = interface(iface) - end - _switch[iface] = true - end - end - end - end - end) - - for iface in utl.kspairs(nfs) do - ifaces[#ifaces+1] = nfs[iface] - end - - -- find wifi interfaces - local num = { } - local wfs = { } - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device then - num[s.device] = num[s.device] and num[s.device] + 1 or 1 - local i = "%s.network%d" %{ s.device, num[s.device] } - wfs[i] = interface(i) - end - end) - - for iface in utl.kspairs(wfs) do - ifaces[#ifaces+1] = wfs[iface] - end - - return ifaces -end - -function ignore_interface(self, x) - return _iface_ignore(x) -end - -function get_wifidev(self, dev) - if _uci:get("wireless", dev) == "wifi-device" then - return wifidev(dev) - end -end - -function get_wifidevs(self) - local devs = { } - local wfd = { } - - _uci:foreach("wireless", "wifi-device", - function(s) wfd[#wfd+1] = s['.name'] end) - - local dev - for _, dev in utl.vspairs(wfd) do - devs[#devs+1] = wifidev(dev) - end - - return devs -end - -function get_wifinet(self, net) - local wnet = _wifi_sid_by_ifname(net) - if wnet then - return wifinet(wnet) - end -end - -function add_wifinet(self, net, options) - if type(options) == "table" and options.device and - _uci:get("wireless", options.device) == "wifi-device" - then - local wnet = _uci:section("wireless", "wifi-iface", nil, options) - return wifinet(wnet) - end -end - -function del_wifinet(self, net) - local wnet = _wifi_sid_by_ifname(net) - if wnet then - _uci:delete("wireless", wnet) - return true - end - return false -end - -function get_status_by_route(self, addr, mask) - local _, object - for _, object in ipairs(utl.ubus()) do - local net = object:match("^network%.interface%.(.+)") - if net then - local s = utl.ubus(object, "status", {}) - if s and s.route then - local rt - for _, rt in ipairs(s.route) do - if not rt.table and rt.target == addr and rt.mask == mask then - return net, s - end - end - end - end - end -end - -function get_status_by_address(self, addr) - local _, object - for _, object in ipairs(utl.ubus()) do - local net = object:match("^network%.interface%.(.+)") - if net then - local s = utl.ubus(object, "status", {}) - if s and s['ipv4-address'] then - local a - for _, a in ipairs(s['ipv4-address']) do - if a.address == addr then - return net, s - end - end - end - if s and s['ipv6-address'] then - local a - for _, a in ipairs(s['ipv6-address']) do - if a.address == addr then - return net, s - end - end - end - end - end -end - -function get_wannet(self) - local net, stat = self:get_status_by_route("0.0.0.0", 0) - return net and network(net, stat.proto) -end - -function get_wandev(self) - local _, stat = self:get_status_by_route("0.0.0.0", 0) - return stat and interface(stat.l3_device or stat.device) -end - -function get_wan6net(self) - local net, stat = self:get_status_by_route("::", 0) - return net and network(net, stat.proto) -end - -function get_wan6dev(self) - local _, stat = self:get_status_by_route("::", 0) - return stat and interface(stat.l3_device or stat.device) -end - -function get_switch_topologies(self) - return _swtopo -end - - -function network(name, proto) - if name then - local p = proto or _uci:get("network", name, "proto") - local c = p and _protocols[p] or protocol - return c(name) - end -end - -function protocol.__init__(self, name) - self.sid = name -end - -function protocol._get(self, opt) - local v = _uci:get("network", self.sid, opt) - if type(v) == "table" then - return table.concat(v, " ") - end - return v or "" -end - -function protocol._ubus(self, field) - if not _ubusnetcache[self.sid] then - _ubusnetcache[self.sid] = utl.ubus("network.interface.%s" % self.sid, - "status", { }) - end - if _ubusnetcache[self.sid] and field then - return _ubusnetcache[self.sid][field] - end - return _ubusnetcache[self.sid] -end - -function protocol.get(self, opt) - return _get("network", self.sid, opt) -end - -function protocol.set(self, opt, val) - return _set("network", self.sid, opt, val) -end - -function protocol.ifname(self) - local ifname - if self:is_floating() then - ifname = self:_ubus("l3_device") - else - ifname = self:_ubus("device") - end - if not ifname then - ifname = _wifi_netid_by_netname(self.sid) - end - return ifname -end - -function protocol.proto(self) - return "none" -end - -function protocol.get_i18n(self) - local p = self:proto() - if p == "none" then - return lng.translate("Unmanaged") - elseif p == "static" then - return lng.translate("Static address") - elseif p == "dhcp" then - return lng.translate("DHCP client") - else - return lng.translate("Unknown") - end -end - -function protocol.type(self) - return self:_get("type") -end - -function protocol.name(self) - return self.sid -end - -function protocol.uptime(self) - return self:_ubus("uptime") or 0 -end - -function protocol.expires(self) - local u = self:_ubus("uptime") - local d = self:_ubus("data") - - if type(u) == "number" and type(d) == "table" and - type(d.leasetime) == "number" - then - local r = (d.leasetime - (u % d.leasetime)) - return r > 0 and r or 0 - end - - return -1 -end - -function protocol.metric(self) - return self:_ubus("metric") or 0 -end - -function protocol.zonename(self) - local d = self:_ubus("data") - - if type(d) == "table" and type(d.zone) == "string" then - return d.zone - end - - return nil -end - -function protocol.ipaddr(self) - local addrs = self:_ubus("ipv4-address") - return addrs and #addrs > 0 and addrs[1].address -end - -function protocol.ipaddrs(self) - local addrs = self:_ubus("ipv4-address") - local rv = { } - - if type(addrs) == "table" then - local n, addr - for n, addr in ipairs(addrs) do - rv[#rv+1] = "%s/%d" %{ addr.address, addr.mask } - end - end - - return rv -end - -function protocol.netmask(self) - local addrs = self:_ubus("ipv4-address") - return addrs and #addrs > 0 and - ipc.IPv4("0.0.0.0/%d" % addrs[1].mask):mask():string() -end - -function protocol.gwaddr(self) - local _, route - for _, route in ipairs(self:_ubus("route") or { }) do - if route.target == "0.0.0.0" and route.mask == 0 then - return route.nexthop - end - end -end - -function protocol.dnsaddrs(self) - local dns = { } - local _, addr - for _, addr in ipairs(self:_ubus("dns-server") or { }) do - if not addr:match(":") then - dns[#dns+1] = addr - end - end - return dns -end - -function protocol.ip6addr(self) - local addrs = self:_ubus("ipv6-address") - if addrs and #addrs > 0 then - return "%s/%d" %{ addrs[1].address, addrs[1].mask } - else - addrs = self:_ubus("ipv6-prefix-assignment") - if addrs and #addrs > 0 then - return "%s/%d" %{ addrs[1].address, addrs[1].mask } - end - end -end - -function protocol.ip6addrs(self) - local addrs = self:_ubus("ipv6-address") - local rv = { } - local n, addr - - if type(addrs) == "table" then - for n, addr in ipairs(addrs) do - rv[#rv+1] = "%s/%d" %{ addr.address, addr.mask } - end - end - - addrs = self:_ubus("ipv6-prefix-assignment") - - if type(addrs) == "table" then - for n, addr in ipairs(addrs) do - if type(addr["local-address"]) == "table" and - type(addr["local-address"].mask) == "number" and - type(addr["local-address"].address) == "string" - then - rv[#rv+1] = "%s/%d" %{ - addr["local-address"].address, - addr["local-address"].mask - } - end - end - end - - return rv -end - -function protocol.gw6addr(self) - local _, route - for _, route in ipairs(self:_ubus("route") or { }) do - if route.target == "::" and route.mask == 0 then - return ipc.IPv6(route.nexthop):string() - end - end -end - -function protocol.dns6addrs(self) - local dns = { } - local _, addr - for _, addr in ipairs(self:_ubus("dns-server") or { }) do - if addr:match(":") then - dns[#dns+1] = addr - end - end - return dns -end - -function protocol.ip6prefix(self) - local prefix = self:_ubus("ipv6-prefix") - if prefix and #prefix > 0 then - return "%s/%d" %{ prefix[1].address, prefix[1].mask } - end -end - -function protocol.errors(self) - local _, err, rv - local errors = self:_ubus("errors") - if type(errors) == "table" then - for _, err in ipairs(errors) do - if type(err) == "table" and - type(err.code) == "string" - then - rv = rv or { } - rv[#rv+1] = IFACE_ERRORS[err.code] or lng.translatef("Unknown error (%s)", err.code) - end - end - end - return rv -end - -function protocol.is_bridge(self) - return (not self:is_virtual() and self:type() == "bridge") -end - -function protocol.opkg_package(self) - return nil -end - -function protocol.is_installed(self) - return true -end - -function protocol.is_virtual(self) - return false -end - -function protocol.is_floating(self) - return false -end - -function protocol.is_dynamic(self) - return (self:_ubus("dynamic") == true) -end - -function protocol.is_alias(self) - local ifn, parent = nil, nil - - for ifn in utl.imatch(_uci:get("network", self.sid, "ifname")) do - if #ifn > 1 and ifn:byte(1) == 64 then - parent = ifn:sub(2) - elseif parent ~= nil then - parent = nil - end - end - - return parent -end - -function protocol.is_empty(self) - if self:is_floating() then - return false - else - local empty = true - - if (self:_get("ifname") or ""):match("%S+") then - empty = false - end - - if empty and _wifi_netid_by_netname(self.sid) then - empty = false - end - - return empty - end -end - -function protocol.is_up(self) - return (self:_ubus("up") == true) -end - -function protocol.add_interface(self, ifname) - ifname = _M:ifnameof(ifname) - if ifname and not self:is_floating() then - -- if its a wifi interface, change its network option - local wif = _wifi_sid_by_ifname(ifname) - if wif then - _append("wireless", wif, "network", self.sid) - - -- add iface to our iface list - else - _append("network", self.sid, "ifname", ifname) - end - end -end - -function protocol.del_interface(self, ifname) - ifname = _M:ifnameof(ifname) - if ifname and not self:is_floating() then - -- if its a wireless interface, clear its network option - local wif = _wifi_sid_by_ifname(ifname) - if wif then _filter("wireless", wif, "network", self.sid) end - - -- remove the interface - _filter("network", self.sid, "ifname", ifname) - end -end - -function protocol.get_interface(self) - if self:is_virtual() then - _tunnel[self:proto() .. "-" .. self.sid] = true - return interface(self:proto() .. "-" .. self.sid, self) - elseif self:is_bridge() then - _bridge["br-" .. self.sid] = true - return interface("br-" .. self.sid, self) - else - local ifn = self:_ubus("l3_device") or self:_ubus("device") - if ifn then - return interface(ifn, self) - end - - for ifn in utl.imatch(_uci:get("network", self.sid, "ifname")) do - ifn = ifn:match("^[^:/]+") - return ifn and interface(ifn, self) - end - - ifn = _wifi_netid_by_netname(self.sid) - return ifn and interface(ifn, self) - end -end - -function protocol.get_interfaces(self) - if self:is_bridge() or (self:is_virtual() and not self:is_floating()) then - local ifaces = { } - - local ifn - local nfs = { } - for ifn in utl.imatch(self:get("ifname")) do - ifn = ifn:match("^[^:/]+") - nfs[ifn] = interface(ifn, self) - end - - for ifn in utl.kspairs(nfs) do - ifaces[#ifaces+1] = nfs[ifn] - end - - local wfs = { } - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device then - local net - for net in utl.imatch(s.network) do - if net == self.sid then - ifn = _wifi_netid_by_sid(s[".name"]) - if ifn then - wfs[ifn] = interface(ifn, self) - end - end - end - end - end) - - for ifn in utl.kspairs(wfs) do - ifaces[#ifaces+1] = wfs[ifn] - end - - return ifaces - end -end - -function protocol.contains_interface(self, ifname) - ifname = _M:ifnameof(ifname) - if not ifname then - return false - elseif self:is_virtual() and self:proto() .. "-" .. self.sid == ifname then - return true - elseif self:is_bridge() and "br-" .. self.sid == ifname then - return true - else - local ifn - for ifn in utl.imatch(self:get("ifname")) do - ifn = ifn:match("[^:]+") - if ifn == ifname then - return true - end - end - - local wif = _wifi_sid_by_ifname(ifname) - if wif then - local n - for n in utl.imatch(_uci:get("wireless", wif, "network")) do - if n == self.sid then - return true - end - end - end - end - - return false -end - -function protocol.adminlink(self) - local stat, dsp = pcall(require, "luci.dispatcher") - return stat and dsp.build_url("admin", "network", "network", self.sid) -end - - -interface = utl.class() - -function interface.__init__(self, ifname, network) - local wif = _wifi_sid_by_ifname(ifname) - if wif then - self.wif = wifinet(wif) - self.ifname = self.wif:ifname() - end - - self.ifname = self.ifname or ifname - self.dev = _interfaces[self.ifname] - self.network = network -end - -function interface._ubus(self, field) - if not _ubusdevcache[self.ifname] then - _ubusdevcache[self.ifname] = utl.ubus("network.device", "status", - { name = self.ifname }) - end - if _ubusdevcache[self.ifname] and field then - return _ubusdevcache[self.ifname][field] - end - return _ubusdevcache[self.ifname] -end - -function interface.name(self) - return self.wif and self.wif:ifname() or self.ifname -end - -function interface.mac(self) - return ipc.checkmac(self:_ubus("macaddr")) -end - -function interface.ipaddrs(self) - return self.dev and self.dev.ipaddrs or { } -end - -function interface.ip6addrs(self) - return self.dev and self.dev.ip6addrs or { } -end - -function interface.type(self) - if self.ifname and self.ifname:byte(1) == 64 then - return "alias" - elseif self.wif or _wifi_iface(self.ifname) then - return "wifi" - elseif _bridge[self.ifname] then - return "bridge" - elseif _tunnel[self.ifname] then - return "tunnel" - elseif self.ifname:match("%.") then - return "vlan" - elseif _switch[self.ifname] then - return "switch" - else - return "ethernet" - end -end - -function interface.shortname(self) - if self.wif then - return self.wif:shortname() - else - return self.ifname - end -end - -function interface.get_i18n(self) - if self.wif then - return "%s: %s %q" %{ - lng.translate("Wireless Network"), - self.wif:active_mode(), - self.wif:active_ssid() or self.wif:active_bssid() or self.wif:id() or "?" - } - else - return "%s: %q" %{ self:get_type_i18n(), self:name() } - end -end - -function interface.get_type_i18n(self) - local x = self:type() - if x == "alias" then - return lng.translate("Alias Interface") - elseif x == "wifi" then - return lng.translate("Wireless Adapter") - elseif x == "bridge" then - return lng.translate("Bridge") - elseif x == "switch" then - return lng.translate("Ethernet Switch") - elseif x == "vlan" then - if _switch[self.ifname] then - return lng.translate("Switch VLAN") - else - return lng.translate("Software VLAN") - end - elseif x == "tunnel" then - return lng.translate("Tunnel Interface") - else - return lng.translate("Ethernet Adapter") - end -end - -function interface.adminlink(self) - if self.wif then - return self.wif:adminlink() - end -end - -function interface.ports(self) - local members = self:_ubus("bridge-members") - if members then - local _, iface - local ifaces = { } - for _, iface in ipairs(members) do - ifaces[#ifaces+1] = interface(iface) - end - end -end - -function interface.bridge_id(self) - if self.br then - return self.br.id - else - return nil - end -end - -function interface.bridge_stp(self) - if self.br then - return self.br.stp - else - return false - end -end - -function interface.is_up(self) - local up = self:_ubus("up") - if up == nil then - up = (self:type() == "alias") - end - return up or false -end - -function interface.is_bridge(self) - return (self:type() == "bridge") -end - -function interface.is_bridgeport(self) - return self.dev and self.dev.bridge and true or false -end - -function interface.tx_bytes(self) - local stat = self:_ubus("statistics") - return stat and stat.tx_bytes or 0 -end - -function interface.rx_bytes(self) - local stat = self:_ubus("statistics") - return stat and stat.rx_bytes or 0 -end - -function interface.tx_packets(self) - local stat = self:_ubus("statistics") - return stat and stat.tx_packets or 0 -end - -function interface.rx_packets(self) - local stat = self:_ubus("statistics") - return stat and stat.rx_packets or 0 -end - -function interface.get_network(self) - return self:get_networks()[1] -end - -function interface.get_networks(self) - if not self.networks then - local nets = { } - local _, net - for _, net in ipairs(_M:get_networks()) do - if net:contains_interface(self.ifname) or - net:ifname() == self.ifname - then - nets[#nets+1] = net - end - end - table.sort(nets, function(a, b) return a.sid < b.sid end) - self.networks = nets - return nets - else - return self.networks - end -end - -function interface.get_wifinet(self) - return self.wif -end - - -wifidev = utl.class() - -function wifidev.__init__(self, name) - local t, n = _uci:get("wireless", name) - if t == "wifi-device" and n ~= nil then - self.sid = n - self.iwinfo = _wifi_iwinfo_by_ifname(self.sid, true) - end - self.sid = self.sid or name - self.iwinfo = self.iwinfo or { ifname = self.sid } -end - -function wifidev.get(self, opt) - return _get("wireless", self.sid, opt) -end - -function wifidev.set(self, opt, val) - return _set("wireless", self.sid, opt, val) -end - -function wifidev.name(self) - return self.sid -end - -function wifidev.hwmodes(self) - local l = self.iwinfo.hwmodelist - if l and next(l) then - return l - else - return { b = true, g = true } - end -end - -function wifidev.get_i18n(self) - local t = self.iwinfo.hardware_name or "Generic" - if self.iwinfo.type == "wl" then - t = "Broadcom" - end - - local m = "" - local l = self:hwmodes() - if l.a then m = m .. "a" end - if l.b then m = m .. "b" end - if l.g then m = m .. "g" end - if l.n then m = m .. "n" end - if l.ac then m = "ac" end - - return "%s 802.11%s Wireless Controller (%s)" %{ t, m, self:name() } -end - -function wifidev.is_up(self) - if _ubuswificache[self.sid] then - return (_ubuswificache[self.sid].up == true) - end - - return false -end - -function wifidev.get_wifinet(self, net) - if _uci:get("wireless", net) == "wifi-iface" then - return wifinet(net) - else - local wnet = _wifi_sid_by_ifname(net) - if wnet then - return wifinet(wnet) - end - end -end - -function wifidev.get_wifinets(self) - local nets = { } - - _uci:foreach("wireless", "wifi-iface", - function(s) - if s.device == self.sid then - nets[#nets+1] = wifinet(s['.name']) - end - end) - - return nets -end - -function wifidev.add_wifinet(self, options) - options = options or { } - options.device = self.sid - - local wnet = _uci:section("wireless", "wifi-iface", nil, options) - if wnet then - return wifinet(wnet, options) - end -end - -function wifidev.del_wifinet(self, net) - if utl.instanceof(net, wifinet) then - net = net.sid - elseif _uci:get("wireless", net) ~= "wifi-iface" then - net = _wifi_sid_by_ifname(net) - end - - if net and _uci:get("wireless", net, "device") == self.sid then - _uci:delete("wireless", net) - return true - end - - return false -end - - -wifinet = utl.class() - -function wifinet.__init__(self, name, data) - local sid, netid, radioname, radiostate, netstate - - -- lookup state by radio#.network# notation - sid = _wifi_sid_by_netid(name) - if sid then - netid = name - radioname, radiostate, netstate = _wifi_state_by_sid(sid) - else - -- lookup state by ifname (e.g. wlan0) - radioname, radiostate, netstate = _wifi_state_by_ifname(name) - if radioname and radiostate and netstate then - sid = netstate.section - netid = _wifi_netid_by_sid(sid) - else - -- lookup state by uci section id (e.g. cfg053579) - radioname, radiostate, netstate = _wifi_state_by_sid(name) - if radioname and radiostate and netstate then - sid = name - netid = _wifi_netid_by_sid(sid) - else - -- no state available, try to resolve from uci - netid, radioname = _wifi_netid_by_sid(name) - if netid and radioname then - sid = name - end - end - end - end - - local iwinfo = - (netstate and _wifi_iwinfo_by_ifname(netstate.ifname)) or - (radioname and _wifi_iwinfo_by_ifname(radioname)) or - { ifname = (netid or sid or name) } - - self.sid = sid or name - self.wdev = iwinfo.ifname - self.iwinfo = iwinfo - self.netid = netid - self._ubusdata = { - radio = radioname, - dev = radiostate, - net = netstate - } -end - -function wifinet.ubus(self, ...) - local n, v = self._ubusdata - for n = 1, select('#', ...) do - if type(v) == "table" then - v = v[select(n, ...)] - else - return nil - end - end - return v -end - -function wifinet.get(self, opt) - return _get("wireless", self.sid, opt) -end - -function wifinet.set(self, opt, val) - return _set("wireless", self.sid, opt, val) -end - -function wifinet.mode(self) - return self:ubus("net", "config", "mode") or self:get("mode") or "ap" -end - -function wifinet.ssid(self) - return self:ubus("net", "config", "ssid") or self:get("ssid") -end - -function wifinet.bssid(self) - return self:ubus("net", "config", "bssid") or self:get("bssid") -end - -function wifinet.network(self) - local net, networks = nil, { } - for net in utl.imatch(self:ubus("net", "config", "network") or self:get("network")) do - networks[#networks+1] = net - end - return networks -end - -function wifinet.id(self) - return self.netid -end - -function wifinet.name(self) - return self.sid -end - -function wifinet.ifname(self) - local ifname = self:ubus("net", "ifname") or self.iwinfo.ifname - if not ifname or ifname:match("^wifi%d") or ifname:match("^radio%d") then - ifname = self.netid - end - return ifname -end - -function wifinet.get_device(self) - local dev = self:ubus("radio") or self:get("device") - return dev and wifidev(dev) or nil -end - -function wifinet.is_up(self) - local ifc = self:get_interface() - return (ifc and ifc:is_up() or false) -end - -function wifinet.active_mode(self) - local m = self.iwinfo.mode or self:ubus("net", "config", "mode") or self:get("mode") or "ap" - - if m == "ap" then m = "Master" - elseif m == "sta" then m = "Client" - elseif m == "adhoc" then m = "Ad-Hoc" - elseif m == "mesh" then m = "Mesh" - elseif m == "monitor" then m = "Monitor" - end - - return m -end - -function wifinet.active_mode_i18n(self) - return lng.translate(self:active_mode()) -end - -function wifinet.active_ssid(self) - return self.iwinfo.ssid or self:ubus("net", "config", "ssid") or self:get("ssid") -end - -function wifinet.active_bssid(self) - return self.iwinfo.bssid or self:ubus("net", "config", "bssid") or self:get("bssid") -end - -function wifinet.active_encryption(self) - local enc = self.iwinfo and self.iwinfo.encryption - return enc and enc.description or "-" -end - -function wifinet.assoclist(self) - return self.iwinfo.assoclist or { } -end - -function wifinet.frequency(self) - local freq = self.iwinfo.frequency - if freq and freq > 0 then - return "%.03f" % (freq / 1000) - end -end - -function wifinet.bitrate(self) - local rate = self.iwinfo.bitrate - if rate and rate > 0 then - return (rate / 1000) - end -end - -function wifinet.channel(self) - return self.iwinfo.channel or self:ubus("dev", "config", "channel") or - tonumber(self:get("channel")) -end - -function wifinet.signal(self) - return self.iwinfo.signal or 0 -end - -function wifinet.noise(self) - return self.iwinfo.noise or 0 -end - -function wifinet.country(self) - return self.iwinfo.country or self:ubus("dev", "config", "country") or "00" -end - -function wifinet.txpower(self) - local pwr = (self.iwinfo.txpower or 0) - return pwr + self:txpower_offset() -end - -function wifinet.txpower_offset(self) - return self.iwinfo.txpower_offset or 0 -end - -function wifinet.signal_level(self, s, n) - if self:active_bssid() ~= "00:00:00:00:00:00" then - local signal = s or self:signal() - local noise = n or self:noise() - - if signal < 0 and noise < 0 then - local snr = -1 * (noise - signal) - return math.floor(snr / 5) - else - return 0 - end - else - return -1 - end -end - -function wifinet.signal_percent(self) - local qc = self.iwinfo.quality or 0 - local qm = self.iwinfo.quality_max or 0 - - if qc > 0 and qm > 0 then - return math.floor((100 / qm) * qc) - else - return 0 - end -end - -function wifinet.shortname(self) - return "%s %q" %{ - lng.translate(self:active_mode()), - self:active_ssid() or self:active_bssid() or self:id() - } -end - -function wifinet.get_i18n(self) - return "%s: %s %q (%s)" %{ - lng.translate("Wireless Network"), - lng.translate(self:active_mode()), - self:active_ssid() or self:active_bssid() or self:id(), - self:ifname() - } -end - -function wifinet.adminlink(self) - local stat, dsp = pcall(require, "luci.dispatcher") - return dsp and dsp.build_url("admin", "network", "wireless", self.netid) -end - -function wifinet.get_network(self) - return self:get_networks()[1] -end - -function wifinet.get_networks(self) - local nets = { } - local net - for net in utl.imatch(self:ubus("net", "config", "network") or self:get("network")) do - if _uci:get("network", net) == "interface" then - nets[#nets+1] = network(net) - end - end - table.sort(nets, function(a, b) return a.sid < b.sid end) - return nets -end - -function wifinet.get_interface(self) - return interface(self:ifname()) -end - - --- setup base protocols -_M:register_protocol("static") -_M:register_protocol("dhcp") -_M:register_protocol("none") - --- load protocol extensions -local exts = nfs.dir(utl.libpath() .. "/model/network") -if exts then - local ext - for ext in exts do - if ext:match("%.lua$") then - require("luci.model.network." .. ext:gsub("%.lua$", "")) - end - end -end diff --git a/luci-base/luasrc/model/uci.lua b/luci-base/luasrc/model/uci.lua deleted file mode 100644 index b2c1e463b..000000000 --- a/luci-base/luasrc/model/uci.lua +++ /dev/null @@ -1,534 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local os = require "os" -local util = require "luci.util" -local table = require "table" - - -local setmetatable, rawget, rawset = setmetatable, rawget, rawset -local require, getmetatable, assert = require, getmetatable, assert -local error, pairs, ipairs, select = error, pairs, ipairs, select -local type, tostring, tonumber, unpack = type, tostring, tonumber, unpack - --- The typical workflow for UCI is: Get a cursor instance from the --- cursor factory, modify data (via Cursor.add, Cursor.delete, etc.), --- save the changes to the staging area via Cursor.save and finally --- Cursor.commit the data to the actual config files. --- LuCI then needs to Cursor.apply the changes so deamons etc. are --- reloaded. -module "luci.model.uci" - -local ERRSTR = { - "Invalid command", - "Invalid argument", - "Method not found", - "Entry not found", - "No data", - "Permission denied", - "Timeout", - "Not supported", - "Unknown error", - "Connection failed" -} - -local session_id = nil - -local function call(cmd, args) - if type(args) == "table" and session_id then - args.ubus_rpc_session = session_id - end - return util.ubus("uci", cmd, args) -end - - -function cursor() - return _M -end - -function cursor_state() - return _M -end - -function substate(self) - return self -end - - -function get_confdir(self) - return "/etc/config" -end - -function get_savedir(self) - return "/tmp/.uci" -end - -function get_session_id(self) - return session_id -end - -function set_confdir(self, directory) - return false -end - -function set_savedir(self, directory) - return false -end - -function set_session_id(self, id) - session_id = id - return true -end - - -function load(self, config) - return true -end - -function save(self, config) - return true -end - -function unload(self, config) - return true -end - - -function changes(self, config) - local rv = call("changes", { config = config }) - local res = {} - - if type(rv) == "table" and type(rv.changes) == "table" then - local package, changes - for package, changes in pairs(rv.changes) do - res[package] = {} - - local _, change - for _, change in ipairs(changes) do - local operation, section, option, value = unpack(change) - if option and operation ~= "add" then - res[package][section] = res[package][section] or { } - - if operation == "list-add" then - local v = res[package][section][option] - if type(v) == "table" then - v[#v+1] = value or "" - elseif v ~= nil then - res[package][section][option] = { v, value } - else - res[package][section][option] = { value } - end - else - res[package][section][option] = value or "" - end - else - res[package][section] = res[package][section] or {} - res[package][section][".type"] = option or "" - end - end - end - end - - return res -end - - -function revert(self, config) - local _, err = call("revert", { config = config }) - return (err == nil), ERRSTR[err] -end - -function commit(self, config) - local _, err = call("commit", { config = config }) - return (err == nil), ERRSTR[err] -end - -function apply(self, rollback) - local _, err - - if rollback then - local sys = require "luci.sys" - local conf = require "luci.config" - local timeout = tonumber(conf and conf.apply and conf.apply.rollback or 30) or 0 - - _, err = call("apply", { - timeout = (timeout > 30) and timeout or 30, - rollback = true - }) - - if not err then - local now = os.time() - local token = sys.uniqueid(16) - - util.ubus("session", "set", { - ubus_rpc_session = "00000000000000000000000000000000", - values = { - rollback = { - token = token, - session = session_id, - timeout = now + timeout - } - } - }) - - return token - end - else - _, err = call("changes", {}) - - if not err then - if type(_) == "table" and type(_.changes) == "table" then - local k, v - for k, v in pairs(_.changes) do - _, err = call("commit", { config = k }) - if err then - break - end - end - end - end - - if not err then - _, err = call("apply", { rollback = false }) - end - end - - return (err == nil), ERRSTR[err] -end - -function confirm(self, token) - local is_pending, time_remaining, rollback_sid, rollback_token = self:rollback_pending() - - if is_pending then - if token ~= rollback_token then - return false, "Permission denied" - end - - local _, err = util.ubus("uci", "confirm", { - ubus_rpc_session = rollback_sid - }) - - if not err then - util.ubus("session", "set", { - ubus_rpc_session = "00000000000000000000000000000000", - values = { rollback = {} } - }) - end - - return (err == nil), ERRSTR[err] - end - - return false, "No data" -end - -function rollback(self) - local is_pending, time_remaining, rollback_sid = self:rollback_pending() - - if is_pending then - local _, err = util.ubus("uci", "rollback", { - ubus_rpc_session = rollback_sid - }) - - if not err then - util.ubus("session", "set", { - ubus_rpc_session = "00000000000000000000000000000000", - values = { rollback = {} } - }) - end - - return (err == nil), ERRSTR[err] - end - - return false, "No data" -end - -function rollback_pending(self) - local rv, err = util.ubus("session", "get", { - ubus_rpc_session = "00000000000000000000000000000000", - keys = { "rollback" } - }) - - local now = os.time() - - if type(rv) == "table" and - type(rv.values) == "table" and - type(rv.values.rollback) == "table" and - type(rv.values.rollback.token) == "string" and - type(rv.values.rollback.session) == "string" and - type(rv.values.rollback.timeout) == "number" and - rv.values.rollback.timeout > now - then - return true, - rv.values.rollback.timeout - now, - rv.values.rollback.session, - rv.values.rollback.token - end - - return false, ERRSTR[err] -end - - -function foreach(self, config, stype, callback) - if type(callback) == "function" then - local rv, err = call("get", { - config = config, - type = stype - }) - - if type(rv) == "table" and type(rv.values) == "table" then - local sections = { } - local res = false - local index = 1 - - local _, section - for _, section in pairs(rv.values) do - section[".index"] = section[".index"] or index - sections[index] = section - index = index + 1 - end - - table.sort(sections, function(a, b) - return a[".index"] < b[".index"] - end) - - for _, section in ipairs(sections) do - local continue = callback(section) - res = true - if continue == false then - break - end - end - return res - else - return false, ERRSTR[err] or "No data" - end - else - return false, "Invalid argument" - end -end - -local function _get(self, operation, config, section, option) - if section == nil then - return nil - elseif type(option) == "string" and option:byte(1) ~= 46 then - local rv, err = call(operation, { - config = config, - section = section, - option = option - }) - - if type(rv) == "table" then - return rv.value or nil - elseif err then - return false, ERRSTR[err] - else - return nil - end - elseif option == nil then - local values = self:get_all(config, section) - if values then - return values[".type"], values[".name"] - else - return nil - end - else - return false, "Invalid argument" - end -end - -function get(self, ...) - return _get(self, "get", ...) -end - -function get_state(self, ...) - return _get(self, "state", ...) -end - -function get_all(self, config, section) - local rv, err = call("get", { - config = config, - section = section - }) - - if type(rv) == "table" and type(rv.values) == "table" then - return rv.values - elseif err then - return false, ERRSTR[err] - else - return nil - end -end - -function get_bool(self, ...) - local val = self:get(...) - return (val == "1" or val == "true" or val == "yes" or val == "on") -end - -function get_first(self, config, stype, option, default) - local rv = default - - self:foreach(config, stype, function(s) - local val = not option and s[".name"] or s[option] - - if type(default) == "number" then - val = tonumber(val) - elseif type(default) == "boolean" then - val = (val == "1" or val == "true" or - val == "yes" or val == "on") - end - - if val ~= nil then - rv = val - return false - end - end) - - return rv -end - -function get_list(self, config, section, option) - if config and section and option then - local val = self:get(config, section, option) - return (type(val) == "table" and val or { val }) - end - return { } -end - - -function section(self, config, stype, name, values) - local rv, err = call("add", { - config = config, - type = stype, - name = name, - values = values - }) - - if type(rv) == "table" then - return rv.section - elseif err then - return false, ERRSTR[err] - else - return nil - end -end - - -function add(self, config, stype) - return self:section(config, stype) -end - -function set(self, config, section, option, ...) - if select('#', ...) == 0 then - local sname, err = self:section(config, option, section) - return (not not sname), err - else - local _, err = call("set", { - config = config, - section = section, - values = { [option] = select(1, ...) } - }) - return (err == nil), ERRSTR[err] - end -end - -function set_list(self, config, section, option, value) - if section == nil or option == nil then - return false - elseif value == nil or (type(value) == "table" and #value == 0) then - return self:delete(config, section, option) - elseif type(value) == "table" then - return self:set(config, section, option, value) - else - return self:set(config, section, option, { value }) - end -end - -function tset(self, config, section, values) - local _, err = call("set", { - config = config, - section = section, - values = values - }) - return (err == nil), ERRSTR[err] -end - -function reorder(self, config, section, index) - local sections - - if type(section) == "string" and type(index) == "number" then - local pos = 0 - - sections = { } - - self:foreach(config, nil, function(s) - if pos == index then - pos = pos + 1 - end - - if s[".name"] ~= section then - pos = pos + 1 - sections[pos] = s[".name"] - else - sections[index + 1] = section - end - end) - elseif type(section) == "table" then - sections = section - else - return false, "Invalid argument" - end - - local _, err = call("order", { - config = config, - sections = sections - }) - - return (err == nil), ERRSTR[err] -end - - -function delete(self, config, section, option) - local _, err = call("delete", { - config = config, - section = section, - option = option - }) - return (err == nil), ERRSTR[err] -end - -function delete_all(self, config, stype, comparator) - local _, err - if type(comparator) == "table" then - _, err = call("delete", { - config = config, - type = stype, - match = comparator - }) - elseif type(comparator) == "function" then - local rv = call("get", { - config = config, - type = stype - }) - - if type(rv) == "table" and type(rv.values) == "table" then - local sname, section - for sname, section in pairs(rv.values) do - if comparator(section) then - _, err = call("delete", { - config = config, - section = sname - }) - end - end - end - elseif comparator == nil then - _, err = call("delete", { - config = config, - type = stype - }) - else - return false, "Invalid argument" - end - - return (err == nil), ERRSTR[err] -end diff --git a/luci-base/luasrc/model/uci.luadoc b/luci-base/luasrc/model/uci.luadoc deleted file mode 100644 index d798b0033..000000000 --- a/luci-base/luasrc/model/uci.luadoc +++ /dev/null @@ -1,369 +0,0 @@ ----[[ -LuCI UCI model library. - -The typical workflow for UCI is: Get a cursor instance from the -cursor factory, modify data (via Cursor.add, Cursor.delete, etc.), -save the changes to the staging area via Cursor.save and finally -Cursor.commit the data to the actual config files. -LuCI then needs to Cursor.apply the changes so deamons etc. are -reloaded. -@cstyle instance -]] -module "luci.model.uci" - ----[[ -Create a new UCI-Cursor. - -@class function -@name cursor -@return UCI-Cursor -]] - ----[[ -Create a new Cursor initialized to the state directory. - -@class function -@name cursor_state -@return UCI cursor -]] - ----[[ -Applies UCI configuration changes. - -If the rollback parameter is set to true, the apply function will invoke the -rollback mechanism which causes the configuration to be automatically reverted -if no confirm() call occurs within a certain timeout. - -The current default timeout is 30s and can be increased using the -"luci.apply.timeout" uci configuration key. - -@class function -@name Cursor.apply -@param rollback Enable rollback mechanism -@return Boolean whether operation succeeded -]] - ----[[ -Confirms UCI apply process. - -If a previous UCI apply with rollback has been invoked using apply(true), -this function confirms the process and cancels the pending rollback timer. - -If no apply with rollback session is active, the function has no effect and -returns with a "No data" error. - -@class function -@name Cursor.confirm -@return Boolean whether operation succeeded -]] - ----[[ -Cancels UCI apply process. - -If a previous UCI apply with rollback has been invoked using apply(true), -this function cancels the process and rolls back the configuration to the -pre-apply state. - -If no apply with rollback session is active, the function has no effect and -returns with a "No data" error. - -@class function -@name Cursor.rollback -@return Boolean whether operation succeeded -]] - ----[[ -Checks whether a pending rollback is scheduled. - -If a previous UCI apply with rollback has been invoked using apply(true), -and has not been confirmed or rolled back yet, this function returns true -and the remaining time until rollback in seconds. If no rollback is pending, -the function returns false. On error, the function returns false and an -additional string describing the error. - -@class function -@name Cursor.rollback_pending -@return Boolean whether rollback is pending -@return Remaining time in seconds -]] - ----[[ -Delete all sections of a given type that match certain criteria. - -@class function -@name Cursor.delete_all -@param config UCI config -@param type UCI section type -@param comparator Function that will be called for each section and returns - a boolean whether to delete the current section (optional) -]] - ----[[ -Create a new section and initialize it with data. - -@class function -@name Cursor.section -@param config UCI config -@param type UCI section type -@param name UCI section name (optional) -@param values Table of key - value pairs to initialize the section with -@return Name of created section -]] - ----[[ -Updated the data of a section using data from a table. - -@class function -@name Cursor.tset -@param config UCI config -@param section UCI section name (optional) -@param values Table of key - value pairs to update the section with -]] - ----[[ -Get a boolean option and return it's value as true or false. - -@class function -@name Cursor.get_bool -@param config UCI config -@param section UCI section name -@param option UCI option -@return Boolean -]] - ----[[ -Get an option or list and return values as table. - -@class function -@name Cursor.get_list -@param config UCI config -@param section UCI section name -@param option UCI option -@return table. If the option was not found, you will simply get an empty - table. -]] - ----[[ -Get the given option from the first section with the given type. - -@class function -@name Cursor.get_first -@param config UCI config -@param type UCI section type -@param option UCI option (optional) -@param default Default value (optional) -@return UCI value -]] - ----[[ -Set given values as list. Setting a list option to an empty list -has the same effect as deleting the option. - -@class function -@name Cursor.set_list -@param config UCI config -@param section UCI section name -@param option UCI option -@param value Value or table. Non-table values will be set as single - item UCI list. -@return Boolean whether operation succeeded -]] - ----[[ -Create a sub-state of this cursor. - -The sub-state is tied to the parent curser, means it the parent unloads or -loads configs, the sub state will do so as well. - -@class function -@name Cursor.substate -@return UCI state cursor tied to the parent cursor -]] - ----[[ -Add an anonymous section. - -@class function -@name Cursor.add -@param config UCI config -@param type UCI section type -@return Name of created section -]] - ----[[ -Get a table of saved but uncommitted changes. - -@class function -@name Cursor.changes -@param config UCI config -@return Table of changes -@see Cursor.save -]] - ----[[ -Commit saved changes. - -@class function -@name Cursor.commit -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.revert -@see Cursor.save -]] - ----[[ -Deletes a section or an option. - -@class function -@name Cursor.delete -@param config UCI config -@param section UCI section name -@param option UCI option (optional) -@return Boolean whether operation succeeded -]] - ----[[ -Call a function for every section of a certain type. - -@class function -@name Cursor.foreach -@param config UCI config -@param type UCI section type -@param callback Function to be called -@return Boolean whether operation succeeded -]] - ----[[ -Get a section type or an option - -@class function -@name Cursor.get -@param config UCI config -@param section UCI section name -@param option UCI option (optional) -@return UCI value -]] - ----[[ -Get all sections of a config or all values of a section. - -@class function -@name Cursor.get_all -@param config UCI config -@param section UCI section name (optional) -@return Table of UCI sections or table of UCI values -]] - ----[[ -Manually load a config. - -@class function -@name Cursor.load -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.save -@see Cursor.unload -]] - ----[[ -Revert saved but uncommitted changes. - -@class function -@name Cursor.revert -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.commit -@see Cursor.save -]] - ----[[ -Saves changes made to a config to make them committable. - -@class function -@name Cursor.save -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.load -@see Cursor.unload -]] - ----[[ -Set a value or create a named section. - -When invoked with three arguments `config`, `sectionname`, `sectiontype`, -then a named section of the given type is created. - -When invoked with four arguments `config`, `sectionname`, `optionname` and -`optionvalue` then the value of the specified option is set to the given value. - -@class function -@name Cursor.set -@param config UCI config -@param section UCI section name -@param option UCI option or UCI section type -@param value UCI value or nothing if you want to create a section -@return Boolean whether operation succeeded -]] - ----[[ -Get the configuration directory. - -@class function -@name Cursor.get_confdir -@return Configuration directory -]] - ----[[ -Get the directory for uncomitted changes. - -@class function -@name Cursor.get_savedir -@return Save directory -]] - ----[[ -Get the effective session ID. - -@class function -@name Cursor.get_session_id -@return String containing the session ID -]] - ----[[ -Set the configuration directory. - -@class function -@name Cursor.set_confdir -@param directory UCI configuration directory -@return Boolean whether operation succeeded -]] - ----[[ -Set the directory for uncommited changes. - -@class function -@name Cursor.set_savedir -@param directory UCI changes directory -@return Boolean whether operation succeeded -]] - ----[[ -Set the effective session ID. - -@class function -@name Cursor.set_session_id -@param id String containing the session ID to set -@return Boolean whether operation succeeded -]] - ----[[ -Discard changes made to a config. - -@class function -@name Cursor.unload -@param config UCI config -@return Boolean whether operation succeeded -@see Cursor.load -@see Cursor.save -]] - diff --git a/luci-base/luasrc/sgi/cgi.lua b/luci-base/luasrc/sgi/cgi.lua deleted file mode 100644 index 68ae17a9e..000000000 --- a/luci-base/luasrc/sgi/cgi.lua +++ /dev/null @@ -1,73 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -exectime = os.clock() -module("luci.sgi.cgi", package.seeall) -local ltn12 = require("luci.ltn12") -require("nixio.util") -require("luci.http") -require("luci.sys") -require("luci.dispatcher") - --- Limited source to avoid endless blocking -local function limitsource(handle, limit) - limit = limit or 0 - local BLOCKSIZE = ltn12.BLOCKSIZE - - return function() - if limit < 1 then - handle:close() - return nil - else - local read = (limit > BLOCKSIZE) and BLOCKSIZE or limit - limit = limit - read - - local chunk = handle:read(read) - if not chunk then handle:close() end - return chunk - end - end -end - -function run() - local r = luci.http.Request( - luci.sys.getenv(), - limitsource(io.stdin, tonumber(luci.sys.getenv("CONTENT_LENGTH"))), - ltn12.sink.file(io.stderr) - ) - - local x = coroutine.create(luci.dispatcher.httpdispatch) - local hcache = "" - local active = true - - while coroutine.status(x) ~= "dead" do - local res, id, data1, data2 = coroutine.resume(x, r) - - if not res then - print("Status: 500 Internal Server Error") - print("Content-Type: text/plain\n") - print(id) - break; - end - - if active then - if id == 1 then - io.write("Status: " .. tostring(data1) .. " " .. data2 .. "\r\n") - elseif id == 2 then - hcache = hcache .. data1 .. ": " .. data2 .. "\r\n" - elseif id == 3 then - io.write(hcache) - io.write("\r\n") - elseif id == 4 then - io.write(tostring(data1 or "")) - elseif id == 5 then - io.flush() - io.close() - active = false - elseif id == 6 then - data1:copyz(nixio.stdout, data2) - data1:close() - end - end - end -end diff --git a/luci-base/luasrc/sgi/uhttpd.lua b/luci-base/luasrc/sgi/uhttpd.lua deleted file mode 100644 index 2836bf00c..000000000 --- a/luci-base/luasrc/sgi/uhttpd.lua +++ /dev/null @@ -1,89 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -require "nixio.util" -require "luci.http" -require "luci.sys" -require "luci.dispatcher" -require "luci.ltn12" - -function handle_request(env) - exectime = os.clock() - local renv = { - CONTENT_LENGTH = env.CONTENT_LENGTH, - CONTENT_TYPE = env.CONTENT_TYPE, - REQUEST_METHOD = env.REQUEST_METHOD, - REQUEST_URI = env.REQUEST_URI, - PATH_INFO = env.PATH_INFO, - SCRIPT_NAME = env.SCRIPT_NAME:gsub("/+$", ""), - SCRIPT_FILENAME = env.SCRIPT_NAME, - SERVER_PROTOCOL = env.SERVER_PROTOCOL, - QUERY_STRING = env.QUERY_STRING - } - - local k, v - for k, v in pairs(env.headers) do - k = k:upper():gsub("%-", "_") - renv["HTTP_" .. k] = v - end - - local len = tonumber(env.CONTENT_LENGTH) or 0 - local function recv() - if len > 0 then - local rlen, rbuf = uhttpd.recv(4096) - if rlen >= 0 then - len = len - rlen - return rbuf - end - end - return nil - end - - local send = uhttpd.send - - local req = luci.http.Request( - renv, recv, luci.ltn12.sink.file(io.stderr) - ) - - - local x = coroutine.create(luci.dispatcher.httpdispatch) - local hcache = { } - local active = true - - while coroutine.status(x) ~= "dead" do - local res, id, data1, data2 = coroutine.resume(x, req) - - if not res then - send("Status: 500 Internal Server Error\r\n") - send("Content-Type: text/plain\r\n\r\n") - send(tostring(id)) - break - end - - if active then - if id == 1 then - send("Status: ") - send(tostring(data1)) - send(" ") - send(tostring(data2)) - send("\r\n") - elseif id == 2 then - hcache[data1] = data2 - elseif id == 3 then - for k, v in pairs(hcache) do - send(tostring(k)) - send(": ") - send(tostring(v)) - send("\r\n") - end - send("\r\n") - elseif id == 4 then - send(tostring(data1 or "")) - elseif id == 5 then - active = false - elseif id == 6 then - data1:copyz(nixio.stdout, data2) - end - end - end -end diff --git a/luci-base/luasrc/store.lua b/luci-base/luasrc/store.lua deleted file mode 100644 index 34eb29622..000000000 --- a/luci-base/luasrc/store.lua +++ /dev/null @@ -1,6 +0,0 @@ --- Copyright 2009 Steven Barth --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -module("luci.store", util.threadlocal) \ No newline at end of file diff --git a/luci-base/luasrc/sys.lua b/luci-base/luasrc/sys.lua deleted file mode 100644 index dde7387d0..000000000 --- a/luci-base/luasrc/sys.lua +++ /dev/null @@ -1,515 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local io = require "io" -local os = require "os" -local table = require "table" -local nixio = require "nixio" -local fs = require "nixio.fs" -local uci = require "luci.model.uci" -local ntm = require "luci.model.network" - -local luci = {} -luci.util = require "luci.util" -luci.ip = require "luci.ip" - -local tonumber, ipairs, pairs, pcall, type, next, setmetatable, require, select = - tonumber, ipairs, pairs, pcall, type, next, setmetatable, require, select - - -module "luci.sys" - -function call(...) - return os.execute(...) / 256 -end - -exec = luci.util.exec - -function mounts() - local data = {} - local k = {"fs", "blocks", "used", "available", "percent", "mountpoint"} - local ps = luci.util.execi("df") - - if not ps then - return - else - ps() - end - - for line in ps do - local row = {} - - local j = 1 - for value in line:gmatch("[^%s]+") do - row[k[j]] = value - j = j + 1 - end - - if row[k[1]] then - - -- this is a rather ugly workaround to cope with wrapped lines in - -- the df output: - -- - -- /dev/scsi/host0/bus0/target0/lun0/part3 - -- 114382024 93566472 15005244 86% /mnt/usb - -- - - if not row[k[2]] then - j = 2 - line = ps() - for value in line:gmatch("[^%s]+") do - row[k[j]] = value - j = j + 1 - end - end - - table.insert(data, row) - end - end - - return data -end - --- containing the whole environment is returned otherwise this function returns --- the corresponding string value for the given name or nil if no such variable --- exists. -getenv = nixio.getenv - -function hostname(newname) - if type(newname) == "string" and #newname > 0 then - fs.writefile( "/proc/sys/kernel/hostname", newname ) - return newname - else - return nixio.uname().nodename - end -end - -function httpget(url, stream, target) - if not target then - local source = stream and io.popen or luci.util.exec - return source("wget -4 -T 20 -qO- %s" % luci.util.shellquote(url)) - else - return os.execute("wget -4 -T 20 -qO %s %s" % - {luci.util.shellquote(target), luci.util.shellquote(url)}) - end -end - -function reboot() - return os.execute("reboot >/dev/null 2>&1") -end - -function syslog() - return luci.util.exec("logread") -end - -function dmesg() - return luci.util.exec("dmesg") -end - -function uniqueid(bytes) - local rand = fs.readfile("/dev/urandom", bytes) - return rand and nixio.bin.hexlify(rand) -end - -function uptime() - return nixio.sysinfo().uptime -end - - -net = {} - -local function _nethints(what, callback) - local _, k, e, mac, ip, name - local cur = uci.cursor() - local ifn = { } - local hosts = { } - local lookup = { } - - local function _add(i, ...) - local k = select(i, ...) - if k then - if not hosts[k] then hosts[k] = { } end - hosts[k][1] = select(1, ...) or hosts[k][1] - hosts[k][2] = select(2, ...) or hosts[k][2] - hosts[k][3] = select(3, ...) or hosts[k][3] - hosts[k][4] = select(4, ...) or hosts[k][4] - end - end - - luci.ip.neighbors(nil, function(neigh) - if neigh.mac and neigh.family == 4 then - _add(what, neigh.mac:string(), neigh.dest:string(), nil, nil) - elseif neigh.mac and neigh.family == 6 then - _add(what, neigh.mac:string(), nil, neigh.dest:string(), nil) - end - end) - - if fs.access("/etc/ethers") then - for e in io.lines("/etc/ethers") do - mac, name = e:match("^([a-fA-F0-9:-]+)%s+(%S+)") - mac = luci.ip.checkmac(mac) - if mac and name then - if luci.ip.checkip4(name) then - _add(what, mac, name, nil, nil) - else - _add(what, mac, nil, nil, name) - end - end - end - end - - cur:foreach("dhcp", "dnsmasq", - function(s) - if s.leasefile and fs.access(s.leasefile) then - for e in io.lines(s.leasefile) do - mac, ip, name = e:match("^%d+ (%S+) (%S+) (%S+)") - mac = luci.ip.checkmac(mac) - if mac and ip then - _add(what, mac, ip, nil, name ~= "*" and name) - end - end - end - end - ) - - cur:foreach("dhcp", "host", - function(s) - for mac in luci.util.imatch(s.mac) do - mac = luci.ip.checkmac(mac) - if mac then - _add(what, mac, s.ip, nil, s.name) - end - end - end) - - for _, e in ipairs(nixio.getifaddrs()) do - if e.name ~= "lo" then - ifn[e.name] = ifn[e.name] or { } - if e.family == "packet" and e.addr and #e.addr == 17 then - ifn[e.name][1] = e.addr:upper() - elseif e.family == "inet" then - ifn[e.name][2] = e.addr - elseif e.family == "inet6" then - ifn[e.name][3] = e.addr - end - end - end - - for _, e in pairs(ifn) do - if e[what] and (e[2] or e[3]) then - _add(what, e[1], e[2], e[3], e[4]) - end - end - - for _, e in pairs(hosts) do - lookup[#lookup+1] = (what > 1) and e[what] or (e[2] or e[3]) - end - - if #lookup > 0 then - lookup = luci.util.ubus("network.rrdns", "lookup", { - addrs = lookup, - timeout = 250, - limit = 1000 - }) or { } - end - - for _, e in luci.util.kspairs(hosts) do - callback(e[1], e[2], e[3], lookup[e[2]] or lookup[e[3]] or e[4]) - end -end - --- Each entry contains the values in the following order: --- [ "mac", "name" ] -function net.mac_hints(callback) - if callback then - _nethints(1, function(mac, v4, v6, name) - name = name or v4 - if name and name ~= mac then - callback(mac, name or v4) - end - end) - else - local rv = { } - _nethints(1, function(mac, v4, v6, name) - name = name or v4 - if name and name ~= mac then - rv[#rv+1] = { mac, name or v4 } - end - end) - return rv - end -end - --- Each entry contains the values in the following order: --- [ "ip", "name" ] -function net.ipv4_hints(callback) - if callback then - _nethints(2, function(mac, v4, v6, name) - name = name or mac - if name and name ~= v4 then - callback(v4, name) - end - end) - else - local rv = { } - _nethints(2, function(mac, v4, v6, name) - name = name or mac - if name and name ~= v4 then - rv[#rv+1] = { v4, name } - end - end) - return rv - end -end - --- Each entry contains the values in the following order: --- [ "ip", "name" ] -function net.ipv6_hints(callback) - if callback then - _nethints(3, function(mac, v4, v6, name) - name = name or mac - if name and name ~= v6 then - callback(v6, name) - end - end) - else - local rv = { } - _nethints(3, function(mac, v4, v6, name) - name = name or mac - if name and name ~= v6 then - rv[#rv+1] = { v6, name } - end - end) - return rv - end -end - -function net.host_hints(callback) - if callback then - _nethints(1, function(mac, v4, v6, name) - if mac and mac ~= "00:00:00:00:00:00" and (v4 or v6 or name) then - callback(mac, v4, v6, name) - end - end) - else - local rv = { } - _nethints(1, function(mac, v4, v6, name) - if mac and mac ~= "00:00:00:00:00:00" and (v4 or v6 or name) then - local e = { } - if v4 then e.ipv4 = v4 end - if v6 then e.ipv6 = v6 end - if name then e.name = name end - rv[mac] = e - end - end) - return rv - end -end - -function net.conntrack(callback) - local ok, nfct = pcall(io.lines, "/proc/net/nf_conntrack") - if not ok or not nfct then - return nil - end - - local line, connt = nil, (not callback) and { } - for line in nfct do - local fam, l3, l4, timeout, tuples = - line:match("^(ipv[46]) +(%d+) +%S+ +(%d+) +(%d+) +(.+)$") - - if fam and l3 and l4 and timeout and not tuples:match("^TIME_WAIT ") then - l4 = nixio.getprotobynumber(l4) - - local entry = { - bytes = 0, - packets = 0, - layer3 = fam, - layer4 = l4 and l4.name or "unknown", - timeout = tonumber(timeout, 10) - } - - local key, val - for key, val in tuples:gmatch("(%w+)=(%S+)") do - if key == "bytes" or key == "packets" then - entry[key] = entry[key] + tonumber(val, 10) - elseif key == "src" or key == "dst" then - if entry[key] == nil then - entry[key] = luci.ip.new(val):string() - end - elseif key == "sport" or key == "dport" then - if entry[key] == nil then - entry[key] = val - end - elseif val then - entry[key] = val - end - end - - if callback then - callback(entry) - else - connt[#connt+1] = entry - end - end - end - - return callback and true or connt -end - -function net.devices() - local devs = {} - local seen = {} - for k, v in ipairs(nixio.getifaddrs()) do - if v.name and not seen[v.name] then - seen[v.name] = true - devs[#devs+1] = v.name - end - end - return devs -end - - -process = {} - -function process.info(key) - local s = {uid = nixio.getuid(), gid = nixio.getgid()} - return not key and s or s[key] -end - -function process.list() - local data = {} - local k - local ps = luci.util.execi("/bin/busybox top -bn1") - - if not ps then - return - end - - for line in ps do - local pid, ppid, user, stat, vsz, mem, cpun, cpu, cmd = line:match( - "^ *(%d+) +(%d+) +(%S.-%S) +([RSDZTW][W ][/dev/null 2>&1" %{ - luci.util.shellquote(password), - luci.util.shellquote(password), - luci.util.shellquote(username) - }) -end - - -wifi = {} - -function wifi.getiwinfo(ifname) - ntm.init() - - local wnet = ntm:get_wifinet(ifname) - if wnet and wnet.iwinfo then - return wnet.iwinfo - end - - local wdev = ntm:get_wifidev(ifname) - if wdev and wdev.iwinfo then - return wdev.iwinfo - end - - return { ifname = ifname } -end - - -init = {} -init.dir = "/etc/init.d/" - -function init.names() - local names = { } - for name in fs.glob(init.dir.."*") do - names[#names+1] = fs.basename(name) - end - return names -end - -function init.index(name) - if fs.access(init.dir..name) then - return call("env -i sh -c 'source %s%s enabled; exit ${START:-255}' >/dev/null" - %{ init.dir, name }) - end -end - -local function init_action(action, name) - if fs.access(init.dir..name) then - return call("env -i %s%s %s >/dev/null" %{ init.dir, name, action }) - end -end - -function init.enabled(name) - return (init_action("enabled", name) == 0) -end - -function init.enable(name) - return (init_action("enable", name) == 1) -end - -function init.disable(name) - return (init_action("disable", name) == 0) -end - -function init.start(name) - return (init_action("start", name) == 0) -end - -function init.stop(name) - return (init_action("stop", name) == 0) -end diff --git a/luci-base/luasrc/sys.luadoc b/luci-base/luasrc/sys.luadoc deleted file mode 100644 index 1c1fa9260..000000000 --- a/luci-base/luasrc/sys.luadoc +++ /dev/null @@ -1,405 +0,0 @@ ----[[ -LuCI Linux and POSIX system utilities. -]] -module "luci.sys" - ----[[ -Execute a given shell command and return the error code - -@class function -@name call -@param ... Command to call -@return Error code of the command -]] - ----[[ -Execute a given shell command and capture its standard output - -@class function -@name exec -@param command Command to call -@return String containg the return the output of the command -]] - ----[[ -Retrieve information about currently mounted file systems. - -@class function -@name mounts -@return Table containing mount information -]] - ----[[ -Retrieve environment variables. If no variable is given then a table - -containing the whole environment is returned otherwise this function returns -the corresponding string value for the given name or nil if no such variable -exists. -@class function -@name getenv -@param var Name of the environment variable to retrieve (optional) -@return String containg the value of the specified variable -@return Table containing all variables if no variable name is given -]] - ----[[ -Get or set the current hostname. - -@class function -@name hostname -@param String containing a new hostname to set (optional) -@return String containing the system hostname -]] - ----[[ -Returns the contents of a documented referred by an URL. - -@class function -@name httpget -@param url The URL to retrieve -@param stream Return a stream instead of a buffer -@param target Directly write to target file name -@return String containing the contents of given the URL -]] - ----[[ -Initiate a system reboot. - -@class function -@name reboot -@return Return value of os.execute() -]] - ----[[ -Retrieves the output of the "logread" command. - -@class function -@name syslog -@return String containing the current log buffer -]] - ----[[ -Retrieves the output of the "dmesg" command. - -@class function -@name dmesg -@return String containing the current log buffer -]] - ----[[ -Generates a random id with specified length. - -@class function -@name uniqueid -@param bytes Number of bytes for the unique id -@return String containing hex encoded id -]] - ----[[ -Returns the current system uptime stats. - -@class function -@name uptime -@return String containing total uptime in seconds -]] - ----[[ -LuCI system utilities / network related functions. - -@class module -@name luci.sys.net -]] - ----[[ -Returns the current arp-table entries as two-dimensional table. - -@class function -@name net.arptable -@return Table of table containing the current arp entries. --- The following fields are defined for arp entry objects: --- { "IP address", "HW address", "HW type", "Flags", "Mask", "Device" } -]] - ----[[ -Returns a two-dimensional table of mac address hints. - -@class function -@name net.mac_hints -@return Table of table containing known hosts from various sources. - Each entry contains the values in the following order: - [ "mac", "name" ] -]] - ----[[ -Returns a two-dimensional table of IPv4 address hints. - -@class function -@name net.ipv4_hints -@return Table of table containing known hosts from various sources. - Each entry contains the values in the following order: - [ "ip", "name" ] -]] - ----[[ -Returns a two-dimensional table of IPv6 address hints. - -@class function -@name net.ipv6_hints -@return Table of table containing known hosts from various sources. - Each entry contains the values in the following order: - [ "ip", "name" ] -]] - ----[[ -Returns a two-dimensional table of host hints. - -@class function -@name net.host_hints -@return Table of table containing known hosts from various sources, - indexed by mac address. Each subtable contains at least one - of the fields "name", "ipv4" or "ipv6". -]] - ----[[ -Returns conntrack information - -@class function -@name net.conntrack -@return Table with the currently tracked IP connections -]] - ----[[ -Determine the names of available network interfaces. - -@class function -@name net.devices -@return Table containing all current interface names -]] - ----[[ -Return information about available network interfaces. - -@class function -@name net.deviceinfo -@return Table containing all current interface names and their information -]] - ----[[ -Returns the current kernel routing table entries. - -@class function -@name net.routes -@return Table of tables with properties of the corresponding routes. --- The following fields are defined for route entry tables: --- { "dest", "gateway", "metric", "refcount", "usecount", "irtt", --- "flags", "device" } -]] - ----[[ -Returns the current ipv6 kernel routing table entries. - -@class function -@name net.routes6 -@return Table of tables with properties of the corresponding routes. --- The following fields are defined for route entry tables: --- { "source", "dest", "nexthop", "metric", "refcount", "usecount", --- "flags", "device" } -]] - ----[[ -Tests whether the given host responds to ping probes. - -@class function -@name net.pingtest -@param host String containing a hostname or IPv4 address -@return Number containing 0 on success and >= 1 on error -]] - ----[[ -LuCI system utilities / process related functions. - -@class module -@name luci.sys.process -]] - ----[[ -Get the current process id. - -@class function -@name process.info -@return Number containing the current pid -]] - ----[[ -Retrieve information about currently running processes. - -@class function -@name process.list -@return Table containing process information -]] - ----[[ -Set the gid of a process identified by given pid. - -@class function -@name process.setgroup -@param gid Number containing the Unix group id -@return Boolean indicating successful operation -@return String containing the error message if failed -@return Number containing the error code if failed -]] - ----[[ -Set the uid of a process identified by given pid. - -@class function -@name process.setuser -@param uid Number containing the Unix user id -@return Boolean indicating successful operation -@return String containing the error message if failed -@return Number containing the error code if failed -]] - ----[[ -Send a signal to a process identified by given pid. - -@class function -@name process.signal -@param pid Number containing the process id -@param sig Signal to send (default: 15 [SIGTERM]) -@return Boolean indicating successful operation -@return Number containing the error code if failed -]] - ----[[ -LuCI system utilities / user related functions. - -@class module -@name luci.sys.user -]] - ----[[ -Retrieve user informations for given uid. - -@class function -@name getuser -@param uid Number containing the Unix user id -@return Table containing the following fields: --- { "uid", "gid", "name", "passwd", "dir", "shell", "gecos" } -]] - ----[[ -Retrieve the current user password hash. - -@class function -@name user.getpasswd -@param username String containing the username to retrieve the password for -@return String containing the hash or nil if no password is set. -@return Password database entry -]] - ----[[ -Test whether given string matches the password of a given system user. - -@class function -@name user.checkpasswd -@param username String containing the Unix user name -@param pass String containing the password to compare -@return Boolean indicating wheather the passwords are equal -]] - ----[[ -Change the password of given user. - -@class function -@name user.setpasswd -@param username String containing the Unix user name -@param password String containing the password to compare -@return Number containing 0 on success and >= 1 on error -]] - ----[[ -LuCI system utilities / wifi related functions. - -@class module -@name luci.sys.wifi -]] - ----[[ -Get wireless information for given interface. - -@class function -@name wifi.getiwinfo -@param ifname String containing the interface name -@return A wrapped iwinfo object instance -]] - ----[[ -LuCI system utilities / init related functions. - -@class module -@name luci.sys.init -]] - ----[[ -Get the names of all installed init scripts - -@class function -@name init.names -@return Table containing the names of all inistalled init scripts -]] - ----[[ -Get the index of he given init script - -@class function -@name init.index -@param name Name of the init script -@return Numeric index value -]] - ----[[ -Test whether the given init script is enabled - -@class function -@name init.enabled -@param name Name of the init script -@return Boolean indicating whether init is enabled -]] - ----[[ -Enable the given init script - -@class function -@name init.enable -@param name Name of the init script -@return Boolean indicating success -]] - ----[[ -Disable the given init script - -@class function -@name init.disable -@param name Name of the init script -@return Boolean indicating success -]] - ----[[ -Start the given init script - -@class function -@name init.start -@param name Name of the init script -@return Boolean indicating success -]] - ----[[ -Stop the given init script - -@class function -@name init.stop -@param name Name of the init script -@return Boolean indicating success -]] - diff --git a/luci-base/luasrc/sys/zoneinfo.lua b/luci-base/luasrc/sys/zoneinfo.lua deleted file mode 100644 index aa054a246..000000000 --- a/luci-base/luasrc/sys/zoneinfo.lua +++ /dev/null @@ -1,19 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -local setmetatable, require, rawget, rawset = setmetatable, require, rawget, rawset - -module "luci.sys.zoneinfo" - -setmetatable(_M, { - __index = function(t, k) - if k == "TZ" and not rawget(t, k) then - local m = require "luci.sys.zoneinfo.tzdata" - rawset(t, k, rawget(m, k)) - elseif k == "OFFSET" and not rawget(t, k) then - local m = require "luci.sys.zoneinfo.tzoffset" - rawset(t, k, rawget(m, k)) - end - - return rawget(t, k) - end -}) diff --git a/luci-base/luasrc/sys/zoneinfo/tzdata.lua b/luci-base/luasrc/sys/zoneinfo/tzdata.lua deleted file mode 100644 index 47cb901a5..000000000 --- a/luci-base/luasrc/sys/zoneinfo/tzdata.lua +++ /dev/null @@ -1,457 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module "luci.sys.zoneinfo.tzdata" - -TZ = { - { 'Africa/Abidjan', 'GMT0' }, - { 'Africa/Accra', 'GMT0' }, - { 'Africa/Addis Ababa', 'EAT-3' }, - { 'Africa/Algiers', 'CET-1' }, - { 'Africa/Asmara', 'EAT-3' }, - { 'Africa/Bamako', 'GMT0' }, - { 'Africa/Bangui', 'WAT-1' }, - { 'Africa/Banjul', 'GMT0' }, - { 'Africa/Bissau', 'GMT0' }, - { 'Africa/Blantyre', 'CAT-2' }, - { 'Africa/Brazzaville', 'WAT-1' }, - { 'Africa/Bujumbura', 'CAT-2' }, - { 'Africa/Cairo', 'EET-2' }, - { 'Africa/Casablanca', 'WET0WEST,M3.5.0,M10.5.0/3' }, - { 'Africa/Ceuta', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Africa/Conakry', 'GMT0' }, - { 'Africa/Dakar', 'GMT0' }, - { 'Africa/Dar es Salaam', 'EAT-3' }, - { 'Africa/Djibouti', 'EAT-3' }, - { 'Africa/Douala', 'WAT-1' }, - { 'Africa/El Aaiun', 'WET0WEST,M3.5.0,M10.5.0/3' }, - { 'Africa/Freetown', 'GMT0' }, - { 'Africa/Gaborone', 'CAT-2' }, - { 'Africa/Harare', 'CAT-2' }, - { 'Africa/Johannesburg', 'SAST-2' }, - { 'Africa/Juba', 'EAT-3' }, - { 'Africa/Kampala', 'EAT-3' }, - { 'Africa/Khartoum', 'CAT-2' }, - { 'Africa/Kigali', 'CAT-2' }, - { 'Africa/Kinshasa', 'WAT-1' }, - { 'Africa/Lagos', 'WAT-1' }, - { 'Africa/Libreville', 'WAT-1' }, - { 'Africa/Lome', 'GMT0' }, - { 'Africa/Luanda', 'WAT-1' }, - { 'Africa/Lubumbashi', 'CAT-2' }, - { 'Africa/Lusaka', 'CAT-2' }, - { 'Africa/Malabo', 'WAT-1' }, - { 'Africa/Maputo', 'CAT-2' }, - { 'Africa/Maseru', 'SAST-2' }, - { 'Africa/Mbabane', 'SAST-2' }, - { 'Africa/Mogadishu', 'EAT-3' }, - { 'Africa/Monrovia', 'GMT0' }, - { 'Africa/Nairobi', 'EAT-3' }, - { 'Africa/Ndjamena', 'WAT-1' }, - { 'Africa/Niamey', 'WAT-1' }, - { 'Africa/Nouakchott', 'GMT0' }, - { 'Africa/Ouagadougou', 'GMT0' }, - { 'Africa/Porto-Novo', 'WAT-1' }, - { 'Africa/Sao Tome', 'WAT-1' }, - { 'Africa/Tripoli', 'EET-2' }, - { 'Africa/Tunis', 'CET-1' }, - { 'Africa/Windhoek', 'CAT-2' }, - { 'America/Adak', 'HST10HDT,M3.2.0,M11.1.0' }, - { 'America/Anchorage', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/Anguilla', 'AST4' }, - { 'America/Antigua', 'AST4' }, - { 'America/Araguaina', '<-03>3' }, - { 'America/Argentina/Buenos Aires', '<-03>3' }, - { 'America/Argentina/Catamarca', '<-03>3' }, - { 'America/Argentina/Cordoba', '<-03>3' }, - { 'America/Argentina/Jujuy', '<-03>3' }, - { 'America/Argentina/La Rioja', '<-03>3' }, - { 'America/Argentina/Mendoza', '<-03>3' }, - { 'America/Argentina/Rio Gallegos', '<-03>3' }, - { 'America/Argentina/Salta', '<-03>3' }, - { 'America/Argentina/San Juan', '<-03>3' }, - { 'America/Argentina/San Luis', '<-03>3' }, - { 'America/Argentina/Tucuman', '<-03>3' }, - { 'America/Argentina/Ushuaia', '<-03>3' }, - { 'America/Aruba', 'AST4' }, - { 'America/Asuncion', '<-04>4<-03>,M10.1.0/0,M3.4.0/0' }, - { 'America/Atikokan', 'EST5' }, - { 'America/Bahia', '<-03>3' }, - { 'America/Bahia Banderas', 'CST6CDT,M4.1.0,M10.5.0' }, - { 'America/Barbados', 'AST4' }, - { 'America/Belem', '<-03>3' }, - { 'America/Belize', 'CST6' }, - { 'America/Blanc-Sablon', 'AST4' }, - { 'America/Boa Vista', '<-04>4' }, - { 'America/Bogota', '<-05>5' }, - { 'America/Boise', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Cambridge Bay', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Campo Grande', '<-04>4<-03>,M11.1.0/0,M2.3.0/0' }, - { 'America/Cancun', 'EST5' }, - { 'America/Caracas', '<-04>4' }, - { 'America/Cayenne', '<-03>3' }, - { 'America/Cayman', 'EST5' }, - { 'America/Chicago', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Chihuahua', 'MST7MDT,M4.1.0,M10.5.0' }, - { 'America/Costa Rica', 'CST6' }, - { 'America/Creston', 'MST7' }, - { 'America/Cuiaba', '<-04>4<-03>,M11.1.0/0,M2.3.0/0' }, - { 'America/Curacao', 'AST4' }, - { 'America/Danmarkshavn', 'GMT0' }, - { 'America/Dawson', 'PST8PDT,M3.2.0,M11.1.0' }, - { 'America/Dawson Creek', 'MST7' }, - { 'America/Denver', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Detroit', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Dominica', 'AST4' }, - { 'America/Edmonton', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Eirunepe', '<-05>5' }, - { 'America/El Salvador', 'CST6' }, - { 'America/Fort Nelson', 'MST7' }, - { 'America/Fortaleza', '<-03>3' }, - { 'America/Glace Bay', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'America/Godthab', '<-03>3<-02>,M3.5.0/-2,M10.5.0/-1' }, - { 'America/Goose Bay', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'America/Grand Turk', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Grenada', 'AST4' }, - { 'America/Guadeloupe', 'AST4' }, - { 'America/Guatemala', 'CST6' }, - { 'America/Guayaquil', '<-05>5' }, - { 'America/Guyana', '<-04>4' }, - { 'America/Halifax', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'America/Havana', 'CST5CDT,M3.2.0/0,M11.1.0/1' }, - { 'America/Hermosillo', 'MST7' }, - { 'America/Indiana/Indianapolis', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Knox', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Marengo', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Petersburg', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Tell City', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Vevay', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Vincennes', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Indiana/Winamac', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Inuvik', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Iqaluit', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Jamaica', 'EST5' }, - { 'America/Juneau', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/Kentucky/Louisville', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Kentucky/Monticello', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Kralendijk', 'AST4' }, - { 'America/La Paz', '<-04>4' }, - { 'America/Lima', '<-05>5' }, - { 'America/Los Angeles', 'PST8PDT,M3.2.0,M11.1.0' }, - { 'America/Lower Princes', 'AST4' }, - { 'America/Maceio', '<-03>3' }, - { 'America/Managua', 'CST6' }, - { 'America/Manaus', '<-04>4' }, - { 'America/Marigot', 'AST4' }, - { 'America/Martinique', 'AST4' }, - { 'America/Matamoros', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Mazatlan', 'MST7MDT,M4.1.0,M10.5.0' }, - { 'America/Menominee', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Merida', 'CST6CDT,M4.1.0,M10.5.0' }, - { 'America/Metlakatla', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/Mexico City', 'CST6CDT,M4.1.0,M10.5.0' }, - { 'America/Miquelon', '<-03>3<-02>,M3.2.0,M11.1.0' }, - { 'America/Moncton', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'America/Monterrey', 'CST6CDT,M4.1.0,M10.5.0' }, - { 'America/Montevideo', '<-03>3' }, - { 'America/Montserrat', 'AST4' }, - { 'America/Nassau', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/New York', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Nipigon', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Nome', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/Noronha', '<-02>2' }, - { 'America/North Dakota/Beulah', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/North Dakota/Center', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/North Dakota/New Salem', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Ojinaga', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'America/Panama', 'EST5' }, - { 'America/Pangnirtung', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Paramaribo', '<-03>3' }, - { 'America/Phoenix', 'MST7' }, - { 'America/Port of Spain', 'AST4' }, - { 'America/Port-au-Prince', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Porto Velho', '<-04>4' }, - { 'America/Puerto Rico', 'AST4' }, - { 'America/Punta Arenas', '<-03>3' }, - { 'America/Rainy River', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Rankin Inlet', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Recife', '<-03>3' }, - { 'America/Regina', 'CST6' }, - { 'America/Resolute', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Rio Branco', '<-05>5' }, - { 'America/Santarem', '<-03>3' }, - { 'America/Santiago', '<-04>4<-03>,M8.2.6/24,M5.2.6/24' }, - { 'America/Santo Domingo', 'AST4' }, - { 'America/Sao Paulo', '<-03>3<-02>,M11.1.0/0,M2.3.0/0' }, - { 'America/Scoresbysund', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' }, - { 'America/Sitka', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/St Barthelemy', 'AST4' }, - { 'America/St Johns', 'NST3:30NDT,M3.2.0,M11.1.0' }, - { 'America/St Kitts', 'AST4' }, - { 'America/St Lucia', 'AST4' }, - { 'America/St Thomas', 'AST4' }, - { 'America/St Vincent', 'AST4' }, - { 'America/Swift Current', 'CST6' }, - { 'America/Tegucigalpa', 'CST6' }, - { 'America/Thule', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'America/Thunder Bay', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Tijuana', 'PST8PDT,M3.2.0,M11.1.0' }, - { 'America/Toronto', 'EST5EDT,M3.2.0,M11.1.0' }, - { 'America/Tortola', 'AST4' }, - { 'America/Vancouver', 'PST8PDT,M3.2.0,M11.1.0' }, - { 'America/Whitehorse', 'PST8PDT,M3.2.0,M11.1.0' }, - { 'America/Winnipeg', 'CST6CDT,M3.2.0,M11.1.0' }, - { 'America/Yakutat', 'AKST9AKDT,M3.2.0,M11.1.0' }, - { 'America/Yellowknife', 'MST7MDT,M3.2.0,M11.1.0' }, - { 'Antarctica/Casey', '<+08>-8' }, - { 'Antarctica/Davis', '<+07>-7' }, - { 'Antarctica/DumontDUrville', '<+10>-10' }, - { 'Antarctica/Macquarie', '<+11>-11' }, - { 'Antarctica/Mawson', '<+05>-5' }, - { 'Antarctica/McMurdo', 'NZST-12NZDT,M9.5.0,M4.1.0/3' }, - { 'Antarctica/Palmer', '<-03>3' }, - { 'Antarctica/Rothera', '<-03>3' }, - { 'Antarctica/Syowa', '<+03>-3' }, - { 'Antarctica/Troll', '<+00>0<+02>-2,M3.5.0/1,M10.5.0/3' }, - { 'Antarctica/Vostok', '<+06>-6' }, - { 'Arctic/Longyearbyen', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Asia/Aden', '<+03>-3' }, - { 'Asia/Almaty', '<+06>-6' }, - { 'Asia/Amman', 'EET-2EEST,M3.5.4/24,M10.5.5/1' }, - { 'Asia/Anadyr', '<+12>-12' }, - { 'Asia/Aqtau', '<+05>-5' }, - { 'Asia/Aqtobe', '<+05>-5' }, - { 'Asia/Ashgabat', '<+05>-5' }, - { 'Asia/Atyrau', '<+05>-5' }, - { 'Asia/Baghdad', '<+03>-3' }, - { 'Asia/Bahrain', '<+03>-3' }, - { 'Asia/Baku', '<+04>-4' }, - { 'Asia/Bangkok', '<+07>-7' }, - { 'Asia/Barnaul', '<+07>-7' }, - { 'Asia/Beirut', 'EET-2EEST,M3.5.0/0,M10.5.0/0' }, - { 'Asia/Bishkek', '<+06>-6' }, - { 'Asia/Brunei', '<+08>-8' }, - { 'Asia/Chita', '<+09>-9' }, - { 'Asia/Choibalsan', '<+08>-8' }, - { 'Asia/Colombo', '<+0530>-5:30' }, - { 'Asia/Damascus', 'EET-2EEST,M3.5.5/0,M10.5.5/0' }, - { 'Asia/Dhaka', '<+06>-6' }, - { 'Asia/Dili', '<+09>-9' }, - { 'Asia/Dubai', '<+04>-4' }, - { 'Asia/Dushanbe', '<+05>-5' }, - { 'Asia/Famagusta', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Asia/Gaza', 'EET-2EEST,M3.4.6/1,M10.5.6/1' }, - { 'Asia/Hebron', 'EET-2EEST,M3.4.6/1,M10.5.6/1' }, - { 'Asia/Ho Chi Minh', '<+07>-7' }, - { 'Asia/Hong Kong', 'HKT-8' }, - { 'Asia/Hovd', '<+07>-7' }, - { 'Asia/Irkutsk', '<+08>-8' }, - { 'Asia/Jakarta', 'WIB-7' }, - { 'Asia/Jayapura', 'WIT-9' }, - { 'Asia/Jerusalem', 'IST-2IDT,M3.4.4/26,M10.5.0' }, - { 'Asia/Kabul', '<+0430>-4:30' }, - { 'Asia/Kamchatka', '<+12>-12' }, - { 'Asia/Karachi', 'PKT-5' }, - { 'Asia/Kathmandu', '<+0545>-5:45' }, - { 'Asia/Khandyga', '<+09>-9' }, - { 'Asia/Kolkata', 'IST-5:30' }, - { 'Asia/Krasnoyarsk', '<+07>-7' }, - { 'Asia/Kuala Lumpur', '<+08>-8' }, - { 'Asia/Kuching', '<+08>-8' }, - { 'Asia/Kuwait', '<+03>-3' }, - { 'Asia/Macau', 'CST-8' }, - { 'Asia/Magadan', '<+11>-11' }, - { 'Asia/Makassar', 'WITA-8' }, - { 'Asia/Manila', '<+08>-8' }, - { 'Asia/Muscat', '<+04>-4' }, - { 'Asia/Nicosia', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Asia/Novokuznetsk', '<+07>-7' }, - { 'Asia/Novosibirsk', '<+07>-7' }, - { 'Asia/Omsk', '<+06>-6' }, - { 'Asia/Oral', '<+05>-5' }, - { 'Asia/Phnom Penh', '<+07>-7' }, - { 'Asia/Pontianak', 'WIB-7' }, - { 'Asia/Pyongyang', 'KST-8:30' }, - { 'Asia/Qatar', '<+03>-3' }, - { 'Asia/Qyzylorda', '<+06>-6' }, - { 'Asia/Riyadh', '<+03>-3' }, - { 'Asia/Sakhalin', '<+11>-11' }, - { 'Asia/Samarkand', '<+05>-5' }, - { 'Asia/Seoul', 'KST-9' }, - { 'Asia/Shanghai', 'CST-8' }, - { 'Asia/Singapore', '<+08>-8' }, - { 'Asia/Srednekolymsk', '<+11>-11' }, - { 'Asia/Taipei', 'CST-8' }, - { 'Asia/Tashkent', '<+05>-5' }, - { 'Asia/Tbilisi', '<+04>-4' }, - { 'Asia/Tehran', '<+0330>-3:30<+0430>,J80/0,J264/0' }, - { 'Asia/Thimphu', '<+06>-6' }, - { 'Asia/Tokyo', 'JST-9' }, - { 'Asia/Tomsk', '<+07>-7' }, - { 'Asia/Ulaanbaatar', '<+08>-8' }, - { 'Asia/Urumqi', '<+06>-6' }, - { 'Asia/Ust-Nera', '<+10>-10' }, - { 'Asia/Vientiane', '<+07>-7' }, - { 'Asia/Vladivostok', '<+10>-10' }, - { 'Asia/Yakutsk', '<+09>-9' }, - { 'Asia/Yangon', '<+0630>-6:30' }, - { 'Asia/Yekaterinburg', '<+05>-5' }, - { 'Asia/Yerevan', '<+04>-4' }, - { 'Atlantic/Azores', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' }, - { 'Atlantic/Bermuda', 'AST4ADT,M3.2.0,M11.1.0' }, - { 'Atlantic/Canary', 'WET0WEST,M3.5.0/1,M10.5.0' }, - { 'Atlantic/Cape Verde', '<-01>1' }, - { 'Atlantic/Faroe', 'WET0WEST,M3.5.0/1,M10.5.0' }, - { 'Atlantic/Madeira', 'WET0WEST,M3.5.0/1,M10.5.0' }, - { 'Atlantic/Reykjavik', 'GMT0' }, - { 'Atlantic/South Georgia', '<-02>2' }, - { 'Atlantic/St Helena', 'GMT0' }, - { 'Atlantic/Stanley', '<-03>3' }, - { 'Australia/Adelaide', 'ACST-9:30ACDT,M10.1.0,M4.1.0/3' }, - { 'Australia/Brisbane', 'AEST-10' }, - { 'Australia/Broken Hill', 'ACST-9:30ACDT,M10.1.0,M4.1.0/3' }, - { 'Australia/Currie', 'AEST-10AEDT,M10.1.0,M4.1.0/3' }, - { 'Australia/Darwin', 'ACST-9:30' }, - { 'Australia/Eucla', '<+0845>-8:45' }, - { 'Australia/Hobart', 'AEST-10AEDT,M10.1.0,M4.1.0/3' }, - { 'Australia/Lindeman', 'AEST-10' }, - { 'Australia/Lord Howe', '<+1030>-10:30<+11>-11,M10.1.0,M4.1.0' }, - { 'Australia/Melbourne', 'AEST-10AEDT,M10.1.0,M4.1.0/3' }, - { 'Australia/Perth', 'AWST-8' }, - { 'Australia/Sydney', 'AEST-10AEDT,M10.1.0,M4.1.0/3' }, - { 'Etc/GMT', 'GMT0' }, - { 'Etc/GMT+1', '<-01>1' }, - { 'Etc/GMT+10', '<-10>10' }, - { 'Etc/GMT+11', '<-11>11' }, - { 'Etc/GMT+12', '<-12>12' }, - { 'Etc/GMT+2', '<-02>2' }, - { 'Etc/GMT+3', '<-03>3' }, - { 'Etc/GMT+4', '<-04>4' }, - { 'Etc/GMT+5', '<-05>5' }, - { 'Etc/GMT+6', '<-06>6' }, - { 'Etc/GMT+7', '<-07>7' }, - { 'Etc/GMT+8', '<-08>8' }, - { 'Etc/GMT+9', '<-09>9' }, - { 'Etc/GMT-1', '<+01>-1' }, - { 'Etc/GMT-10', '<+10>-10' }, - { 'Etc/GMT-11', '<+11>-11' }, - { 'Etc/GMT-12', '<+12>-12' }, - { 'Etc/GMT-13', '<+13>-13' }, - { 'Etc/GMT-14', '<+14>-14' }, - { 'Etc/GMT-2', '<+02>-2' }, - { 'Etc/GMT-3', '<+03>-3' }, - { 'Etc/GMT-4', '<+04>-4' }, - { 'Etc/GMT-5', '<+05>-5' }, - { 'Etc/GMT-6', '<+06>-6' }, - { 'Etc/GMT-7', '<+07>-7' }, - { 'Etc/GMT-8', '<+08>-8' }, - { 'Etc/GMT-9', '<+09>-9' }, - { 'Europe/Amsterdam', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Andorra', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Astrakhan', '<+04>-4' }, - { 'Europe/Athens', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Belgrade', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Berlin', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Bratislava', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Brussels', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Bucharest', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Budapest', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Busingen', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Chisinau', 'EET-2EEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Copenhagen', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Dublin', 'GMT0IST,M3.5.0/1,M10.5.0' }, - { 'Europe/Gibraltar', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Guernsey', 'GMT0BST,M3.5.0/1,M10.5.0' }, - { 'Europe/Helsinki', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Isle of Man', 'GMT0BST,M3.5.0/1,M10.5.0' }, - { 'Europe/Istanbul', '<+03>-3' }, - { 'Europe/Jersey', 'GMT0BST,M3.5.0/1,M10.5.0' }, - { 'Europe/Kaliningrad', 'EET-2' }, - { 'Europe/Kiev', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Kirov', '<+03>-3' }, - { 'Europe/Lisbon', 'WET0WEST,M3.5.0/1,M10.5.0' }, - { 'Europe/Ljubljana', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/London', 'GMT0BST,M3.5.0/1,M10.5.0' }, - { 'Europe/Luxembourg', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Madrid', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Malta', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Mariehamn', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Minsk', '<+03>-3' }, - { 'Europe/Monaco', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Moscow', 'MSK-3' }, - { 'Europe/Oslo', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Paris', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Podgorica', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Prague', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Riga', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Rome', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Samara', '<+04>-4' }, - { 'Europe/San Marino', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Sarajevo', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Saratov', '<+04>-4' }, - { 'Europe/Simferopol', 'MSK-3' }, - { 'Europe/Skopje', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Sofia', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Stockholm', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Tallinn', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Tirane', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Ulyanovsk', '<+04>-4' }, - { 'Europe/Uzhgorod', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Vaduz', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Vatican', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Vienna', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Vilnius', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Volgograd', '<+03>-3' }, - { 'Europe/Warsaw', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Zagreb', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Zaporozhye', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, - { 'Europe/Zurich', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Indian/Antananarivo', 'EAT-3' }, - { 'Indian/Chagos', '<+06>-6' }, - { 'Indian/Christmas', '<+07>-7' }, - { 'Indian/Cocos', '<+0630>-6:30' }, - { 'Indian/Comoro', 'EAT-3' }, - { 'Indian/Kerguelen', '<+05>-5' }, - { 'Indian/Mahe', '<+04>-4' }, - { 'Indian/Maldives', '<+05>-5' }, - { 'Indian/Mauritius', '<+04>-4' }, - { 'Indian/Mayotte', 'EAT-3' }, - { 'Indian/Reunion', '<+04>-4' }, - { 'Pacific/Apia', '<+13>-13<+14>,M9.5.0/3,M4.1.0/4' }, - { 'Pacific/Auckland', 'NZST-12NZDT,M9.5.0,M4.1.0/3' }, - { 'Pacific/Bougainville', '<+11>-11' }, - { 'Pacific/Chatham', '<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45' }, - { 'Pacific/Chuuk', '<+10>-10' }, - { 'Pacific/Easter', '<-06>6<-05>,M8.2.6/22,M5.2.6/22' }, - { 'Pacific/Efate', '<+11>-11' }, - { 'Pacific/Enderbury', '<+13>-13' }, - { 'Pacific/Fakaofo', '<+13>-13' }, - { 'Pacific/Fiji', '<+12>-12<+13>,M11.1.0,M1.2.1/147' }, - { 'Pacific/Funafuti', '<+12>-12' }, - { 'Pacific/Galapagos', '<-06>6' }, - { 'Pacific/Gambier', '<-09>9' }, - { 'Pacific/Guadalcanal', '<+11>-11' }, - { 'Pacific/Guam', 'ChST-10' }, - { 'Pacific/Honolulu', 'HST10' }, - { 'Pacific/Kiritimati', '<+14>-14' }, - { 'Pacific/Kosrae', '<+11>-11' }, - { 'Pacific/Kwajalein', '<+12>-12' }, - { 'Pacific/Majuro', '<+12>-12' }, - { 'Pacific/Marquesas', '<-0930>9:30' }, - { 'Pacific/Midway', 'SST11' }, - { 'Pacific/Nauru', '<+12>-12' }, - { 'Pacific/Niue', '<-11>11' }, - { 'Pacific/Norfolk', '<+11>-11' }, - { 'Pacific/Noumea', '<+11>-11' }, - { 'Pacific/Pago Pago', 'SST11' }, - { 'Pacific/Palau', '<+09>-9' }, - { 'Pacific/Pitcairn', '<-08>8' }, - { 'Pacific/Pohnpei', '<+11>-11' }, - { 'Pacific/Port Moresby', '<+10>-10' }, - { 'Pacific/Rarotonga', '<-10>10' }, - { 'Pacific/Saipan', 'ChST-10' }, - { 'Pacific/Tahiti', '<-10>10' }, - { 'Pacific/Tarawa', '<+12>-12' }, - { 'Pacific/Tongatapu', '<+13>-13' }, - { 'Pacific/Wake', '<+12>-12' }, - { 'Pacific/Wallis', '<+12>-12' }, -} diff --git a/luci-base/luasrc/sys/zoneinfo/tzoffset.lua b/luci-base/luasrc/sys/zoneinfo/tzoffset.lua deleted file mode 100644 index cf5afeb9d..000000000 --- a/luci-base/luasrc/sys/zoneinfo/tzoffset.lua +++ /dev/null @@ -1,45 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module "luci.sys.zoneinfo.tzoffset" - -OFFSET = { - gmt = 0, -- GMT - eat = 10800, -- EAT - cet = 3600, -- CET - wat = 3600, -- WAT - cat = 7200, -- CAT - eet = 7200, -- EET - wet = 0, -- WET - sast = 7200, -- SAST - hst = -36000, -- HST - hdt = -32400, -- HDT - akst = -32400, -- AKST - akdt = -28800, -- AKDT - ast = -14400, -- AST - est = -18000, -- EST - cst = -21600, -- CST - cdt = -18000, -- CDT - mst = -25200, -- MST - mdt = -21600, -- MDT - pst = -28800, -- PST - pdt = -25200, -- PDT - nst = -12600, -- NST - ndt = -9000, -- NDT - nzst = 43200, -- NZST - nzdt = 46800, -- NZDT - hkt = 28800, -- HKT - wib = 25200, -- WIB - wit = 32400, -- WIT - ist = 7200, -- IST - idt = 10800, -- IDT - pkt = 18000, -- PKT - wita = 28800, -- WITA - kst = 30600, -- KST - jst = 32400, -- JST - acst = 34200, -- ACST - acdt = 37800, -- ACDT - aest = 36000, -- AEST - awst = 28800, -- AWST - msk = 10800, -- MSK - sst = -39600, -- SST -} diff --git a/luci-base/luasrc/template.lua b/luci-base/luasrc/template.lua deleted file mode 100644 index 588028c2e..000000000 --- a/luci-base/luasrc/template.lua +++ /dev/null @@ -1,100 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local util = require "luci.util" -local config = require "luci.config" -local tparser = require "luci.template.parser" - -local tostring, pairs, loadstring = tostring, pairs, loadstring -local setmetatable, loadfile = setmetatable, loadfile -local getfenv, setfenv, rawget = getfenv, setfenv, rawget -local assert, type, error = assert, type, error - ---- LuCI template library. -module "luci.template" - -config.template = config.template or {} -viewdir = config.template.viewdir or util.libpath() .. "/view" - - --- Define the namespace for template modules -context = util.threadlocal() - ---- Render a certain template. --- @param name Template name --- @param scope Scope to assign to template (optional) -function render(name, scope) - return Template(name):render(scope or getfenv(2)) -end - ---- Render a template from a string. --- @param template Template string --- @param scope Scope to assign to template (optional) -function render_string(template, scope) - return Template(nil, template):render(scope or getfenv(2)) -end - - --- Template class -Template = util.class() - --- Shared template cache to store templates in to avoid unnecessary reloading -Template.cache = setmetatable({}, {__mode = "v"}) - - --- Constructor - Reads and compiles the template on-demand -function Template.__init__(self, name, template) - if name then - self.template = self.cache[name] - self.name = name - else - self.name = "[string]" - end - - -- Create a new namespace for this template - self.viewns = context.viewns - - -- If we have a cached template, skip compiling and loading - if not self.template then - - -- Compile template - local err - local sourcefile - - if name then - sourcefile = viewdir .. "/" .. name .. ".htm" - self.template, _, err = tparser.parse(sourcefile) - else - sourcefile = "[string]" - self.template, _, err = tparser.parse_string(template) - end - - -- If we have no valid template throw error, otherwise cache the template - if not self.template then - error("Failed to load template '" .. name .. "'.\n" .. - "Error while parsing template '" .. sourcefile .. "':\n" .. - (err or "Unknown syntax error")) - elseif name then - self.cache[name] = self.template - end - end -end - - --- Renders a template -function Template.render(self, scope) - scope = scope or getfenv(2) - - -- Put our predefined objects in the scope of the template - setfenv(self.template, setmetatable({}, {__index = - function(tbl, key) - return rawget(tbl, key) or self.viewns[key] or scope[key] - end})) - - -- Now finally render the thing - local stat, err = util.copcall(self.template) - if not stat then - error("Failed to execute template '" .. self.name .. "'.\n" .. - "A runtime error occured: " .. tostring(err or "(nil)")) - end -end diff --git a/luci-base/luasrc/tools/proto.lua b/luci-base/luasrc/tools/proto.lua deleted file mode 100644 index 147688d2c..000000000 --- a/luci-base/luasrc/tools/proto.lua +++ /dev/null @@ -1,36 +0,0 @@ --- Copyright 2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.tools.proto", package.seeall) - -function opt_macaddr(s, ifc, ...) - local v = luci.cbi.Value - local o = s:taboption("advanced", v, "macaddr", ...) - - o.placeholder = ifc and ifc:mac() - o.datatype = "macaddr" - - function o.cfgvalue(self, section) - local w = ifc and ifc:get_wifinet() - if w then - return w:get("macaddr") - else - return v.cfgvalue(self, section) - end - end - - function o.write(self, section, value) - local w = ifc and ifc:get_wifinet() - if w then - w:set("macaddr", value) - elseif value then - v.write(self, section, value) - else - v.remove(self, section) - end - end - - function o.remove(self, section) - self:write(section, nil) - end -end diff --git a/luci-base/luasrc/tools/status.lua b/luci-base/luasrc/tools/status.lua deleted file mode 100644 index 635995310..000000000 --- a/luci-base/luasrc/tools/status.lua +++ /dev/null @@ -1,305 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.tools.status", package.seeall) - -local uci = require "luci.model.uci".cursor() -local ipc = require "luci.ip" - -local function duid_to_mac(duid) - local b1, b2, b3, b4, b5, b6 - - -- DUID-LLT / Ethernet - if type(duid) == "string" and #duid == 28 then - b1, b2, b3, b4, b5, b6 = duid:match("^00010001(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)%x%x%x%x%x%x%x%x$") - - -- DUID-LL / Ethernet - elseif type(duid) == "string" and #duid == 20 then - b1, b2, b3, b4, b5, b6 = duid:match("^00030001(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$") - end - - return b1 and ipc.checkmac(table.concat({ b1, b2, b3, b4, b5, b6 }, ":")) -end - -local function dhcp_leases_common(family) - local rv = { } - local nfs = require "nixio.fs" - local sys = require "luci.sys" - local leasefile = "/tmp/dhcp.leases" - - uci:foreach("dhcp", "dnsmasq", - function(s) - if s.leasefile and nfs.access(s.leasefile) then - leasefile = s.leasefile - return false - end - end) - - local fd = io.open(leasefile, "r") - if fd then - while true do - local ln = fd:read("*l") - if not ln then - break - else - local ts, mac, ip, name, duid = ln:match("^(%d+) (%S+) (%S+) (%S+) (%S+)") - local expire = tonumber(ts) or 0 - if ts and mac and ip and name and duid then - if family == 4 and not ip:match(":") then - rv[#rv+1] = { - expires = (expire ~= 0) and os.difftime(expire, os.time()), - macaddr = ipc.checkmac(mac) or "00:00:00:00:00:00", - ipaddr = ip, - hostname = (name ~= "*") and name - } - elseif family == 6 and ip:match(":") then - rv[#rv+1] = { - expires = (expire ~= 0) and os.difftime(expire, os.time()), - ip6addr = ip, - duid = (duid ~= "*") and duid, - hostname = (name ~= "*") and name - } - end - end - end - end - fd:close() - end - - local lease6file = "/tmp/hosts/odhcpd" - uci:foreach("dhcp", "odhcpd", - function(t) - if t.leasefile and nfs.access(t.leasefile) then - lease6file = t.leasefile - return false - end - end) - local fd = io.open(lease6file, "r") - if fd then - while true do - local ln = fd:read("*l") - if not ln then - break - else - local iface, duid, iaid, name, ts, id, length, ip = ln:match("^# (%S+) (%S+) (%S+) (%S+) (-?%d+) (%S+) (%S+) (.*)") - local expire = tonumber(ts) or 0 - if ip and iaid ~= "ipv4" and family == 6 then - rv[#rv+1] = { - expires = (expire >= 0) and os.difftime(expire, os.time()), - duid = duid, - ip6addr = ip, - hostname = (name ~= "-") and name - } - elseif ip and iaid == "ipv4" and family == 4 then - rv[#rv+1] = { - expires = (expire >= 0) and os.difftime(expire, os.time()), - macaddr = ipc.checkmac(duid:gsub("^(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$", "%1:%2:%3:%4:%5:%6")) or "00:00:00:00:00:00", - ipaddr = ip, - hostname = (name ~= "-") and name - } - end - end - end - fd:close() - end - - if family == 6 then - local _, lease - local hosts = sys.net.host_hints() - for _, lease in ipairs(rv) do - local mac = duid_to_mac(lease.duid) - local host = mac and hosts[mac] - if host then - if not lease.name then - lease.host_hint = host.name or host.ipv4 or host.ipv6 - elseif host.name and lease.hostname ~= host.name then - lease.host_hint = host.name - end - end - end - end - - return rv -end - -function dhcp_leases() - return dhcp_leases_common(4) -end - -function dhcp6_leases() - return dhcp_leases_common(6) -end - -function wifi_networks() - local rv = { } - local ntm = require "luci.model.network".init() - - local dev - for _, dev in ipairs(ntm:get_wifidevs()) do - local rd = { - up = dev:is_up(), - device = dev:name(), - name = dev:get_i18n(), - networks = { } - } - - local net - for _, net in ipairs(dev:get_wifinets()) do - local a, an = nil, 0 - for _, a in pairs(net:assoclist() or {}) do - an = an + 1 - end - - rd.networks[#rd.networks+1] = { - name = net:shortname(), - link = net:adminlink(), - up = net:is_up(), - mode = net:active_mode(), - ssid = net:active_ssid(), - bssid = net:active_bssid(), - encryption = net:active_encryption(), - frequency = net:frequency(), - channel = net:channel(), - signal = net:signal(), - quality = net:signal_percent(), - noise = net:noise(), - bitrate = net:bitrate(), - ifname = net:ifname(), - country = net:country(), - txpower = net:txpower(), - txpoweroff = net:txpower_offset(), - num_assoc = an, - disabled = (dev:get("disabled") == "1" or - net:get("disabled") == "1") - } - end - - rv[#rv+1] = rd - end - - return rv -end - -function wifi_network(id) - local ntm = require "luci.model.network".init() - local net = ntm:get_wifinet(id) - if net then - local dev = net:get_device() - if dev then - return { - id = id, - name = net:shortname(), - link = net:adminlink(), - up = net:is_up(), - mode = net:active_mode(), - ssid = net:active_ssid(), - bssid = net:active_bssid(), - encryption = net:active_encryption(), - frequency = net:frequency(), - channel = net:channel(), - signal = net:signal(), - quality = net:signal_percent(), - noise = net:noise(), - bitrate = net:bitrate(), - ifname = net:ifname(), - country = net:country(), - txpower = net:txpower(), - txpoweroff = net:txpower_offset(), - disabled = (dev:get("disabled") == "1" or - net:get("disabled") == "1"), - device = { - up = dev:is_up(), - device = dev:name(), - name = dev:get_i18n() - } - } - end - end - return { } -end - -function wifi_assoclist() - local sys = require "luci.sys" - local ntm = require "luci.model.network".init() - local hosts = sys.net.host_hints() - - local assoc = {} - local _, dev, net, bss - - for _, dev in ipairs(ntm:get_wifidevs()) do - local radioname = dev:get_i18n() - - for _, net in ipairs(dev:get_wifinets()) do - local netname = net:shortname() - local netlink = net:adminlink() - local ifname = net:ifname() - - for _, bss in pairs(net:assoclist() or {}) do - local host = hosts[_] - - bss.bssid = _ - bss.ifname = ifname - bss.radio = radioname - bss.name = netname - bss.link = netlink - - bss.host_name = (host) and (host.name or host.ipv4 or host.ipv6) - bss.host_hint = (host and host.name and (host.ipv4 or host.ipv6)) and (host.ipv4 or host.ipv6) - - assoc[#assoc+1] = bss - end - end - end - - table.sort(assoc, function(a, b) - if a.radio ~= b.radio then - return a.radio < b.radio - elseif a.ifname ~= b.ifname then - return a.ifname < b.ifname - else - return a.bssid < b.bssid - end - end) - - return assoc -end - -function switch_status(devs) - local dev - local switches = { } - for dev in devs:gmatch("[^%s,]+") do - local ports = { } - local swc = io.popen("swconfig dev %s show" - % luci.util.shellquote(dev), "r") - - if swc then - local l - repeat - l = swc:read("*l") - if l then - local port, up = l:match("port:(%d+) link:(%w+)") - if port then - local speed = l:match(" speed:(%d+)") - local duplex = l:match(" (%w+)-duplex") - local txflow = l:match(" (txflow)") - local rxflow = l:match(" (rxflow)") - local auto = l:match(" (auto)") - - ports[#ports+1] = { - port = tonumber(port) or 0, - speed = tonumber(speed) or 0, - link = (up == "up"), - duplex = (duplex == "full"), - rxflow = (not not rxflow), - txflow = (not not txflow), - auto = (not not auto) - } - end - end - until not l - swc:close() - end - switches[dev] = ports - end - return switches -end diff --git a/luci-base/luasrc/tools/webadmin.lua b/luci-base/luasrc/tools/webadmin.lua deleted file mode 100644 index 106810aa0..000000000 --- a/luci-base/luasrc/tools/webadmin.lua +++ /dev/null @@ -1,105 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.tools.webadmin", package.seeall) - -local util = require "luci.util" -local uci = require "luci.model.uci" -local ip = require "luci.ip" - -function byte_format(byte) - local suff = {"B", "KB", "MB", "GB", "TB"} - for i=1, 5 do - if byte > 1024 and i < 5 then - byte = byte / 1024 - else - return string.format("%.2f %s", byte, suff[i]) - end - end -end - -function date_format(secs) - local suff = {"min", "h", "d"} - local mins = 0 - local hour = 0 - local days = 0 - - secs = math.floor(secs) - if secs > 60 then - mins = math.floor(secs / 60) - secs = secs % 60 - end - - if mins > 60 then - hour = math.floor(mins / 60) - mins = mins % 60 - end - - if hour > 24 then - days = math.floor(hour / 24) - hour = hour % 24 - end - - if days > 0 then - return string.format("%.0fd %02.0fh %02.0fmin %02.0fs", days, hour, mins, secs) - else - return string.format("%02.0fh %02.0fmin %02.0fs", hour, mins, secs) - end -end - -function cbi_add_networks(field) - uci.cursor():foreach("network", "interface", - function (section) - if section[".name"] ~= "loopback" then - field:value(section[".name"]) - end - end - ) - field.titleref = luci.dispatcher.build_url("admin", "network", "network") -end - -function cbi_add_knownips(field) - local _, n - for _, n in ipairs(ip.neighbors({ family = 4 })) do - if n.dest then - field:value(n.dest:string()) - end - end -end - -function firewall_find_zone(name) - local find - - luci.model.uci.cursor():foreach("firewall", "zone", - function (section) - if section.name == name then - find = section[".name"] - end - end - ) - - return find -end - -function iface_get_network(iface) - local link = ip.link(tostring(iface)) - if link.master then - iface = link.master - end - - local cur = uci.cursor() - local dump = util.ubus("network.interface", "dump", { }) - if dump then - local _, net - for _, net in ipairs(dump.interface) do - if net.l3_device == iface or net.device == iface then - -- cross check with uci to filter out @name style aliases - local uciname = cur:get("network", net.interface, "ifname") - if type(uciname) == "string" and uciname:sub(1,1) ~= "@" or uciname then - return net.interface - end - end - end - end -end diff --git a/luci-base/luasrc/util.lua b/luci-base/luasrc/util.lua deleted file mode 100644 index f16b3afb2..000000000 --- a/luci-base/luasrc/util.lua +++ /dev/null @@ -1,777 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local io = require "io" -local math = require "math" -local table = require "table" -local debug = require "debug" -local ldebug = require "luci.debug" -local string = require "string" -local coroutine = require "coroutine" -local tparser = require "luci.template.parser" -local json = require "luci.jsonc" -local lhttp = require "lucihttp" - -local _ubus = require "ubus" -local _ubus_connection = nil - -local getmetatable, setmetatable = getmetatable, setmetatable -local rawget, rawset, unpack, select = rawget, rawset, unpack, select -local tostring, type, assert, error = tostring, type, assert, error -local ipairs, pairs, next, loadstring = ipairs, pairs, next, loadstring -local require, pcall, xpcall = require, pcall, xpcall -local collectgarbage, get_memory_limit = collectgarbage, get_memory_limit - -module "luci.util" - --- --- Pythonic string formatting extension --- -getmetatable("").__mod = function(a, b) - local ok, res - - if not b then - return a - elseif type(b) == "table" then - local k, _ - for k, _ in pairs(b) do if type(b[k]) == "userdata" then b[k] = tostring(b[k]) end end - - ok, res = pcall(a.format, a, unpack(b)) - if not ok then - error(res, 2) - end - return res - else - if type(b) == "userdata" then b = tostring(b) end - - ok, res = pcall(a.format, a, b) - if not ok then - error(res, 2) - end - return res - end -end - - --- --- Class helper routines --- - --- Instantiates a class -local function _instantiate(class, ...) - local inst = setmetatable({}, {__index = class}) - - if inst.__init__ then - inst:__init__(...) - end - - return inst -end - --- The class object can be instantiated by calling itself. --- Any class functions or shared parameters can be attached to this object. --- Attaching a table to the class object makes this table shared between --- all instances of this class. For object parameters use the __init__ function. --- Classes can inherit member functions and values from a base class. --- Class can be instantiated by calling them. All parameters will be passed --- to the __init__ function of this class - if such a function exists. --- The __init__ function must be used to set any object parameters that are not shared --- with other objects of this class. Any return values will be ignored. -function class(base) - return setmetatable({}, { - __call = _instantiate, - __index = base - }) -end - -function instanceof(object, class) - local meta = getmetatable(object) - while meta and meta.__index do - if meta.__index == class then - return true - end - meta = getmetatable(meta.__index) - end - return false -end - - --- --- Scope manipulation routines --- - -coxpt = setmetatable({}, { __mode = "kv" }) - -local tl_meta = { - __mode = "k", - - __index = function(self, key) - local t = rawget(self, coxpt[coroutine.running()] - or coroutine.running() or 0) - return t and t[key] - end, - - __newindex = function(self, key, value) - local c = coxpt[coroutine.running()] or coroutine.running() or 0 - local r = rawget(self, c) - if not r then - rawset(self, c, { [key] = value }) - else - r[key] = value - end - end -} - --- the current active coroutine. A thread local store is private a table object --- whose values can't be accessed from outside of the running coroutine. -function threadlocal(tbl) - return setmetatable(tbl or {}, tl_meta) -end - - --- --- Debugging routines --- - -function perror(obj) - return io.stderr:write(tostring(obj) .. "\n") -end - -function dumptable(t, maxdepth, i, seen) - i = i or 0 - seen = seen or setmetatable({}, {__mode="k"}) - - for k,v in pairs(t) do - perror(string.rep("\t", i) .. tostring(k) .. "\t" .. tostring(v)) - if type(v) == "table" and (not maxdepth or i < maxdepth) then - if not seen[v] then - seen[v] = true - dumptable(v, maxdepth, i+1, seen) - else - perror(string.rep("\t", i) .. "*** RECURSION ***") - end - end - end -end - - --- --- String and data manipulation routines --- - -function pcdata(value) - return value and tparser.pcdata(tostring(value)) -end - -function urlencode(value) - if value ~= nil then - local str = tostring(value) - return lhttp.urlencode(str, lhttp.ENCODE_IF_NEEDED + lhttp.ENCODE_FULL) - or str - end - return nil -end - -function urldecode(value, decode_plus) - if value ~= nil then - local flag = decode_plus and lhttp.DECODE_PLUS or 0 - local str = tostring(value) - return lhttp.urldecode(str, lhttp.DECODE_IF_NEEDED + flag) - or str - end - return nil -end - -function striptags(value) - return value and tparser.striptags(tostring(value)) -end - -function shellquote(value) - return string.format("'%s'", string.gsub(value or "", "'", "'\\''")) -end - --- for bash, ash and similar shells single-quoted strings are taken --- literally except for single quotes (which terminate the string) --- (and the exception noted below for dash (-) at the start of a --- command line parameter). -function shellsqescape(value) - local res - res, _ = string.gsub(value, "'", "'\\''") - return res -end - --- bash, ash and other similar shells interpret a dash (-) at the start --- of a command-line parameters as an option indicator regardless of --- whether it is inside a single-quoted string. It must be backlash --- escaped to resolve this. This requires in some funky special-case --- handling. It may actually be a property of the getopt function --- rather than the shell proper. -function shellstartsqescape(value) - res, _ = string.gsub(value, "^\-", "\\-") - res, _ = string.gsub(res, "^-", "\-") - return shellsqescape(value) -end - --- containing the resulting substrings. The optional max parameter specifies --- the number of bytes to process, regardless of the actual length of the given --- string. The optional last parameter, regex, specifies whether the separator --- sequence is interpreted as regular expression. --- pattern as regular expression (optional, default is false) -function split(str, pat, max, regex) - pat = pat or "\n" - max = max or #str - - local t = {} - local c = 1 - - if #str == 0 then - return {""} - end - - if #pat == 0 then - return nil - end - - if max == 0 then - return str - end - - repeat - local s, e = str:find(pat, c, not regex) - max = max - 1 - if s and max < 0 then - t[#t+1] = str:sub(c) - else - t[#t+1] = str:sub(c, s and s - 1) - end - c = e and e + 1 or #str + 1 - until not s or max < 0 - - return t -end - -function trim(str) - return (str:gsub("^%s*(.-)%s*$", "%1")) -end - -function cmatch(str, pat) - local count = 0 - for _ in str:gmatch(pat) do count = count + 1 end - return count -end - --- one token per invocation, the tokens are separated by whitespace. If the --- input value is a table, it is transformed into a string first. A nil value --- will result in a valid interator which aborts with the first invocation. -function imatch(v) - if type(v) == "table" then - local k = nil - return function() - k = next(v, k) - return v[k] - end - - elseif type(v) == "number" or type(v) == "boolean" then - local x = true - return function() - if x then - x = false - return tostring(v) - end - end - - elseif type(v) == "userdata" or type(v) == "string" then - return tostring(v):gmatch("%S+") - end - - return function() end -end - --- value or 0 if the unit is unknown. Upper- or lower case is irrelevant. --- Recognized units are: --- o "y" - one year (60*60*24*366) --- o "m" - one month (60*60*24*31) --- o "w" - one week (60*60*24*7) --- o "d" - one day (60*60*24) --- o "h" - one hour (60*60) --- o "min" - one minute (60) --- o "kb" - one kilobyte (1024) --- o "mb" - one megabyte (1024*1024) --- o "gb" - one gigabyte (1024*1024*1024) --- o "kib" - one si kilobyte (1000) --- o "mib" - one si megabyte (1000*1000) --- o "gib" - one si gigabyte (1000*1000*1000) -function parse_units(ustr) - - local val = 0 - - -- unit map - local map = { - -- date stuff - y = 60 * 60 * 24 * 366, - m = 60 * 60 * 24 * 31, - w = 60 * 60 * 24 * 7, - d = 60 * 60 * 24, - h = 60 * 60, - min = 60, - - -- storage sizes - kb = 1024, - mb = 1024 * 1024, - gb = 1024 * 1024 * 1024, - - -- storage sizes (si) - kib = 1000, - mib = 1000 * 1000, - gib = 1000 * 1000 * 1000 - } - - -- parse input string - for spec in ustr:lower():gmatch("[0-9%.]+[a-zA-Z]*") do - - local num = spec:gsub("[^0-9%.]+$","") - local spn = spec:gsub("^[0-9%.]+", "") - - if map[spn] or map[spn:sub(1,1)] then - val = val + num * ( map[spn] or map[spn:sub(1,1)] ) - else - val = val + num - end - end - - - return val -end - --- also register functions above in the central string class for convenience -string.pcdata = pcdata -string.striptags = striptags -string.split = split -string.trim = trim -string.cmatch = cmatch -string.parse_units = parse_units - - -function append(src, ...) - for i, a in ipairs({...}) do - if type(a) == "table" then - for j, v in ipairs(a) do - src[#src+1] = v - end - else - src[#src+1] = a - end - end - return src -end - -function combine(...) - return append({}, ...) -end - -function contains(table, value) - for k, v in pairs(table) do - if value == v then - return k - end - end - return false -end - --- Both table are - in fact - merged together. -function update(t, updates) - for k, v in pairs(updates) do - t[k] = v - end -end - -function keys(t) - local keys = { } - if t then - for k, _ in kspairs(t) do - keys[#keys+1] = k - end - end - return keys -end - -function clone(object, deep) - local copy = {} - - for k, v in pairs(object) do - if deep and type(v) == "table" then - v = clone(v, deep) - end - copy[k] = v - end - - return setmetatable(copy, getmetatable(object)) -end - - --- Serialize the contents of a table value. -function _serialize_table(t, seen) - assert(not seen[t], "Recursion detected.") - seen[t] = true - - local data = "" - local idata = "" - local ilen = 0 - - for k, v in pairs(t) do - if type(k) ~= "number" or k < 1 or math.floor(k) ~= k or ( k - #t ) > 3 then - k = serialize_data(k, seen) - v = serialize_data(v, seen) - data = data .. ( #data > 0 and ", " or "" ) .. - '[' .. k .. '] = ' .. v - elseif k > ilen then - ilen = k - end - end - - for i = 1, ilen do - local v = serialize_data(t[i], seen) - idata = idata .. ( #idata > 0 and ", " or "" ) .. v - end - - return idata .. ( #data > 0 and #idata > 0 and ", " or "" ) .. data -end - --- with loadstring(). -function serialize_data(val, seen) - seen = seen or setmetatable({}, {__mode="k"}) - - if val == nil then - return "nil" - elseif type(val) == "number" then - return val - elseif type(val) == "string" then - return "%q" % val - elseif type(val) == "boolean" then - return val and "true" or "false" - elseif type(val) == "function" then - return "loadstring(%q)" % get_bytecode(val) - elseif type(val) == "table" then - return "{ " .. _serialize_table(val, seen) .. " }" - else - return '"[unhandled data type:' .. type(val) .. ']"' - end -end - -function restore_data(str) - return loadstring("return " .. str)() -end - - --- --- Byte code manipulation routines --- - --- will be stripped before it is returned. -function get_bytecode(val) - local code - - if type(val) == "function" then - code = string.dump(val) - else - code = string.dump( loadstring( "return " .. serialize_data(val) ) ) - end - - return code -- and strip_bytecode(code) -end - --- numbers and debugging numbers will be discarded. Original version by --- Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html) -function strip_bytecode(code) - local version, format, endian, int, size, ins, num, lnum = code:byte(5, 12) - local subint - if endian == 1 then - subint = function(code, i, l) - local val = 0 - for n = l, 1, -1 do - val = val * 256 + code:byte(i + n - 1) - end - return val, i + l - end - else - subint = function(code, i, l) - local val = 0 - for n = 1, l, 1 do - val = val * 256 + code:byte(i + n - 1) - end - return val, i + l - end - end - - local function strip_function(code) - local count, offset = subint(code, 1, size) - local stripped = { string.rep("\0", size) } - local dirty = offset + count - offset = offset + count + int * 2 + 4 - offset = offset + int + subint(code, offset, int) * ins - count, offset = subint(code, offset, int) - for n = 1, count do - local t - t, offset = subint(code, offset, 1) - if t == 1 then - offset = offset + 1 - elseif t == 4 then - offset = offset + size + subint(code, offset, size) - elseif t == 3 then - offset = offset + num - elseif t == 254 or t == 9 then - offset = offset + lnum - end - end - count, offset = subint(code, offset, int) - stripped[#stripped+1] = code:sub(dirty, offset - 1) - for n = 1, count do - local proto, off = strip_function(code:sub(offset, -1)) - stripped[#stripped+1] = proto - offset = offset + off - 1 - end - offset = offset + subint(code, offset, int) * int + int - count, offset = subint(code, offset, int) - for n = 1, count do - offset = offset + subint(code, offset, size) + size + int * 2 - end - count, offset = subint(code, offset, int) - for n = 1, count do - offset = offset + subint(code, offset, size) + size - end - stripped[#stripped+1] = string.rep("\0", int * 3) - return table.concat(stripped), offset - end - - return code:sub(1,12) .. strip_function(code:sub(13,-1)) -end - - --- --- Sorting iterator functions --- - -function _sortiter( t, f ) - local keys = { } - - local k, v - for k, v in pairs(t) do - keys[#keys+1] = k - end - - local _pos = 0 - - table.sort( keys, f ) - - return function() - _pos = _pos + 1 - if _pos <= #keys then - return keys[_pos], t[keys[_pos]], _pos - end - end -end - --- the provided callback function. -function spairs(t,f) - return _sortiter( t, f ) -end - --- The table pairs are sorted by key. -function kspairs(t) - return _sortiter( t ) -end - --- The table pairs are sorted by value. -function vspairs(t) - return _sortiter( t, function (a,b) return t[a] < t[b] end ) -end - - --- --- System utility functions --- - -function bigendian() - return string.byte(string.dump(function() end), 7) == 0 -end - -function exec(command) - local pp = io.popen(command) - local data = pp:read("*a") - pp:close() - - return data -end - -function execi(command) - local pp = io.popen(command) - - return pp and function() - local line = pp:read() - - if not line then - pp:close() - end - - return line - end -end - --- Deprecated -function execl(command) - local pp = io.popen(command) - local line = "" - local data = {} - - while true do - line = pp:read() - if (line == nil) then break end - data[#data+1] = line - end - pp:close() - - return data -end - - -local ubus_codes = { - "INVALID_COMMAND", - "INVALID_ARGUMENT", - "METHOD_NOT_FOUND", - "NOT_FOUND", - "NO_DATA", - "PERMISSION_DENIED", - "TIMEOUT", - "NOT_SUPPORTED", - "UNKNOWN_ERROR", - "CONNECTION_FAILED" -} - -local function ubus_return(...) - if select('#', ...) == 2 then - local rv, err = select(1, ...), select(2, ...) - if rv == nil and type(err) == "number" then - return nil, err, ubus_codes[err] - end - end - - return ... -end - -function ubus(object, method, data) - if not _ubus_connection then - _ubus_connection = _ubus.connect() - assert(_ubus_connection, "Unable to establish ubus connection") - end - - if object and method then - if type(data) ~= "table" then - data = { } - end - return ubus_return(_ubus_connection:call(object, method, data)) - elseif object then - return _ubus_connection:signatures(object) - else - return _ubus_connection:objects() - end -end - -function serialize_json(x, cb) - local js = json.stringify(x) - if type(cb) == "function" then - cb(js) - else - return js - end -end - - -function libpath() - return require "nixio.fs".dirname(ldebug.__file__) -end - -function checklib(fullpathexe, wantedlib) - local fs = require "nixio.fs" - local haveldd = fs.access('/usr/bin/ldd') - local haveexe = fs.access(fullpathexe) - if not haveldd or not haveexe then - return false - end - local libs = exec(string.format("/usr/bin/ldd %s", shellquote(fullpathexe))) - if not libs then - return false - end - for k, v in ipairs(split(libs)) do - if v:find(wantedlib) then - return true - end - end - return false -end - -------------------------------------------------------------------------------- --- Coroutine safe xpcall and pcall versions --- --- Encapsulates the protected calls with a coroutine based loop, so errors can --- be dealed without the usual Lua 5.x pcall/xpcall issues with coroutines --- yielding inside the call to pcall or xpcall. --- --- Authors: Roberto Ierusalimschy and Andre Carregal --- Contributors: Thomas Harning Jr., Ignacio Burgueño, Fabio Mascarenhas --- --- Copyright 2005 - Kepler Project --- --- $Id: coxpcall.lua,v 1.13 2008/05/19 19:20:02 mascarenhas Exp $ -------------------------------------------------------------------------------- - -------------------------------------------------------------------------------- --- Implements xpcall with coroutines -------------------------------------------------------------------------------- -local coromap = setmetatable({}, { __mode = "k" }) - -local function handleReturnValue(err, co, status, ...) - if not status then - return false, err(debug.traceback(co, (...)), ...) - end - if coroutine.status(co) == 'suspended' then - return performResume(err, co, coroutine.yield(...)) - else - return true, ... - end -end - -function performResume(err, co, ...) - return handleReturnValue(err, co, coroutine.resume(co, ...)) -end - -local function id(trace, ...) - return trace -end - -function coxpcall(f, err, ...) - local current = coroutine.running() - if not current then - if err == id then - return pcall(f, ...) - else - if select("#", ...) > 0 then - local oldf, params = f, { ... } - f = function() return oldf(unpack(params)) end - end - return xpcall(f, err) - end - else - local res, co = pcall(coroutine.create, f) - if not res then - local newf = function(...) return f(...) end - co = coroutine.create(newf) - end - coromap[co] = current - coxpt[co] = coxpt[current] or current or 0 - return performResume(err, co, ...) - end -end - -function copcall(f, ...) - return coxpcall(f, id, ...) -end diff --git a/luci-base/luasrc/util.luadoc b/luci-base/luasrc/util.luadoc deleted file mode 100644 index c4f28d039..000000000 --- a/luci-base/luasrc/util.luadoc +++ /dev/null @@ -1,413 +0,0 @@ ----[[ -LuCI utility functions. -]] -module "luci.util" - ----[[ -Create a Class object (Python-style object model). - -The class object can be instantiated by calling itself. -Any class functions or shared parameters can be attached to this object. -Attaching a table to the class object makes this table shared between -all instances of this class. For object parameters use the __init__ function. -Classes can inherit member functions and values from a base class. -Class can be instantiated by calling them. All parameters will be passed -to the __init__ function of this class - if such a function exists. -The __init__ function must be used to set any object parameters that are not shared -with other objects of this class. Any return values will be ignored. - -@class function -@name class -@param base The base class to inherit from (optional) -@return A class object -@see instanceof -@see clone -]] - ----[[ -Test whether the given object is an instance of the given class. - -@class function -@name instanceof -@param object Object instance -@param class Class object to test against -@return Boolean indicating whether the object is an instance -@see class -@see clone -]] - ----[[ -Create a new or get an already existing thread local store associated with -the current active coroutine. - -A thread local store is private a table object -whose values can't be accessed from outside of the running coroutine. - -@class function -@name threadlocal -@return Table value representing the corresponding thread local store -]] - ----[[ -Write given object to stderr. - -@class function -@name perror -@param obj Value to write to stderr -@return Boolean indicating whether the write operation was successful -]] - ----[[ -Recursively dumps a table to stdout, useful for testing and debugging. - -@class function -@name dumptable -@param t Table value to dump -@param maxdepth Maximum depth -@return Always nil -]] - ----[[ -Create valid XML PCDATA from given string. - -@class function -@name pcdata -@param value String value containing the data to escape -@return String value containing the escaped data -]] - ----[[ -Decode an URL-encoded string - optionally decoding the "+" sign to space. - -@class function -@name urldecode -@param str Input string in x-www-urlencoded format -@param decode_plus Decode "+" signs to spaces if true (optional) -@return The decoded string -@see urlencode -]] - ----[[ -URL-encode given string. - -@class function -@name urlencode -@param str String to encode -@return String containing the encoded data -@see urldecode -]] - ----[[ -Strip HTML tags from given string. - -@class function -@name striptags -@param value String containing the HTML text -@return String with HTML tags stripped of -]] - ----[[ -Safely quote value for use in shell commands. - -@class function -@name shellquote -@param value String containing the value to quote -@return Single-quote enclosed string with embedded quotes escaped -]] - ----[[ -Splits given string on a defined separator sequence and return a table -containing the resulting substrings. - -The optional max parameter specifies the number of bytes to process, -regardless of the actual length of the given string. The optional last -parameter, regex, specifies whether the separator sequence is -nterpreted as regular expression. - -@class function -@name split -@param str String value containing the data to split up -@param pat String with separator pattern (optional, defaults to "\n") -@param max Maximum times to split (optional) -@param regex Boolean indicating whether to interpret the separator --- pattern as regular expression (optional, default is false) -@return Table containing the resulting substrings -]] - ----[[ -Remove leading and trailing whitespace from given string value. - -@class function -@name trim -@param str String value containing whitespace padded data -@return String value with leading and trailing space removed -]] - ----[[ -Count the occurrences of given substring in given string. - -@class function -@name cmatch -@param str String to search in -@param pattern String containing pattern to find -@return Number of found occurrences -]] - ----[[ -Return a matching iterator for the given value. - -The iterator will return one token per invocation, the tokens are separated by -whitespace. If the input value is a table, it is transformed into a string first. -A nil value will result in a valid interator which aborts with the first invocation. - -@class function -@name imatch -@param val The value to scan (table, string or nil) -@return Iterator which returns one token per call -]] - ----[[ -Parse certain units from the given string and return the canonical integer -value or 0 if the unit is unknown. - -Upper- or lower case is irrelevant. -Recognized units are: - --- o "y" - one year (60*60*24*366) - o "m" - one month (60*60*24*31) - o "w" - one week (60*60*24*7) - o "d" - one day (60*60*24) - o "h" - one hour (60*60) - o "min" - one minute (60) - o "kb" - one kilobyte (1024) - o "mb" - one megabyte (1024*1024) - o "gb" - one gigabyte (1024*1024*1024) - o "kib" - one si kilobyte (1000) - o "mib" - one si megabyte (1000*1000) - o "gib" - one si gigabyte (1000*1000*1000) - -@class function -@name parse_units -@param ustr String containing a numerical value with trailing unit -@return Number containing the canonical value -]] - ----[[ -Appends numerically indexed tables or single objects to a given table. - -@class function -@name append -@param src Target table -@param ... Objects to insert -@return Target table -]] - ----[[ -Combines two or more numerically indexed tables and single objects into one table. - -@class function -@name combine -@param tbl1 Table value to combine -@param tbl2 Table value to combine -@param ... More tables to combine -@return Table value containing all values of given tables -]] - ----[[ -Checks whether the given table contains the given value. - -@class function -@name contains -@param table Table value -@param value Value to search within the given table -@return Number indicating the first index at which the given value occurs --- within table or false. -]] - ----[[ -Update values in given table with the values from the second given table. - -Both table are - in fact - merged together. - -@class function -@name update -@param t Table which should be updated -@param updates Table containing the values to update -@return Always nil -]] - ----[[ -Retrieve all keys of given associative table. - -@class function -@name keys -@param t Table to extract keys from -@return Sorted table containing the keys -]] - ----[[ -Clones the given object and return it's copy. - -@class function -@name clone -@param object Table value to clone -@param deep Boolean indicating whether to do recursive cloning -@return Cloned table value -]] - ----[[ -Recursively serialize given data to lua code, suitable for restoring -with loadstring(). - -@class function -@name serialize_data -@param val Value containing the data to serialize -@return String value containing the serialized code -@see restore_data -@see get_bytecode -]] - ----[[ -Restore data previously serialized with serialize_data(). - -@class function -@name restore_data -@param str String containing the data to restore -@return Value containing the restored data structure -@see serialize_data -@see get_bytecode -]] - ----[[ -Return the current runtime bytecode of the given data. The byte code -will be stripped before it is returned. - -@class function -@name get_bytecode -@param val Value to return as bytecode -@return String value containing the bytecode of the given data -]] - ----[[ -Strips unnescessary lua bytecode from given string. - -Information like line numbers and debugging numbers will be discarded. -Original version by Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html) - -@class function -@name strip_bytecode -@param code String value containing the original lua byte code -@return String value containing the stripped lua byte code -]] - ----[[ -Return a key, value iterator which returns the values sorted according to -the provided callback function. - -@class function -@name spairs -@param t The table to iterate -@param f A callback function to decide the order of elements -@return Function value containing the corresponding iterator -]] - ----[[ -Return a key, value iterator for the given table. - -The table pairs are sorted by key. - -@class function -@name kspairs -@param t The table to iterate -@return Function value containing the corresponding iterator -]] - ----[[ -Return a key, value iterator for the given table. - -The table pairs are sorted by value. - -@class function -@name vspairs -@param t The table to iterate -@return Function value containing the corresponding iterator -]] - ----[[ -Test whether the current system is operating in big endian mode. - -@class function -@name bigendian -@return Boolean value indicating whether system is big endian -]] - ----[[ -Execute given commandline and gather stdout. - -@class function -@name exec -@param command String containing command to execute -@return String containing the command's stdout -]] - ----[[ -Return a line-buffered iterator over the output of given command. - -@class function -@name execi -@param command String containing the command to execute -@return Iterator -]] - ----[[ -Issue an ubus call. - -@class function -@name ubus -@param object String containing the ubus object to call -@param method String containing the ubus method to call -@param values Table containing the values to pass -@return Table containin the ubus result -]] - ----[[ -Convert data structure to JSON - -@class function -@name serialize_json -@param data The data to serialize -@param writer A function to write a chunk of JSON data (optional) -@return String containing the JSON if called without write callback -]] - ----[[ -Returns the absolute path to LuCI base directory. - -@class function -@name libpath -@return String containing the directory path -]] - ----[[ -This is a coroutine-safe drop-in replacement for Lua's "xpcall"-function - -@class function -@name coxpcall -@param f Lua function to be called protected -@param err Custom error handler -@param ... Parameters passed to the function -@return A boolean whether the function call succeeded and the return --- values of either the function or the error handler -]] - ----[[ -This is a coroutine-safe drop-in replacement for Lua's "pcall"-function - -@class function -@name copcall -@param f Lua function to be called protected -@param ... Parameters passed to the function -@return A boolean whether the function call succeeded and the returns --- values of the function or the error object -]] - diff --git a/luci-base/luasrc/version.lua b/luci-base/luasrc/version.lua deleted file mode 100644 index 8af2e8061..000000000 --- a/luci-base/luasrc/version.lua +++ /dev/null @@ -1,9 +0,0 @@ --- Licensed to the public under the Apache License 2.0. - -module "luci.version" - -distname = "Host System" -distversion = "SDK" - -luciname = "LuCI" -luciversion = "SVN" diff --git a/luci-base/luasrc/view/cbi/apply_widget.htm b/luci-base/luasrc/view/cbi/apply_widget.htm deleted file mode 100644 index 4d7e9c56e..000000000 --- a/luci-base/luasrc/view/cbi/apply_widget.htm +++ /dev/null @@ -1,228 +0,0 @@ -<% export("cbi_apply_widget", function(redirect_ok, rollback_token) -%> - - - - -<%- end) %> diff --git a/luci-base/luasrc/view/cbi/browser.htm b/luci-base/luasrc/view/cbi/browser.htm deleted file mode 100644 index 2abc975e8..000000000 --- a/luci-base/luasrc/view/cbi/browser.htm +++ /dev/null @@ -1,8 +0,0 @@ -<% local v = self:cfgvalue(section) -%> -<%+cbi/valueheader%> - /> - -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/button.htm b/luci-base/luasrc/view/cbi/button.htm deleted file mode 100644 index 6ccba58f2..000000000 --- a/luci-base/luasrc/view/cbi/button.htm +++ /dev/null @@ -1,7 +0,0 @@ -<%+cbi/valueheader%> - <% if self:cfgvalue(section) ~= false then %> - " type="submit"<%= attr("name", cbid) .. attr("id", cbid) .. attr("value", self.inputtitle or self.title)%> /> - <% else %> - - - <% end %> -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/cell_valuefooter.htm b/luci-base/luasrc/view/cbi/cell_valuefooter.htm deleted file mode 100644 index bdd6bc968..000000000 --- a/luci-base/luasrc/view/cbi/cell_valuefooter.htm +++ /dev/null @@ -1,2 +0,0 @@ -
    -
    diff --git a/luci-base/luasrc/view/cbi/cell_valueheader.htm b/luci-base/luasrc/view/cbi/cell_valueheader.htm deleted file mode 100644 index ea0568f40..000000000 --- a/luci-base/luasrc/view/cbi/cell_valueheader.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%- - local title = luci.util.trim(striptags(self.title)) - local descr = luci.util.trim(striptags(self.description)) - local ftype = self.typename or (self.template and self.template:gsub("^.+/", "")) --%> -
    0, "data-type", ftype) .. - ifattr(title and #title > 0, "data-title", title) .. - ifattr(descr and #descr > 0, "data-description", descr) -%>> -
    " data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>"> diff --git a/luci-base/luasrc/view/cbi/compound.htm b/luci-base/luasrc/view/cbi/compound.htm deleted file mode 100644 index 12d02bb1d..000000000 --- a/luci-base/luasrc/view/cbi/compound.htm +++ /dev/null @@ -1 +0,0 @@ -<%- self:render_children() %> diff --git a/luci-base/luasrc/view/cbi/delegator.htm b/luci-base/luasrc/view/cbi/delegator.htm deleted file mode 100644 index 4fd19265d..000000000 --- a/luci-base/luasrc/view/cbi/delegator.htm +++ /dev/null @@ -1,24 +0,0 @@ -<%- self.active:render() %> -
    - -<% for _, x in ipairs(self.chain) do %> - -<% end %> -<% if not self.disallow_pageactions then %> -<% if self.allow_finish and not self:get_next(self.current) then %> - -<% elseif self:get_next(self.current) then %> - -<% end %> -<% if self.allow_cancel then %> - -<% end %> -<% if self.allow_reset then %> - -<% end %> -<% if self.allow_back and self:get_prev(self.current) then %> - -<% end %> -<% end %> - -
    diff --git a/luci-base/luasrc/view/cbi/dropdown.htm b/luci-base/luasrc/view/cbi/dropdown.htm deleted file mode 100644 index cf8c03d22..000000000 --- a/luci-base/luasrc/view/cbi/dropdown.htm +++ /dev/null @@ -1,54 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local selected = { } - - if self.multiple then - local val - for val in luci.util.imatch(self:cfgvalue(section)) do - selected[val] = true - end - else - selected[self:cfgvalue(section)] = true - end - - if not next(selected) and self.default then - selected[self.default] = true - end --%> - -
    > -
      - <% local i, key; for i, key in pairs(self.keylist) do %> - > - <%=pcdata(self.vallist[i])%> - - <% end %> - <% if self.custom then %> -
    • - - /> -
    • - <% end %> -
    -
    - -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/dvalue.htm b/luci-base/luasrc/view/cbi/dvalue.htm deleted file mode 100644 index 78e6f323d..000000000 --- a/luci-base/luasrc/view/cbi/dvalue.htm +++ /dev/null @@ -1,13 +0,0 @@ -<%+cbi/valueheader%> -<% if self.href then %><% end -%> - <% - local val = self:cfgvalue(section) or self.default or "" - if not self.rawhtml then - write(pcdata(val)) - else - write(val) - end - %> -<%- if self.href then %><%end%> -" /> -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/dynlist.htm b/luci-base/luasrc/view/cbi/dynlist.htm deleted file mode 100644 index 4d0b50942..000000000 --- a/luci-base/luasrc/view/cbi/dynlist.htm +++ /dev/null @@ -1,27 +0,0 @@ -<%+cbi/valueheader%> -> -<% - local vals = self:cfgvalue(section) or {} - for i=1, #vals + 1 do - local val = vals[i] - if (val and #val > 0) or (i == 1) then -%> - />
    -<% end end %> -
    -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/error.htm b/luci-base/luasrc/view/cbi/error.htm deleted file mode 100644 index 75ec1082a..000000000 --- a/luci-base/luasrc/view/cbi/error.htm +++ /dev/null @@ -1,19 +0,0 @@ -
    - <% if self.title and #self.title > 0 then %>

    <%=self.title%>

    <% end %> - <% if self.description and #self.description > 0 then %>
    <%=self.description%>
    <% end %> - -

    - <%: The configuration file could not be loaded due to the following error: %>
    - <%=pcdata(self.error)%> -

    - - - -

    - <%: Edit the raw configuration data above to fix any error and hit "Save" to reload the page. %> -

    - -
    - -
    -
    diff --git a/luci-base/luasrc/view/cbi/filebrowser.htm b/luci-base/luasrc/view/cbi/filebrowser.htm deleted file mode 100644 index 806b1b5f4..000000000 --- a/luci-base/luasrc/view/cbi/filebrowser.htm +++ /dev/null @@ -1,113 +0,0 @@ - - - - - Filebrowser - LuCI - - - - - - <% - require("nixio.fs") - require("nixio.util") - require("luci.http") - require("luci.dispatcher") - - local field = luci.http.formvalue('field') - local request = luci.dispatcher.context.args - local path = { '' } - - for i = 1, #request do - if request[i] ~= '..' and #request[i] > 0 then - path[#path+1] = request[i] - end - end - - local filestat = nixio.fs.stat(table.concat(path, '/')) - local baseurl = { 'admin', 'filebrowser' } - - if filestat and filestat.type == "reg" then - path[#path] = '' - elseif not (filestat and filestat.type == "dir") then - path = { '', '' } - else - path[#path+1] = '' - end - - filepath = table.concat(path, '/') - - local entries = {} - local _, e - for _, e in luci.util.vspairs(nixio.util.consume((nixio.fs.dir(filepath)))) do - local p = filepath .. e - local s = nixio.fs.stat(p) - if s then - entries[#entries+1] = { - name = e, - path = p, - type = s.type - } - end - end - -%> -
    - Location: - <% for i, dir in ipairs(path) do %> - <% if i == 1 then %> - (root) - <% elseif next(path, i) then %> - <% baseurl[#baseurl+1] = luci.http.urlencode(dir) %> - / <%=pcdata(dir)%> - <% else %> - <% baseurl[#baseurl+1] = luci.http.urlencode(dir) %> - / <%=pcdata(dir)%> - <% end %> - <% end %> -
    - -
    - -
    -
      - <% for _, e in ipairs(entries) do if e.type == 'dir' then -%> -
    • - <%:Directory%> - <%=pcdata(e.name)%>/ -
    • - <% end end -%> - - <% for _, e in ipairs(entries) do if e.type ~= 'dir' then -%> -
    • - <%:File%> - <%=pcdata(e.name)%> -
    • - <% end end -%> -
    -
    - - diff --git a/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm b/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm deleted file mode 100644 index b38e4b13d..000000000 --- a/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm +++ /dev/null @@ -1,73 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local utl = require "luci.util" - local fwm = require "luci.model.firewall".init() - local nwm = require "luci.model.network".init() - - local zone, fwd, fz - local value = self:formvalue(section) - if not value or value == "-" then - value = self:cfgvalue(section) or self.default - end - - local def = fwm:get_defaults() - local zone = fwm:get_zone(value) - local empty = true - - local function render_zone(zone) --%> - -<%- - end --%> - -<% if zone then %> -
    -
    - <%=render_zone(zone)%> -
    - -
    - <% - for _, fwd in ipairs(zone:get_forwardings_by("src")) do - fz = fwd:dest_zone() - if fz then - empty = false - render_zone(fz) - end - end - if empty then - %> - - <% end %> -
    -
    -<% end %> - -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/firewall_zonelist.htm b/luci-base/luasrc/view/cbi/firewall_zonelist.htm deleted file mode 100644 index 3a108020b..000000000 --- a/luci-base/luasrc/view/cbi/firewall_zonelist.htm +++ /dev/null @@ -1,108 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local utl = require "luci.util" - local fwm = require "luci.model.firewall".init() - local nwm = require "luci.model.network".init() - - local zone, net, iface - local zones = fwm:get_zones() - local value = self:formvalue(section) - if not value or value == "-" then - value = self:cfgvalue(section) or self.default - end - - local selected = false - local checked = { } - - for value in utl.imatch(value) do - checked[value] = true - end - - if not next(checked) then - checked[""] = true - end --%> - -
    > - -
      - <% if self.allowlocal then %> -
    • > - - <%:Device%> - <% if self.allowany and self.allowlocal then -%> - (<%= self.alias ~= "dest" - and translate("output") or translate("input") %>) - <%- end %> - -
    • - <% elseif self.widget ~= "checkbox" and (self.rmempty or self.optional) then %> -
    • > - - <%:unspecified%> - -
    • - <% end %> - <% if self.allowany then %> -
    • > - - <%:Any zone%> - <% if self.allowany and self.allowlocal then %>(<%:forward%>)<% end %> - -
    • - <% end %> - <% - for _, zone in utl.spairs(zones, function(a,b) return (zones[a]:name() < zones[b]:name()) end) do - if zone:name() ~= self.exclude then - selected = selected or (value == zone:name()) - %> - > - - <%=zone:name()%>: - <%- - local zempty = true - for _, net in ipairs(zone:get_networks()) do - net = nwm:get_network(net) - if net then - zempty = false - -%> - <%=net:name()%>: - <%- - local nempty = true - for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do - nempty = false - %> - src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" /> - <% end %> - <% if nempty then %><%:(empty)%><% end -%> - - <%- end end -%> - <%- if zempty then %><%:(empty)%><% end -%> - - - <% end end %> - - <% if self.widget ~= "checkbox" and not self.nocreate then %> -
    • - - <%:create%>: - - - -
    • - <% end %> -
    -
    - -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/footer.htm b/luci-base/luasrc/view/cbi/footer.htm deleted file mode 100644 index ed632202c..000000000 --- a/luci-base/luasrc/view/cbi/footer.htm +++ /dev/null @@ -1,41 +0,0 @@ -<% - local display_back = (redirect and not flow.hidebackbtn) - local display_skip = (flow.skip) - local display_apply = (not autoapply and not flow.hideapplybtn) - local display_save = (not flow.hidesavebtn) - local display_reset = (not flow.hideresetbtn) - - if pageaction and - (display_back or display_skip or display_apply or display_save or display_reset) - then - %>
    <% - - if display_back then - %> <% - end - - if display_skip then - %> <% - end - - if display_apply then - %> <% - end - - if display_save then - %> <% - end - - if display_reset then - %> <% - end - - %>
    <% - end -%> - - - - - -<%+footer%> diff --git a/luci-base/luasrc/view/cbi/full_valuefooter.htm b/luci-base/luasrc/view/cbi/full_valuefooter.htm deleted file mode 100644 index d4ad093ef..000000000 --- a/luci-base/luasrc/view/cbi/full_valuefooter.htm +++ /dev/null @@ -1,12 +0,0 @@ - <% if self.description and #self.description > 0 then -%> - <% if not luci.util.instanceof(self, luci.cbi.DynamicList) and (not luci.util.instanceof(self, luci.cbi.Flag) or self.orientation == "horizontal") then -%> -
    - <%- end %> -
    - <%=self.description%> -
    - <%- end %> - <%- if self.title and #self.title > 0 then -%> -
    - <%- end -%> - diff --git a/luci-base/luasrc/view/cbi/full_valueheader.htm b/luci-base/luasrc/view/cbi/full_valueheader.htm deleted file mode 100644 index 10a554329..000000000 --- a/luci-base/luasrc/view/cbi/full_valueheader.htm +++ /dev/null @@ -1,9 +0,0 @@ -
    " data-index="<%=self.index%>" data-depends="<%=pcdata(self:deplist2json(section))%>"> - <%- if self.title and #self.title > 0 then -%> - -
    - <%- end -%> diff --git a/luci-base/luasrc/view/cbi/fvalue.htm b/luci-base/luasrc/view/cbi/fvalue.htm deleted file mode 100644 index 197d03cf3..000000000 --- a/luci-base/luasrc/view/cbi/fvalue.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%+cbi/valueheader%> - /> - /> - > -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/header.htm b/luci-base/luasrc/view/cbi/header.htm deleted file mode 100644 index 821fa3efa..000000000 --- a/luci-base/luasrc/view/cbi/header.htm +++ /dev/null @@ -1,18 +0,0 @@ -<%+header%> -
    > -
    - - - -
    diff --git a/luci-base/luasrc/view/cbi/lvalue.htm b/luci-base/luasrc/view/cbi/lvalue.htm deleted file mode 100644 index 34d02eeca..000000000 --- a/luci-base/luasrc/view/cbi/lvalue.htm +++ /dev/null @@ -1,43 +0,0 @@ -<% - local i, key - local br = self.orientation == "horizontal" and ' ' or '
    ' -%> - -<%+cbi/valueheader%> -<% if self.widget == "select" then %> - -<% elseif self.widget == "radio" then %> -
    - <% for i, key in pairs(self.keylist) do %> - > - /> - > - <%=pcdata(self.vallist[i])%> - - <% if i == self.size then write(br) end %> - <% end %> -
    -<% end %> -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/map.htm b/luci-base/luasrc/view/cbi/map.htm deleted file mode 100644 index d65a16167..000000000 --- a/luci-base/luasrc/view/cbi/map.htm +++ /dev/null @@ -1,40 +0,0 @@ -<%- if firstmap and messages then local msg; for _, msg in ipairs(messages) do -%> -
    <%=pcdata(msg)%>
    -<%- end end -%> - -
    - <% if self.title and #self.title > 0 then %>

    <%=self.title%>

    <% end %> - <% if self.description and #self.description > 0 then %>
    <%=self.description%>
    <% end %> - <% if self.tabbed then %> -
      - <%- self.selected_tab = luci.http.formvalue("tab.m-" .. self.config) %> - <% for i, section in ipairs(self.children) do %> - <%- if not self.selected_tab then self.selected_tab = section.sectiontype end %> -
    • - <%=section.title or section.section or section.sectiontype %> - <% if section.sectiontype == self.selected_tab then %><% end %> -
    • - <% end %> -
    - <% for i, section in ipairs(self.children) do %> -
    style="display:none"<% end %>> - <% section:render() %> -
    - - <% end %> - - <% if not self.save then -%> -
    - <% for _, section in ipairs(self.children) do %> - <% if section.error and section.error[section.section] then -%> -
    • - <%:One or more invalid/required values on tab%>: <%=section.title or section.section or section.sectiontype%> -
    - <%- end %> - <% end %> -
    - <%- end %> - <% else %> - <%- self:render_children() %> - <% end %> -
    diff --git a/luci-base/luasrc/view/cbi/mvalue.htm b/luci-base/luasrc/view/cbi/mvalue.htm deleted file mode 100644 index db17450d2..000000000 --- a/luci-base/luasrc/view/cbi/mvalue.htm +++ /dev/null @@ -1,43 +0,0 @@ -<% - local i, key - local v = self:valuelist(section) or {} --%> - -<%+cbi/valueheader%> -<% if self.widget == "select" then %> - -<% elseif self.widget == "checkbox" then %> -
    - <% for i, key in pairs(self.keylist) do %> - > - /> - > - <%=pcdata(self.vallist[i])%> - - <% if self.size and (i % self.size) == 0 then write('
    ') end %> - <% end %> -
    -<% end %> -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/network_ifacelist.htm b/luci-base/luasrc/view/cbi/network_ifacelist.htm deleted file mode 100644 index a97e9ef6d..000000000 --- a/luci-base/luasrc/view/cbi/network_ifacelist.htm +++ /dev/null @@ -1,91 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local utl = require "luci.util" - local net = require "luci.model.network".init() - local cbeid = luci.cbi.FEXIST_PREFIX .. self.config .. "." .. section .. "." .. self.option - - local iface - local ifaces = net:get_interfaces() - local value - - if self.map:formvalue(cbeid) == "1" then - value = self:formvalue(section) or self.default or "" - else - value = self:cfgvalue(section) or self.default - end - - local checked = { } - - if value then - for value in utl.imatch(value) do - for value in utl.imatch(value) do - checked[value] = true - end - end - else - local n = self.network and net:get_network(self.network) - if n then - local a = n:is_alias() - if a then - checked['@' .. a] = true - else - local i - for _, i in ipairs(n:get_interfaces() or { n:get_interface() }) do - checked[i:name()] = true - end - end - end - end --%> - - - -
    > - -
      - <% for _, iface in ipairs(ifaces) do - if (not self.noaliases or iface:type() ~= "alias") and - (not self.nobridges or not iface:is_bridge()) and - (not self.noinactive or iface:is_up()) and - iface:name() ~= self.exclude - then %> - > - src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" /> - <%=pcdata(iface:name())%> - - <%=pcdata(iface:get_i18n())%> - <% local ns = iface:get_networks(); if #ns > 0 then %>( - <%- local i, n; for i, n in ipairs(ns) do -%> - <%-= (i>1) and ', ' -%> - <%=n:name()%> - <%- end -%> - )<% end %> - - - <% end end %> - <% if not self.nocreate then %> -
    • - - <%:Custom Interface%>: - - -
    • - <% end %> -
    -
    - -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/network_netinfo.htm b/luci-base/luasrc/view/cbi/network_netinfo.htm deleted file mode 100644 index 4fd84112a..000000000 --- a/luci-base/luasrc/view/cbi/network_netinfo.htm +++ /dev/null @@ -1,27 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local value = self:formvalue(section) - if not value or value == "-" then - value = self:cfgvalue(section) or self.default - end - - local nwm = require "luci.model.network".init() - local net = nwm:get_network(value) --%> - -<% if net then %> -<%=net:name()%>: - <% - local empty = true - for _, iface in ipairs(net:get_interfaces() or { net:get_interface() }) do - if not iface:is_bridge() then - empty = false - %> - style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" /> - <% end end %> - <% if empty then %><%:(no interfaces attached)%><% end %> - -<% end %> - -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/network_netlist.htm b/luci-base/luasrc/view/cbi/network_netlist.htm deleted file mode 100644 index ba6ebb843..000000000 --- a/luci-base/luasrc/view/cbi/network_netlist.htm +++ /dev/null @@ -1,81 +0,0 @@ -<%+cbi/valueheader%> - -<%- - local utl = require "luci.util" - local nwm = require "luci.model.network".init() - - local net, iface - local networks = nwm:get_networks() - local value = self:formvalue(section) - - self.cast = nil - - if not value or value == "-" then - value = self:cfgvalue(section) or self.default - end - - local checked = { } - for value in utl.imatch(value) do - checked[value] = true - end --%> - -
    > - -
      - <% if self.widget ~= "checkbox" then %> -
    • > - <%:unspecified%> -
    • - <% end %> - - <% for _, net in ipairs(networks) do - if (net:name() ~= "loopback") and - (net:name() ~= self.exclude) and - (not self.novirtual or not net:is_virtual()) - then %> - > - <%=net:name()%>: - <% - local empty = true - for _, iface in ipairs(net:is_bridge() and net:get_interfaces() or { net:get_interface() }) do - if not iface:is_bridge() then - empty = false - -%> - style="width:16px; height:16px; vertical-align:middle" src="<%=resource%>/icons/<%=iface:type()%><%=iface:is_up() and "" or "_disabled"%>.png" /> - <%- end end %> - <% if empty then %> - <%:(no interfaces attached)%> - - - <% end %> - - - <% end end %> - - <% if not self.nocreate then %> -
    • > - - <%- if self.widget == "checkbox" then -%> - <%:create:%> - <%- else -%> - <%:unspecified -or- create:%> - <%- end -%> - - - -
    • - <% end %> -
    -
    - -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/nsection.htm b/luci-base/luasrc/view/cbi/nsection.htm deleted file mode 100644 index 63abc5773..000000000 --- a/luci-base/luasrc/view/cbi/nsection.htm +++ /dev/null @@ -1,30 +0,0 @@ -<% if self:cfgvalue(self.section) then section = self.section %> -
    - <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> - <% if self.description and #self.description > 0 then -%> -
    <%=self.description%>
    - <%- end %> - <% if self.addremove then -%> -
    - -
    - <%- end %> - <%+cbi/tabmenu%> -
    - <%+cbi/ucisection%> -
    -
    -<% elseif self.addremove then %> - <% if self.template_addremove then include(self.template_addremove) else -%> -
    - <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> -
    <%=self.description%>
    - -
    - <%- end %> -<% end %> - diff --git a/luci-base/luasrc/view/cbi/nullsection.htm b/luci-base/luasrc/view/cbi/nullsection.htm deleted file mode 100644 index 7230719d1..000000000 --- a/luci-base/luasrc/view/cbi/nullsection.htm +++ /dev/null @@ -1,37 +0,0 @@ -
    - <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> - <% if self.description and #self.description > 0 then -%> -
    <%=self.description%>
    - <%- end %> -
    -
    - <% self:render_children(1, scope or {}) %> -
    - <% if self.error and self.error[1] then -%> -
    -
      <% for _, e in ipairs(self.error[1]) do -%> -
    • - <%- if e == "invalid" then -%> - <%:One or more fields contain invalid values!%> - <%- elseif e == "missing" then -%> - <%:One or more required fields have no value!%> - <%- else -%> - <%=pcdata(e)%> - <%- end -%> -
    • - <%- end %>
    -
    - <%- end %> -
    -
    -<%- - if type(self.hidden) == "table" then - for k, v in pairs(self.hidden) do --%> - -<%- - end - end -%> diff --git a/luci-base/luasrc/view/cbi/simpleform.htm b/luci-base/luasrc/view/cbi/simpleform.htm deleted file mode 100644 index 3e10724ec..000000000 --- a/luci-base/luasrc/view/cbi/simpleform.htm +++ /dev/null @@ -1,77 +0,0 @@ -<% - if not self.embedded then - %> - - <% - end - - %>
    <% - - if self.title and #self.title > 0 then - %>

    <%=self.title%>

    <% - end - - if self.description and #self.description > 0 then - %>
    <%=self.description%>
    <% - end - - self:render_children() - - %>
    <% - - if self.message then - %>
    <%=self.message%>
    <% - end - - if self.errmessage then - %>
    <%=self.errmessage%>
    <% - end - - if not self.embedded then - if type(self.hidden) == "table" then - local k, v - for k, v in pairs(self.hidden) do - %><% - end - end - - local display_back = (redirect) - local display_cancel = (self.cancel ~= false and self.on_cancel) - local display_skip = (self.flow and self.flow.skip) - local display_submit = (self.submit ~= false) - local display_reset = (self.reset ~= false) - - if display_back or display_cancel or display_skip or display_submit or display_reset then - %>
    <% - - if display_back then - %> <% - end - - if display_cancel then - local label = pcdata(self.cancel or translate("Cancel")) - %> <% - end - - if display_skip then - %> <% - end - - if display_submit then - local label = pcdata(self.submit or translate("Submit")) - %> <% - end - - if display_reset then - local label = pcdata(self.reset or translate("Reset")) - %> <% - end - - %>
    <% - end - - %>
    <% - end -%> - - diff --git a/luci-base/luasrc/view/cbi/tabcontainer.htm b/luci-base/luasrc/view/cbi/tabcontainer.htm deleted file mode 100644 index 38c435d6a..000000000 --- a/luci-base/luasrc/view/cbi/tabcontainer.htm +++ /dev/null @@ -1,7 +0,0 @@ -<% for tab, data in pairs(self.tabs) do %> -
    style="display:none"<% end %>> - <% if data.description then %>
    <%=data.description%>
    <% end %> - <% self:render_tab(tab, section, scope or {}) %> -
    - -<% end %> diff --git a/luci-base/luasrc/view/cbi/tabmenu.htm b/luci-base/luasrc/view/cbi/tabmenu.htm deleted file mode 100644 index 06c1414bf..000000000 --- a/luci-base/luasrc/view/cbi/tabmenu.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%- if self.tabs then %> -
      - <%- self.selected_tab = luci.http.formvalue("tab." .. self.config .. "." .. section) %> - <%- for _, tab in ipairs(self.tab_names) do if #self.tabs[tab].childs > 0 then %> - <%- if not self.selected_tab then self.selected_tab = tab end %> -
    • - <%=self.tabs[tab].title%> - <% if tab == self.selected_tab then %><% end %> -
    • - <% end end -%> -
    -<% end -%> diff --git a/luci-base/luasrc/view/cbi/tblsection.htm b/luci-base/luasrc/view/cbi/tblsection.htm deleted file mode 100644 index 408dfa7fe..000000000 --- a/luci-base/luasrc/view/cbi/tblsection.htm +++ /dev/null @@ -1,203 +0,0 @@ -<%- -local rowcnt = 0 - -function rowstyle() - rowcnt = rowcnt + 1 - if rowcnt % 2 == 0 then - return " cbi-rowstyle-1" - else - return " cbi-rowstyle-2" - end -end - -function width(o) - if o.width then - if type(o.width) == 'number' then - return ' style="width:%dpx"' % o.width - end - return ' style="width:%s"' % o.width - end - return '' -end - -local has_titles = false -local has_descriptions = false - -local anonclass = (not self.anonymous or self.sectiontitle) and "named" or "anonymous" -local titlename = ifattr(not self.anonymous or self.sectiontitle, "data-title", translate("Name")) - -local i, k -for i, k in pairs(self.children) do - if not k.typename then - k.typename = k.template and k.template:gsub("^.+/", "") or "" - end - - if not has_titles and k.title and #k.title > 0 then - has_titles = true - end - - if not has_descriptions and k.description and #k.description > 0 then - has_descriptions = true - end -end - -function render_titles() - if not has_titles then - return - end - - %>
    ><% - - local i, k - for i, k in ipairs(self.children) do - if not k.optional then - %>
    ><% - - if k.titleref then - %><% - end - - write(k.title) - - if k.titleref then - %><% - end - - %>
    <% - end - end - - if self.sortable or self.extedit or self.addremove then - %>
    <% - end - - %>
    <% - - rowcnt = rowcnt + 1 -end - -function render_descriptions() - if not has_descriptions then - return - end - - %>
    <% - - local i, k - for i, k in ipairs(self.children) do - if not k.optional then - %>
    ><% - - write(k.description) - - %>
    <% - end - end - - if self.sortable or self.extedit or self.addremove then - %>
    <% - end - - %>
    <% - - rowcnt = rowcnt + 1 -end - --%> - - -
    - <% if self.title and #self.title > 0 then -%> -

    <%=self.title%>

    - <%- end %> - <%- if self.sortable then -%> - - <%- end -%> -
    <%=self.description%>
    -
    - <%- - render_titles() - render_descriptions() - - local isempty, section, i, k = true, nil, nil - for i, k in ipairs(self:cfgsections()) do - isempty = false - section = k - - local sectionname = striptags((type(self.sectiontitle) == "function") and self:sectiontitle(section) or k) - local sectiontitle = ifattr(sectionname and (not self.anonymous or self.sectiontitle), "data-title", sectionname) - local colorclass = (self.extedit or self.rowcolors) and rowstyle() or "" - local scope = { - valueheader = "cbi/cell_valueheader", - valuefooter = "cbi/cell_valuefooter" - } - -%> -
    > - <%- - local node - for k, node in ipairs(self.children) do - if not node.optional then - node:render(section, scope or {}) - end - end - -%> - - <%- if self.sortable or self.extedit or self.addremove then -%> -
    -
    - <%- if self.sortable then -%> - - - <% end; if self.extedit then -%> - onclick="location.href='<%=self.extedit:format(section)%>'" - <%- elseif type(self.extedit) == "function" then - %> onclick="location.href='<%=self:extedit(section)%>'" - <%- end - %> alt="<%:Edit%>" title="<%:Edit%>" /> - <% end; if self.addremove then %> - - <%- end -%> -
    -
    - <%- end -%> -
    - <%- end -%> - - <%- if isempty then -%> -
    -
    <%:This section contains no values yet%>
    -
    - <%- end -%> -
    - - <% if self.error then %> -
    -
      <% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%> -
    • <%=pcdata(e):gsub("\n","
      ")%>
    • - <%- end end %>
    -
    - <% end %> - - <%- if self.addremove then -%> - <% if self.template_addremove then include(self.template_addremove) else -%> -
    - <% if self.anonymous then %> - - <% else %> - <% if self.invalid_cts then -%> -
    <%:Invalid%>
    - <%- end %> -
    - -
    - - <% end %> -
    - <%- end %> - <%- end -%> -
    - diff --git a/luci-base/luasrc/view/cbi/tsection.htm b/luci-base/luasrc/view/cbi/tsection.htm deleted file mode 100644 index 1a13df0c0..000000000 --- a/luci-base/luasrc/view/cbi/tsection.htm +++ /dev/null @@ -1,49 +0,0 @@ -
    - <% if self.title and #self.title > 0 then -%> - <%=self.title%> - <%- end %> - <% if self.description and #self.description > 0 then -%> -
    <%=self.description%>
    - <%- end %> - <% local isempty = true for i, k in ipairs(self:cfgsections()) do -%> - <% if self.addremove then -%> -
    - -
    - <%- end %> - - <%- section = k; isempty = false -%> - - <% if not self.anonymous then -%> -

    <%=section:upper()%>

    - <%- end %> - - <%+cbi/tabmenu%> - -
    - <%+cbi/ucisection%> -
    - <%- end %> - - <% if isempty then -%> - <%:This section contains no values yet%>

    - <%- end %> - - <% if self.addremove then -%> - <% if self.template_addremove then include(self.template_addremove) else -%> -
    - <% if self.anonymous then -%> - - <%- else -%> - <% if self.invalid_cts then -%> -
    <%:Invalid%>
    - <%- end %> -
    - -
    - - <%- end %> -
    - <%- end %> - <%- end %> -
    diff --git a/luci-base/luasrc/view/cbi/tvalue.htm b/luci-base/luasrc/view/cbi/tvalue.htm deleted file mode 100644 index d1e9e6672..000000000 --- a/luci-base/luasrc/view/cbi/tvalue.htm +++ /dev/null @@ -1,5 +0,0 @@ -<%+cbi/valueheader%> - -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/ucisection.htm b/luci-base/luasrc/view/cbi/ucisection.htm deleted file mode 100644 index 8fa11d68f..000000000 --- a/luci-base/luasrc/view/cbi/ucisection.htm +++ /dev/null @@ -1,56 +0,0 @@ -<%- - if type(self.hidden) == "table" then - for k, v in pairs(self.hidden) do --%> - -<%- - end - end -%> - -<% if self.tabs then %> - <%+cbi/tabcontainer%> -<% else %> - <% self:render_children(section, scope or {}) %> -<% end %> - -<% if self.error and self.error[section] then -%> -
    -
      <% for _, e in ipairs(self.error[section]) do -%> -
    • - <%- if e == "invalid" then -%> - <%:One or more fields contain invalid values!%> - <%- elseif e == "missing" then -%> - <%:One or more required fields have no value!%> - <%- else -%> - <%=pcdata(e)%> - <%- end -%> -
    • - <%- end %>
    -
    -<%- end %> - -<% if self.optionals[section] and #self.optionals[section] > 0 or self.dynamic then %> -
    - <%- - if self.dynamic then - local keys, vals, name, opt = { }, { } - for name, opt in pairs(self.optionals[section]) do - keys[#keys+1] = name - vals[#vals+1] = opt.title - end - -%> - 0, "data-choices", luci.util.json_encode({keys, vals})) - %> /> - <%- else -%> - - <%- end -%> - -
    -<% end %> diff --git a/luci-base/luasrc/view/cbi/upload.htm b/luci-base/luasrc/view/cbi/upload.htm deleted file mode 100644 index 3c3d82b65..000000000 --- a/luci-base/luasrc/view/cbi/upload.htm +++ /dev/null @@ -1,24 +0,0 @@ -<% - local t = require("luci.tools.webadmin") - local v = self:cfgvalue(section) - local s = v and nixio.fs.stat(v) --%> -<%+cbi/valueheader%> - <% if s then %> - <%:Uploaded File%> (<%=t.byte_format(s.size)%>) - <% if self.unsafeupload then %> - /> - " alt="<%:Replace entry%>" title="<%:Replace entry%>" src="<%=resource%>/cbi/reload.gif" /> - <% end %> - <% end %> - - <% if not self.unsafeupload then %> - /> - <% end %> - - <% if (not s) or (s and not self.unsafeupload) then %> - /> - <% end %> - /> -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/value.htm b/luci-base/luasrc/view/cbi/value.htm deleted file mode 100644 index 74908ba7d..000000000 --- a/luci-base/luasrc/view/cbi/value.htm +++ /dev/null @@ -1,26 +0,0 @@ -<%+cbi/valueheader%> - <%- if self.password then -%> - /> - <%- end -%> - 0, "data-choices", { self.keylist, self.vallist }) - %> /> - <%- if self.password then -%> -
    - <% end %> -<%+cbi/valuefooter%> diff --git a/luci-base/luasrc/view/cbi/valuefooter.htm b/luci-base/luasrc/view/cbi/valuefooter.htm deleted file mode 100644 index 805312e45..000000000 --- a/luci-base/luasrc/view/cbi/valuefooter.htm +++ /dev/null @@ -1 +0,0 @@ -<% include( valuefooter or "cbi/full_valuefooter" ) %> diff --git a/luci-base/luasrc/view/cbi/valueheader.htm b/luci-base/luasrc/view/cbi/valueheader.htm deleted file mode 100644 index 761a54aed..000000000 --- a/luci-base/luasrc/view/cbi/valueheader.htm +++ /dev/null @@ -1 +0,0 @@ -<% include( valueheader or "cbi/full_valueheader" ) %> diff --git a/luci-base/luasrc/view/csrftoken.htm b/luci-base/luasrc/view/csrftoken.htm deleted file mode 100644 index 57ac03f3b..000000000 --- a/luci-base/luasrc/view/csrftoken.htm +++ /dev/null @@ -1,24 +0,0 @@ -<%# - Copyright 2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Form token mismatch%>

    -
    - -

    <%:The submitted security token is invalid or already expired!%>

    - -

    <%: - In order to prevent unauthorized access to the system, your request has - been blocked. Click "Continue »" below to return to the previous page. -%>

    - -
    - -

    - Continue » -

    - -<%+footer%> diff --git a/luci-base/luasrc/view/error404.htm b/luci-base/luasrc/view/error404.htm deleted file mode 100644 index a762f6038..000000000 --- a/luci-base/luasrc/view/error404.htm +++ /dev/null @@ -1,11 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    404 <%:Not Found%>

    -

    <%:Sorry, the object you requested was not found.%>

    -<%:Unable to dispatch%>: <%=url(unpack(luci.dispatcher.context.request))%> -<%+footer%> diff --git a/luci-base/luasrc/view/error500.htm b/luci-base/luasrc/view/error500.htm deleted file mode 100644 index 34a52cda8..000000000 --- a/luci-base/luasrc/view/error500.htm +++ /dev/null @@ -1,11 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    500 <%:Internal Server Error%>

    -

    <%:Sorry, the server encountered an unexpected error.%>

    -
    <%=message%>
    -<%+footer%> diff --git a/luci-base/luasrc/view/footer.htm b/luci-base/luasrc/view/footer.htm deleted file mode 100644 index 1667d3aa9..000000000 --- a/luci-base/luasrc/view/footer.htm +++ /dev/null @@ -1,30 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% - local is_rollback_pending, rollback_time_remaining, rollback_session, rollback_token = luci.model.uci:rollback_pending() - - if is_rollback_pending or trigger_apply or trigger_revert then - include("cbi/apply_widget") - cbi_apply_widget(redirect, rollback_token) -%> - - -<% - end - - include("themes/" .. theme .. "/footer") -%> diff --git a/luci-base/luasrc/view/indexer.htm b/luci-base/luasrc/view/indexer.htm deleted file mode 100644 index 28fc3debc..000000000 --- a/luci-base/luasrc/view/indexer.htm +++ /dev/null @@ -1,7 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% include("themes/" .. theme .. "/indexer") %> \ No newline at end of file diff --git a/luci-base/luasrc/view/sysauth.htm b/luci-base/luasrc/view/sysauth.htm deleted file mode 100644 index 9b0e2de78..000000000 --- a/luci-base/luasrc/view/sysauth.htm +++ /dev/null @@ -1,75 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2012 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -
    - <%- if fuser then %> -
    -

    <%:Invalid username and/or password! Please try again.%>

    -
    - <% end -%> - -
    -

    <%:Authorization Required%>

    -
    - <%:Please enter your username and password.%> -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    - - -
    -
    - - -<% -local uci = require "luci.model.uci".cursor() -local fs = require "nixio.fs" -local https_key = uci:get("uhttpd", "main", "key") -local https_port = uci:get("uhttpd", "main", "listen_https") -if type(https_port) == "table" then - https_port = https_port[1] -end - -if https_port and fs.access(https_key) then - https_port = https_port:match("(%d+)$") -%> - - - -<% end %> - -<%+footer%> diff --git a/luci-base/po/ca/base.po b/luci-base/po/ca/base.po deleted file mode 100644 index cbd222ff8..000000000 --- a/luci-base/po/ca/base.po +++ /dev/null @@ -1,4122 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2014-06-06 11:17+0200\n" -"Last-Translator: Alex \n" -"Language-Team: LANGUAGE \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(finestra de %d minuts, interval de %d segons)" - -msgid "(%s available)" -msgstr "(%s disponibles)" - -msgid "(empty)" -msgstr "(buit)" - -msgid "(no interfaces attached)" -msgstr "(sense interfícies adjuntes)" - -msgid "-- Additional Field --" -msgstr "-- Camp addicional --" - -msgid "-- Please choose --" -msgstr "-- Escolliu, si us plau --" - -msgid "-- custom --" -msgstr "-- personalitzat --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Càrrega d'1 minut:" - -msgid "15 Minute Load:" -msgstr "Càrrega de 15 minuts:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Càrrega de 5 minuts:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "Port de consulta DNS " - -msgid "DNS server port" -msgstr "Port del servidor DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Es consultaran els servidors DNS " -"segons l'ordre del fitxer de resolució" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "Adreça IPv4" - -msgid "IPv4-Gateway" -msgstr "Passarel·la IPv4" - -msgid "IPv4-Netmask" -msgstr "" -"Màscara de xarxa IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Adreça IPv6 o Xarxa (CIDR)" - -msgid "IPv6-Gateway" -msgstr "Passarel·la IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Configuració dels LEDs" - -msgid "LED Name" -msgstr "Nom LED" - -msgid "MAC-Address" -msgstr "Adreça MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Arrendaments de DHCP max." - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Mida màx. de paquet EDNS0" - -msgid "Max. concurrent queries" -msgstr "Consultes concurrents max." - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"Avís: cal reiniciar manualment el servei cron si el fitxer crontab estava " -"buit abans d'editar-lo." - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Llindar de reintent ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Ponts ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identificador de canal virtual (VCI) ATM" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identificador de camí virtual (VPI) ATM" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Els ponts ATM mostren ethernet encapsulat en connexions AAL5 com interfícies " -"de xarxa virtual de Linux que es poden utilitzar conjuntament amb DHCP o PPP " -"per trucar a la xarxa del proveïdor." - -msgid "ATM device number" -msgstr "Número de dispositiu ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Concentrador d'accés" - -msgid "Access Point" -msgstr "Punt d'accés" - -msgid "Actions" -msgstr "Accions" - -msgid "Active IPv4-Routes" -msgstr "Rutes IPv4 actives" - -msgid "Active IPv6-Routes" -msgstr "Rutes IPv6 actives" - -msgid "Active Connections" -msgstr "Connexions actives" - -msgid "Active DHCP Leases" -msgstr "Arrendaments DHCP actius" - -msgid "Active DHCPv6 Leases" -msgstr "Arrendaments DHCPv6 actius" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Afegeix" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Afegeix el sufix de domini local als noms servits des dels fitxers de hosts" - -msgid "Add new interface..." -msgstr "Afegeix una interfície nova..." - -msgid "Additional Hosts files" -msgstr "Fitxers de Hosts addicionals" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adreça" - -msgid "Address to access local relay bridge" -msgstr "Adreça per accedir al relay bridge local" - -msgid "Administration" -msgstr "Administració" - -msgid "Advanced Settings" -msgstr "Paràmetres avançats" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alerta" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Permetre l'autenticació SSH amb " -"contrasenya" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Permet-les totes menys les llistades" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Permet només les llistades" - -msgid "Allow localhost" -msgstr "Permetre el localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Permetre a màquines remotes de connectar-se als ports reenviats de l'SSH " -"local" - -msgid "Allow root logins with password" -msgstr "Accés d'administrador amb contrasenya" - -msgid "Allow the root user to login with password" -msgstr "Permetre l'accés de l'usurari root amb contrasenya" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "Permet respostes del rang 127.0.0.0/8, p.e. per serveis RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "Configuració d'antena" - -msgid "Any zone" -msgstr "Qualsevol zona" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Assigna interfícies..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Estacions associades" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autenticació" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritzada" - -msgid "Authorization Required" -msgstr "Es requereix autenticació" - -msgid "Auto Refresh" -msgstr "Refresc automàtic" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Disponible" - -msgid "Available packages" -msgstr "Paquets disponibles" - -msgid "Average:" -msgstr "Mitjana:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Enrere" - -msgid "Back to Overview" -msgstr "Enrere al Resum" - -msgid "Back to configuration" -msgstr "Enrere a la configuració" - -msgid "Back to overview" -msgstr "Enrere al resum" - -# Endarrere cap a resultats d'escaneig -msgid "Back to scan results" -msgstr "Enrere als resultats de l'escaneig" - -msgid "Backup" -msgstr "Còpia de seguretat" - -msgid "Backup / Flash Firmware" -msgstr "Còpia de seguretat i microprogramari" - -msgid "Backup file list" -msgstr "Llista de còpies de seguretat" - -msgid "Bad address specified!" -msgstr "Adreça mal especificada!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"A sota hi ha la llista determinada de fitxers per fer-ne còpia. Consisteix " -"en els fitxers de configuració canviats i marcats per l'opkg, fitxers base " -"essencials i els patrons de còpia de seguretat definits per l'usuari." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Velocitat de bits" - -msgid "Bogus NX Domain Override" -msgstr "Substitució dels dominis NX falsos" - -msgid "Bridge" -msgstr "Pont" - -msgid "Bridge interfaces" -msgstr "Pont d'interfícies" - -msgid "Bridge unit number" -msgstr "Número d'unitat de pont" - -msgid "Bring up on boot" -msgstr "Aixecar a l'engegada" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Controlador sense fil Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Controlador sense fil Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "En memòria intermèdia" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"Repositoris específics de la distribució/compilació. Aquest fitxer NO es " -"preservarà durant les actualitzacions del microprogramari del sistema." - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Ús de CPU (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Cancel·la" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Cadena" - -msgid "Changes" -msgstr "Canvis" - -msgid "Changes applied." -msgstr "Canvis aplicats." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Canvia la paraula clau de l'administrador per accedir al dispositiu" - -msgid "Channel" -msgstr "Canal" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Comprovació" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Suma de verificació" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Escolliu la zona de tallafocs que voleu assignar a aquesta interfície. Trieu " -"sense especificar per esborrar la interfície de la zona associada o " -"ompliu el camp crea per definir una nova zona i adjuntar-hi la " -"interfície." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Trieu les xarxes que voleu adjuntar a la interfície sense fil o ompliu el " -"camp crea per definir una xarxa nova." - -msgid "Cipher" -msgstr "Xifra" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Fes clic a \"Genera l'arxiu\" per obtenir un fitxer .tar.gz amb els fitxers " -"de configuració actuals." - -msgid "Client" -msgstr "Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "ID de client a enviar en les sol·licituds DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "Tanca la llista..." - -msgid "Collecting data..." -msgstr "Aplegant dades..." - -msgid "Command" -msgstr "Ordre" - -msgid "Common Configuration" -msgstr "Configuració comuna" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuració" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Es mantindran els fitxers de configuració." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Confirmació" - -msgid "Connect" -msgstr "Connecta" - -msgid "Connected" -msgstr "Connectat" - -msgid "Connection Limit" -msgstr "Límit de connexió" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Connexions" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "País" - -msgid "Country Code" -msgstr "Codi de País" - -msgid "Cover the following interface" -msgstr "Cobreix la interfície següent" - -msgid "Cover the following interfaces" -msgstr "Cobreix les interfícies següents" - -msgid "Create / Assign firewall-zone" -msgstr "Crea / Assigna zona de tallafocs" - -msgid "Create Interface" -msgstr "Crea interfície" - -msgid "Create a bridge over multiple interfaces" -msgstr "Crea un pont entre múltiples interfícies" - -msgid "Critical" -msgstr "Crític" - -msgid "Cron Log Level" -msgstr "Nivell de registre del Cron" - -msgid "Custom Interface" -msgstr "Interfície personalitzada" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Personalitza el comportament dels LEDs del dispositiu, si és possible." - -msgid "DHCP Server" -msgstr "Servidor DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP i DNS" - -msgid "DHCP client" -msgstr "Client DHCP" - -msgid "DHCP-Options" -msgstr "Opcions DHCP" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Reenviaments DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Depuració" - -msgid "Default %d" -msgstr "%d per defecte" - -msgid "Default gateway" -msgstr "Passarel·la per defecte" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Estat per defecte" - -msgid "Define a name for this network." -msgstr "Definiu el nom d'aquesta xarxa" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "Suprimeix" - -msgid "Delete this network" -msgstr "Suprimeix aquesta xarxa" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Descripció" - -msgid "Design" -msgstr "Disseny" - -msgid "Destination" -msgstr "Destí" - -msgid "Device" -msgstr "Dispositiu" - -msgid "Device Configuration" -msgstr "Configuració de dispositiu" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnòstics" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Directori" - -msgid "Disable" -msgstr "Inhabilita" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Inhabilita el DHCP en aquesta interfície." - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Inhabilitat" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Descarta les respostes RFC1918 des de dalt" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "Mostrant només els paquets que contenen" - -msgid "Distance Optimization" -msgstr "Optimització de distància" - -msgid "Distance to farthest network member in meters." -msgstr "Distància al membre de la xarxa més allunyat en metres." - -msgid "Distribution feeds" -msgstr "Repositoris de la distribució" - -msgid "Diversity" -msgstr "Diversitat" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"El Dnsmasq és un servidor DHCP combinat i un reenviador de DNS per tallafocs NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Es requereix un domini" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"No reenviïs les peticions DNS " -"sense el nom DNS" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Descarrega i instal·la el paquet" - -msgid "Download backup" -msgstr "Descarrega còpia de seguretat" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instància de Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"El Dropbear ofereix accés a una consola SSH per xarxa i un servidor SCP integrat" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP dinàmic" - -msgid "Dynamic tunnel" -msgstr "Túnel dinàmic" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Mètode EAP" - -msgid "Edit" -msgstr "Edita" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Edita aquesta interfície" - -msgid "Edit this network" -msgstr "Edita aquesta xarxa" - -msgid "Emergency" -msgstr "Emergència" - -msgid "Enable" -msgstr "Habilita" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Habilita l'STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Habilita negociació IPv6 en la enllaç PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Habilita el passatge de trames enormes" - -msgid "Enable NTP client" -msgstr "Habilita el client NTP" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Habilita el servidor TFTP" - -msgid "Enable VLAN functionality" -msgstr "Habilita la funcionalitat VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Habilita l'aprenentatge i l'envelliment" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "Activa/Desactiva" - -msgid "Enabled" -msgstr "Habilitat" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Habilita l'Spanning Tree Protocol a aquest pont" - -msgid "Encapsulation mode" -msgstr "Mode d'encapsulació" - -msgid "Encryption" -msgstr "Encriptació" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Esborrant..." - -msgid "Error" -msgstr "Error" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Adaptador Ethernet" - -msgid "Ethernet Switch" -msgstr "Switch Ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "Caduca" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Servidor de registre del sistema extern" - -msgid "External system log server port" -msgstr "Port del servidor de registre del sistema extern" - -msgid "External system log server protocol" -msgstr "Protocol del servidor de registre del sistema extern" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Fitxer" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nom de fitxer de la imatge d'inici que es publica als clients" - -msgid "Filesystem" -msgstr "Sistema de fitxers" - -msgid "Filter" -msgstr "Filtre" - -msgid "Filter private" -msgstr "Filtra privat" - -msgid "Filter useless" -msgstr "Filtra els no útils" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Troba i uneix-te a la xarxa" - -msgid "Find package" -msgstr "Cerca paquet" - -msgid "Finish" -msgstr "Acaba" - -msgid "Firewall" -msgstr "Tallafocs" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Ajusts de tallafocs" - -msgid "Firewall Status" -msgstr "Estat de tallafocs" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Versió de microprogramari" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "Escriptura del microprogramari a la memòria flaix" - -msgid "Flash image..." -msgstr "Puja una imatge..." - -msgid "Flash new firmware image" -msgstr "Escriu una imatge nova a la memòria flaix" - -msgid "Flash operations" -msgstr "Operacions a la memòria flaix" - -msgid "Flashing..." -msgstr "Escrivint a la memòria flaix..." - -msgid "Force" -msgstr "Força" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Força el CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Força el DHCP en aquesta xarxa encara que es detecti altre servidor." - -msgid "Force TKIP" -msgstr "Força el TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Força el TKIP i el CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Reenvia el trànsit DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Reenvia el trànsit difós" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Mode de reenviament" - -msgid "Fragmentation Threshold" -msgstr "Llindar de fragmentació" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "Lliure" - -msgid "Free space" -msgstr "Espai lliure" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Només GPRS" - -msgid "Gateway" -msgstr "Passarel·la" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Ports de passarel·la" - -msgid "General Settings" -msgstr "Ajusts generals" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "Opcions generals d'opkg" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Genera l'arxiu" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Controlador sense fils 802.11%s genèric" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"La contrasenya i la confirmació de contrasenya no es coincideixen. La " -"contrasenya no s'ha canviat!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Vés a la configuració de contrasenya" - -msgid "Go to relevant configuration page" -msgstr "Vés a la pàgina de configuració" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Contrasenya de HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Penja" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Ací pots configurar els aspectes bàsics del teu dispositiu, com el nom de la " -"màquina o el fus horari." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Aquí pots afegir-hi les claus SSH públiques (una per línia) per entrar per " -"SSH amb autenticació per clau." - -msgid "Hide ESSID" -msgstr "" -"No mostris l'ESSID" - -msgid "Host" -msgstr "Nom de màquina" - -msgid "Host entries" -msgstr "Entrades de noms de màquina" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "Xarxa o adreça IP" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Nom de màquina" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Noms de màquina" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Adreça IP" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Tallafocs IPv4" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "Adreça IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 i IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Difusió IPv4" - -msgid "IPv4 gateway" -msgstr "Passarel·la IPv4" - -msgid "IPv4 netmask" -msgstr "Màscara de xarxa IPv4" - -msgid "IPv4 only" -msgstr "Només IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Longitud de prefix IPv4" - -msgid "IPv4-Address" -msgstr "Adreça IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Tallafocs IPv6" - -msgid "IPv6 Neighbours" -msgstr "Veïns IPv6" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "Adreça IPv6" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Passarel·la IPv6" - -msgid "IPv6 only" -msgstr "Només IPv6" - -msgid "IPv6 prefix" -msgstr "Prefix IPv6" - -msgid "IPv6 prefix length" -msgstr "Longitud de prefix IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Adreça IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-en-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-sobre-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-sobre-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identitat" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Si la teva memòria física és insuficient, les dades no usades es poden " -"intercanviar a un dispositiu d'intercanvi, pel qual hi haurà una quantitat " -"més gran de memòria RAM usable. " -"Tingues en compte que intercanviar dades és un procés molt lent, ja que no " -"es pot accedir al dispositiu d'intercanvi amb unes taxes tan altes com les " -"de la RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignora /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignora la interfície" - -msgid "Ignore resolve file" -msgstr "Ignora el fitxer de resolució" - -msgid "Image" -msgstr "Fitxer d'imatge" - -msgid "In" -msgstr "Entr." - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Temps d'espera d'inactivitat" - -msgid "Inbound:" -msgstr "Entrant:" - -msgid "Info" -msgstr "Informació" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Script d'inici" - -msgid "Initscripts" -msgstr "Scripts d'inici" - -msgid "Install" -msgstr "Instal·la" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instal·la el paquet %q" - -msgid "Install protocol extensions..." -msgstr "Instal·la extensions de protocol" - -msgid "Installed packages" -msgstr "Paquets instal·lats" - -msgid "Interface" -msgstr "Interfície" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configuració d'interfície" - -msgid "Interface Overview" -msgstr "Visió de conjunt de la interfície" - -msgid "Interface is reconnecting..." -msgstr "La interfície s'està reconnectant..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interfaces" -msgstr "Interfícies" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Error de servidor intern" - -msgid "Invalid" -msgstr "Invàlid" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Usuari i/o contrasenya invàlids! Si us plau prova-ho de nou." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Sembla que intentes actualitzar una imatge que no hi cap a la memòria flaix, " -"si us plau verifica el fitxer d'imatge!" - -msgid "JavaScript required!" -msgstr "Es requereix JavaScript!" - -msgid "Join Network" -msgstr "Uneix-te a la xarxa" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Mantenir la configuració" - -msgid "Kernel Log" -msgstr "Registre del nucli" - -msgid "Kernel Version" -msgstr "Versió del nucli" - -msgid "Key" -msgstr "Clau" - -msgid "Key #%d" -msgstr "Clau #%d" - -msgid "Kill" -msgstr "Mata" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Servidor L2TP" - -msgid "LCP echo failure threshold" -msgstr "Llindar de fracàs d'eco LCP" - -msgid "LCP echo interval" -msgstr "Interval d'eco LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Etiqueta" - -msgid "Language" -msgstr "Llengua" - -msgid "Language and Style" -msgstr "Llengua i estil" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Duració de validitat d'arrendament" - -msgid "Leasefile" -msgstr "Fitxer d'arrendament" - -msgid "Leasetime remaining" -msgstr "Temps d'arrendament restant" - -msgid "Leave empty to autodetect" -msgstr "Deixeu-ho en blanc per autodetectar" - -msgid "Leave empty to use the current WAN address" -msgstr "Deixeu-ho en blanc per utilitzar l'adreça WAN actual" - -msgid "Legend:" -msgstr "Llegenda:" - -msgid "Limit" -msgstr "Límit" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Enllaç actiu" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Habilita el servei en totes les interfícies o, si no se n'especifica cap, en " -"totes" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Càrrega" - -msgid "Load Average" -msgstr "Càrrega mitjana" - -msgid "Loading" -msgstr "Carregant" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Adreça IPv4 local" - -msgid "Local IPv6 address" -msgstr "Adreça IPv6 local" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Inici local" - -msgid "Local Time" -msgstr "Hora local" - -msgid "Local domain" -msgstr "Domini local" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "Servidor local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Localitza les peticions" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Nivell de sortida de registre" - -msgid "Log queries" -msgstr "Registra les peticions" - -msgid "Logging" -msgstr "Registre" - -msgid "Login" -msgstr "Entra" - -msgid "Logout" -msgstr "Surt" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "Adreça MAC" - -msgid "MAC-Address Filter" -msgstr "Filtre d'adreces MAC" - -msgid "MAC-Filter" -msgstr "Filtre MAC" - -msgid "MAC-List" -msgstr "Llista MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Memòria" - -msgid "Memory usage (%)" -msgstr "Ús de Memòria (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Mètrica" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Manca l'extensió de protocol del protocol %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mode" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Dispositiu mòdem" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "Temps d'espera d'inici de mòdem" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "Punt de muntatge" - -msgid "Mount Points" -msgstr "Punts de muntatge" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Els punts de muntatge defineixen en quin punt un dispositiu de memòria " -"s'adjuntarà amb el sistema de fitxers" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Opcions de muntatge" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Sistemes de fitxers muntats" - -msgid "Move down" -msgstr "Baixa" - -msgid "Move up" -msgstr "Puja" - -msgid "Multicast address" -msgstr "Adreça de difusió selectiva" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Candidats de servidor NTP" - -msgid "Name" -msgstr "Nom" - -msgid "Name of the new interface" -msgstr "Nom de la nova interfície" - -msgid "Name of the new network" -msgstr "Nom de la nova xarxa" - -msgid "Navigation" -msgstr "Navegació" - -msgid "Netmask" -msgstr "Màscara de xarxa" - -msgid "Network" -msgstr "Xarxa" - -msgid "Network Utilities" -msgstr "Utilitats de xarxa" - -msgid "Network boot image" -msgstr "Imatge d'inici de xarxa" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "Xarxa sense interfícies." - -msgid "Next »" -msgstr "Següent" - -msgid "No DHCP Server configured for this interface" -msgstr "Cap servidor DHCP configurat en aquesta interfície" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "No hi ha cadenes en aquesta taula" - -msgid "No files found" -msgstr "Cap fitxer trobat" - -msgid "No information available" -msgstr "No hi ha informació disponible" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "Sense memòria cau negativa" - -msgid "No network configured on this device" -msgstr "Cap xarxa configurada en aquest dispositiu" - -msgid "No network name specified" -msgstr "Cap nom de xarxa especificat" - -msgid "No package lists available" -msgstr "No hi ha llistes de paquets disponibles" - -msgid "No password set!" -msgstr "No hi ha cap contrasenya establerta!" - -msgid "No rules in this chain" -msgstr "No hi ha regles en aquesta cadena" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Cap zona assignada" - -msgid "Noise" -msgstr "Soroll" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Soroll:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Cap" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "No trobat" - -msgid "Not associated" -msgstr "No associat" - -msgid "Not connected" -msgstr "No connectat" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: Els fitxers de configuració s'esborraran." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Avís" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "D'acord" - -msgid "OPKG-Configuration" -msgstr "Configuració d'OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"En aquesta pàgina pots configurar les interfícies de xarxa. Pots fer un pont " -"entre diverses interfícies clicant sobre el camp \"interfície pont\" i " -"introduint els noms de les diverses interfícies de xarxa separats per " -"espais. També pots fer servir la notació VLAN INTERFACE.VLANNR (p.e.: eth0.1)." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "Cal especificar o el nom de host o l'adreça MAC!" - -msgid "One or more fields contain invalid values!" -msgstr "Un o més dels camps requerits conté un valor invàlid!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Un o més dels camps requerits no té valor!" - -msgid "Open list..." -msgstr "Obre una llista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Opció canviada" - -msgid "Option removed" -msgstr "Opció treta" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Opcions" - -msgid "Other:" -msgstr "Altres:" - -msgid "Out" -msgstr "Sort." - -msgid "Outbound:" -msgstr "Sortint:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Visió de conjunt" - -msgid "Owner" -msgstr "Propietari" - -msgid "PAP/CHAP password" -msgstr "Contrasenya PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Nom d'usuari PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Encapsulació PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Es requereix el paquet libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Les llistes de paquets tenen més de 24 hores" - -msgid "Package name" -msgstr "Nom del paquet" - -msgid "Packets" -msgstr "Paquets" - -msgid "Part of zone %q" -msgstr "Part de la zona %q" - -msgid "Password" -msgstr "Contrasenya" - -msgid "Password authentication" -msgstr "Autenticació per contrasenya" - -msgid "Password of Private Key" -msgstr "Contrasenya de la clau privada" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "La contrasenya s'ha canviat amb èxit!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Ruta als Certificats CA" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Ruta a la clau privada" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Màxim:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Executa un reinici" - -msgid "Perform reset" -msgstr "Executa un reinici" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Velocitat física:" - -msgid "Physical Settings" -msgstr "Ajusts físics" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Paquets" - -msgid "Please enter your username and password." -msgstr "Si us plau entra el teu nom d'usuari i contrasenya." - -msgid "Policy" -msgstr "Política" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Estatus de port" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Evita la comunicació client a client" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Procedeix" - -msgid "Processes" -msgstr "Processos" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocol" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "Habilita el servidor NTP" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Calidad" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Llindar RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Velocitat RX" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Llegeix /etc/ethers per configurar el servidor DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "Connexions en temps real" - -msgid "Realtime Graphs" -msgstr "Gràfiques en temps real" - -msgid "Realtime Load" -msgstr "Càrrega en temps real" - -msgid "Realtime Traffic" -msgstr "Trànsit en temps real" - -msgid "Realtime Wireless" -msgstr "Dispositiu sense fils en temps real" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Reinicia" - -msgid "Rebooting..." -msgstr "Reiniciant..." - -msgid "Reboots the operating system of your device" -msgstr "Arranca de nou el sistema operatiu del teu dispositiu" - -msgid "Receive" -msgstr "Recepció" - -msgid "Receiver Antenna" -msgstr "Antena receptora" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Reconnex aquesta interfície" - -msgid "References" -msgstr "Referències" - -msgid "Relay" -msgstr "Relé" - -msgid "Relay Bridge" -msgstr "Pont de relé" - -msgid "Relay between networks" -msgstr "Relé entre xarxes" - -msgid "Relay bridge" -msgstr "Pont de relé" - -msgid "Remote IPv4 address" -msgstr "Adreça IPv4 remota" - -msgid "Remote IPv4 address or FQDN" -msgstr "Adreça IPv4 remota o FQDN" - -msgid "Remove" -msgstr "Treu" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "Reemplaça l'entrada" - -msgid "Replace wireless configuration" -msgstr "Reemplaça la configuració sense fil" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Alguns ISP ho requereixen, per exemple el Charter amb DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Restableix" - -msgid "Reset Counters" -msgstr "Reinicia els comptadors" - -msgid "Reset to defaults" -msgstr "Reestableix els valors per defecte" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "Reinicia" - -msgid "Restart Firewall" -msgstr "Reinicia el tallafocs" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Restauració de la configuració" - -msgid "Restore backup" -msgstr "Restaura còpia de seguretat" - -msgid "Reveal/hide password" -msgstr "Mostra/amaga la contrasenya" - -msgid "Revert" -msgstr "Reverteix" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Arrel" - -msgid "Root directory for files served via TFTP" -msgstr "Directori arrel dels fitxers servits per TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Contrasenya de l'encaminador" - -msgid "Routes" -msgstr "Rutes" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Les rutes especifiquen per quina interfície i passarel·la es pot arribar a " -"un cert ordinador o xarxa." - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Accés SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Claus SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Desa" - -msgid "Save & Apply" -msgstr "Desa i aplica" - -msgid "Scan" -msgstr "Escaneja" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Tasques programades" - -msgid "Section added" -msgstr "Secció afegida" - -msgid "Section removed" -msgstr "Secció treta" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Clients separats" - -msgid "Server Settings" -msgstr "Ajusts de servidor" - -msgid "Service Name" -msgstr "Nom de servei" - -msgid "Service Type" -msgstr "Tipus de servei" - -msgid "Services" -msgstr "Serveis" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Configura la sincronització de l'hora" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "Atura aquesta interfície" - -msgid "Signal" -msgstr "Senyal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Senyal:" - -msgid "Size" -msgstr "Mida" - -msgid "Size (.ipk)" -msgstr "Mida (.ipk)" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Salta" - -msgid "Skip to content" -msgstr "Salta al contingut" - -msgid "Skip to navigation" -msgstr "Salta a la navegació" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Programari" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "No es pot desar els valors perquè alguns camps estan invàlids!" - -msgid "Sorry, the object you requested was not found." -msgstr "Tristament, l'object que heu sol·licitat no s'ha trobat." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Tristament, el servidor ha encontrat un error inesperat." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "Origen" - -msgid "Specifies the directory the device is attached to" -msgstr "Especifica el directori a que el dispositiu està adjuntat" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Especifica el port d'escolta d'aquesta instància del Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Especifiqueu el clau de xifració secret aquí." - -msgid "Start" -msgstr "Inici" - -msgid "Start priority" -msgstr "Prioritat d'inici" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Arrencada" - -msgid "Static IPv4 Routes" -msgstr "Rutes IPv4 estàtiques" - -msgid "Static IPv6 Routes" -msgstr "Rutes IPv6 estàtiques" - -msgid "Static Leases" -msgstr "Leases estàtics" - -msgid "Static Routes" -msgstr "Rutes estàtiques" - -msgid "Static address" -msgstr "Adreça estàtica" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Estat" - -msgid "Stop" -msgstr "Atura" - -msgid "Strict order" -msgstr "Ordre estricte" - -msgid "Submit" -msgstr "Envia" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Entrada d'intercanvi" - -msgid "Switch" -msgstr "Commutador" - -msgid "Switch %q" -msgstr "Commutador %q" - -msgid "Switch %q (%s)" -msgstr "Commutador %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Protocol de commutador" - -msgid "Sync with browser" -msgstr "Sincronitza amb el navegador" - -msgid "Synchronizing..." -msgstr "Sincronitzant..." - -msgid "System" -msgstr "Sistema" - -msgid "System Log" -msgstr "Registre del sistema" - -msgid "System Properties" -msgstr "Propietats del sistema" - -msgid "System log buffer size" -msgstr "Mida de la memòria intermèdia per al registre del sistema" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Ajusts TFTP" - -msgid "TFTP server root" -msgstr "Arrel del servidor TFTP" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Velocitat TX" - -msgid "Table" -msgstr "Taula" - -msgid "Target" -msgstr "Destí" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Acaba" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"El paquet libiwinfo-lua no està instal·lat. Heu de instal·lar " -"aquest component per tenir una configuració sense fil funcionant!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Els caràcters permets són: A-Z, a-z, 0-9 i _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"El fitxer de dispositiu de la memòria o partició (p.e. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"El sistema the fitxers que es va fer servir per formatar la memòria (p.e. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"S'ha pujat la imatge per a la memòria flaix. A sota hi ha llistades la suma " -"de verificació i la mida del fitxer per assegurar la integritat de les dades." -"
    Fes clic a \"Procedeix\" a continuació per començar el procés " -"d'escriptura a la memòria flaix." - -msgid "The following changes have been reverted" -msgstr "S'han desfet els següents canvis" - -msgid "The following rules are currently active on this system." -msgstr "Les següents regles estan actualment actives en aquest sistema." - -msgid "The given network name is not unique" -msgstr "El nom de xarxa donat no és únic" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"El maquinari no es capaç de múltiples SSID i la configuració existent es " -"reemplaçara si procediu." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"La longitud del prefix IPv4 en bits, el reste s'utilitza en les adreces IPv6." - -msgid "The length of the IPv6 prefix in bits" -msgstr "La longitud del prefix IPv6 en bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "El protocol seleccionat necessita un dispositiu assignat" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"El sistema està esborrant la partició de configuració i es reiniciarà quan " -"termini." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"S'està escrivint la imatge del microprogramari a la memòria flaix.
    NO " -"APAGUIS EL DISPOSITIU!
    Espera uns minuts abans d'intentar connectar-te " -"de nou. Pot ser necessari que renovis l'adreça DHCP del teu ordinador per " -"connectar-te de nou a l'encaminador, depenent de la configuració que hi " -"tinguis." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"La imatge pujada no conté un format suportat. Assegura't de triar el format " -"d'imatge genèric per la teva plataforma." - -msgid "There are no active leases." -msgstr "No hi ha arrendaments actius." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "No hi ha canvis pendents per revertir!" - -msgid "There are no pending changes!" -msgstr "No hi ha canvis pendents!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"No s'ha establert cap contrasenya en aquest encaminador. Si us plau, " -"configura una contrasenya per protegir la interfície web i l'accés SSH." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Aquest és el contingut de /etc/rc.local. Afegeix-hi les teves comandes " -"(abans de la línia 'exit 0') per executar-les en finalitzar el procés " -"d'arrencada." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Aquest és l'únic DHCP a la teva xarxa local" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Aquest és el crontab del sistema en el qual es poden definir tasques " -"programades." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Aquesta llista mostra una vista general sobre els processos corrent al " -"sistema actualment i el seu estat." - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Aquesta pàgina ofereix una vista general de les connexions de xarxa actives " -"actualment." - -msgid "This section contains no values yet" -msgstr "Aquesta secció encara no conté cap valor" - -msgid "Time Synchronization" -msgstr "Sincronització de l'hora" - -msgid "Time Synchronization is not configured yet." -msgstr "La sincronització de hora encara no s'ha configurat." - -msgid "Timezone" -msgstr "Zona horària" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Per restaurar els fitxers de configuració, pots pujar una còpia de seguretat " -"generada anteriorment aquí. Per restablir el microprogramari al seu estat " -"inicial, fes clic a \"Restableix la configuració\" (només funciona amb " -"imatges squashfs)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Total disponible" - -msgid "Traceroute" -msgstr "Rastre de ruta" - -msgid "Traffic" -msgstr "Trànsit" - -msgid "Transfer" -msgstr "Transferència" - -msgid "Transmission Rate" -msgstr "Taxa de transmissió" - -msgid "Transmit" -msgstr "Transmissió" - -msgid "Transmit Power" -msgstr "Potència de transmissió" - -msgid "Transmitter Antenna" -msgstr "Antena transmissora" - -msgid "Trigger" -msgstr "Activador" - -msgid "Trigger Mode" -msgstr "Mode d'activació" - -msgid "Tunnel ID" -msgstr "ID del túnel" - -msgid "Tunnel Interface" -msgstr "Interfície del túnel" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Potència Tx" - -msgid "Type" -msgstr "Tipus" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Només UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Dispositiu USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Desconegut" - -msgid "Unknown Error, password not changed!" -msgstr "La contrasenya no s'ha canviat a causa d'un error desconegut!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "Sense gestionar" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Canvis sense desar" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Tipus de protocol no suportat." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Actualitza les llistes" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Puja aquí una imatge compatible amb sysupgrade per reemplaçar el " -"microprogramari actual. Activa \"Mantenir la configuració\" per retenir la " -"configuració actual (requereix una imatge de microprogramari compatible)." - -msgid "Upload archive..." -msgstr "Puja un arxiu..." - -msgid "Uploaded File" -msgstr "Fitxer pujat" - -msgid "Uptime" -msgstr "Temps en marxa" - -msgid "Use /etc/ethers" -msgstr "Fes servir /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Utilitza la bandera de difusió" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Usat" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Nom d'usuari" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs en %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs en %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Servidor VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Classe de venidor per enviar al sol·licitar DHCP" - -msgid "Verify" -msgstr "Verifica" - -msgid "Version" -msgstr "Versió" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Sistema obert WEP" - -msgid "WEP Shared Key" -msgstr "Clau compartit WEP" - -msgid "WEP passphrase" -msgstr "Contrasenya WEP" - -msgid "WMM Mode" -msgstr "Mode WMM" - -msgid "WPA passphrase" -msgstr "Contrasenya WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"La xifratge WPA requereix que sigui instal·lat el wpa_supplicant (pel mode " -"client) o el hostapd (pels modes AP i ad hoc)." - -msgid "Waiting for changes to be applied..." -msgstr "Esperant que s'apliquin els canvis..." - -msgid "Waiting for command to complete..." -msgstr "Esperant que s'acabi l'ordre..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "Esperant el dispositiu..." - -msgid "Warning" -msgstr "Advertència" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Sense fils" - -msgid "Wireless Adapter" -msgstr "Adaptador sense fils" - -msgid "Wireless Network" -msgstr "Xarxa sense fils" - -msgid "Wireless Overview" -msgstr "Resum sense fils" - -msgid "Wireless Security" -msgstr "Seguretat sense fils" - -msgid "Wireless is disabled" -msgstr "El dispositiu sense fils està inhabilitat" - -msgid "Wireless is not associated" -msgstr "El dispositiu sense fils està sense associar" - -msgid "Wireless is restarting..." -msgstr "El dispositiu sense fils està reiniciant..." - -msgid "Wireless network is disabled" -msgstr "La xarxa sense fil està inhabilitada" - -msgid "Wireless network is enabled" -msgstr "La xarxa sense fils està habilitada" - -msgid "Write received DNS requests to syslog" -msgstr "Escriure les peticions DNS rebudes al registre del sistema" - -msgid "Write system log to file" -msgstr "Escriure el registre del sistema al fitxer" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Pots activar o desactivar els scripts d'inici instal·lats ací. Els canvis " -"s'aplicaran després d'arrancar de nou el dispositiu.
    Atenció: " -"Si desactives scripts d'inici necessaris com el \"network\", el teu " -"dispositiu pot resultar inaccessible!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Has d'activar el JavaScript al teu navegador o LuCI no funcionarà " -"correctament." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "qualsevol" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "pontejat" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "crea:" - -msgid "creates a bridge over specified interface(s)" -msgstr "crea un pont entre les interfícies especificades" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "inhabilita" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "caducat" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"fitxer on els leases de DHCP s'emmagatzemaran" - -msgid "forward" -msgstr "transemès" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "hidden" -msgstr "amagat" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "si el destí és una xarxa" - -msgid "input" -msgstr "entrada" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "fitxer DNS local" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "no" - -msgid "no link" -msgstr "cap enllaç" - -msgid "none" -msgstr "cap" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "parat" - -msgid "on" -msgstr "engegat" - -msgid "open" -msgstr "obert" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "encaminat" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "etiquetat" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "desconegut" - -msgid "unlimited" -msgstr "il·limitat" - -msgid "unspecified" -msgstr "sense espeficicar" - -msgid "unspecified -or- create:" -msgstr "sense espeficicar -o- crear:" - -msgid "untagged" -msgstr "sense etiquetar" - -msgid "yes" -msgstr "sí" - -msgid "« Back" -msgstr "« Enrere" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Activa aquesta xarxa" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Controlador sense fil Hermes 802.11b" - -#~ msgid "Interface is shutting down..." -#~ msgstr "La interfície s'està aturant..." - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "Controlador sense fil RaLink 802.11%s" - -#~ msgid "Reconnecting interface" -#~ msgstr "Reconnectant la interfície" - -#~ msgid "Shutdown this network" -#~ msgstr "Atura aquesta xarxa" - -#~ msgid "Wireless restarted" -#~ msgstr "Sense fils reinciat" - -#~ msgid "Wireless shut down" -#~ msgstr "Sense fils aturat" - -#~ msgid "DHCP Leases" -#~ msgstr "Arrendaments DHCP" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "Arrendaments DHCPv6" - -#~ msgid "Sort" -#~ msgstr "Ordena" - -#~ msgid "help" -#~ msgstr "ajuda" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "Estat WAN IPv4" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "Estat WAN IPv6" - -#~ msgid "Apply" -#~ msgstr "Aplica" - -#~ msgid "Applying changes" -#~ msgstr "Aplicant els canvis" - -#~ msgid "Configuration applied." -#~ msgstr "S'ha aplicat la configuració." - -#~ msgid "Save & Apply" -#~ msgstr "Desa i aplica" - -#~ msgid "The following changes have been committed" -#~ msgstr "S'han comès els següents canvis" - -#~ msgid "There are no pending changes to apply!" -#~ msgstr "No hi ha canvis pendents per aplicar!" - -#~ msgid "Action" -#~ msgstr "Acció" - -#~ msgid "Buttons" -#~ msgstr "Botons" - -#~ msgid "Leasetime" -#~ msgstr "Duració d'arrendament" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "estàtic" - -#~ msgid "AR Support" -#~ msgstr "Suport AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Controlador sense fils d'Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "Escaneig de fons" - -#~ msgid "Compression" -#~ msgstr "Compressió" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Inhabilita el temporitzador HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "No enviïs les respostes de prova" - -#~ msgid "Fast Frames" -#~ msgstr "Fast Frames" - -#~ msgid "Maximum Rate" -#~ msgstr "Velocitat màxima" - -#~ msgid "Minimum Rate" -#~ msgstr "Velocitat mínima" - -#~ msgid "Multicast Rate" -#~ msgstr "Velocitat de difusió selectiva" - -#~ msgid "Outdoor Channels" -#~ msgstr "Canals d'exteriors" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domini regulatori" - -#~ msgid "Separate WDS" -#~ msgstr "WDS separat" - -#~ msgid "Static WDS" -#~ msgstr "WDS estàtic" - -#~ msgid "Turbo Mode" -#~ msgstr "Mode Turbo" - -#~ msgid "XR Support" -#~ msgstr "Suport XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Es crearà una xarxa addicional si deixes això sense marcar." - -#~ msgid "Join Network: Settings" -#~ msgstr "Unir-se a la xarxa: Ajusts" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "VLAN Interface" -#~ msgstr "Interfície VLAN" diff --git a/luci-base/po/cs/base.po b/luci-base/po/cs/base.po deleted file mode 100644 index 4075c5b06..000000000 --- a/luci-base/po/cs/base.po +++ /dev/null @@ -1,4200 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-31 13:59+0200\n" -"Last-Translator: koli \n" -"Language-Team: none\n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d minutové okno, %d sekundový interval)" - -msgid "(%s available)" -msgstr "(%s k dispozici)" - -msgid "(empty)" -msgstr "(prázdný)" - -msgid "(no interfaces attached)" -msgstr "(bez rozhraní připojení)" - -msgid "-- Additional Field --" -msgstr "-- Doplňující pole --" - -msgid "-- Please choose --" -msgstr "-- Prosím vyberte --" - -msgid "-- custom --" -msgstr "-- vlastní --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Zatížení za 1 minutu:" - -msgid "15 Minute Load:" -msgstr "Zatížení za 15 minut:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Zatížení za 5 minut:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "port dotazů DNS" - -msgid "DNS server port" -msgstr "port serveru DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS servery budou dotazovány podle " -"pořadí resolvfile" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Adresa" - -msgid "IPv4-Gateway" -msgstr "IPv4-Brána" - -msgid "IPv4-Netmask" -msgstr "IPv4-Maska sítě" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Adresa nebo Síť (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Brána" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Konfigurace" - -msgid "LED Name" -msgstr "LED Název" - -msgid "MAC-Address" -msgstr "MAC-Adresa" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Nejvyšší počet DHCP výpůjček" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Největší povolená velikost EDNS0 packetů" - -msgid "Max. concurrent queries" -msgstr "Nejvyšší počet souběžných dotazů" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP limit opakování" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM mosty" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identifikátor virtuálního kanálu ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identifikátor virtuální cesty ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Otevře ATM mosty přes uzavřené ethernetové rozhraní v AAL5 připojení jako " -"virtuální síťová rozhraní Linuxu, které mohou být použity ve spojení s DHCP " -"nebo PPP vytáčeného připojení od poskytovatele sítě." - -msgid "ATM device number" -msgstr "číslo ATM zařízení" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Přístupový koncentrátor" - -msgid "Access Point" -msgstr "Přístupový bod" - -msgid "Actions" -msgstr "Akce" - -msgid "Active IPv4-Routes" -msgstr "" -"Aktivní záznamy ve směrovací tabulce IPv4" - -msgid "Active IPv6-Routes" -msgstr "" -"Aktivní záznamy ve směrovací tabulce IPv6" - -msgid "Active Connections" -msgstr "Aktivní spojení" - -msgid "Active DHCP Leases" -msgstr "Aktivní propůjčené DHCP adresy (leases)" - -msgid "Active DHCPv6 Leases" -msgstr "Aktivní propůjčené DHCPv6 adresy (leases)" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Přidat" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Přidat lokální koncovku k doménovým jménům ze souboru hosts" - -msgid "Add new interface..." -msgstr "Přidat rozhraní..." - -msgid "Additional Hosts files" -msgstr "Dodatečné Hosts soubory" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresa" - -msgid "Address to access local relay bridge" -msgstr "Adresa pro přístup k místnímu relay bridge" - -msgid "Administration" -msgstr "Správa" - -msgid "Advanced Settings" -msgstr "Pokročilé nastavení" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Upozornění" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Povolit SSH autentizaci heslem" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Povolit vše mimo uvedené" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Povolit pouze uvedené" - -msgid "Allow localhost" -msgstr "Povolit localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Povolit vzdáleným hostitelům připojování k místním portům přesměrovaným " -"pomocí SSH" - -msgid "Allow root logins with password" -msgstr "Povolit přihlašovaní root účtu pomocí hesla" - -msgid "Allow the root user to login with password" -msgstr "Povolit root účtu přihlášení bez nastaveného hesla" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "Povolit upstream odpovědi na 127.0.0.0/8 rozsah, např. pro RBL služby" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Anténa 1" - -msgid "Antenna 2" -msgstr "Anténa 2" - -msgid "Antenna Configuration" -msgstr "Konfigurace antén" - -msgid "Any zone" -msgstr "Libovolná zóna" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Přiřadit rozhraní..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Připojení klienti" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autentizace" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritativní" - -msgid "Authorization Required" -msgstr "Vyžadována autorizace" - -msgid "Auto Refresh" -msgstr "Automaticky obnovovat" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Dostupné" - -msgid "Available packages" -msgstr "Dostupné balíčky" - -msgid "Average:" -msgstr "Průměr:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Zpět" - -msgid "Back to Overview" -msgstr "Zpět k přehledu" - -msgid "Back to configuration" -msgstr "Zpět ke konfiguraci" - -msgid "Back to overview" -msgstr "Zpět k přehledu" - -msgid "Back to scan results" -msgstr "Zpět k výsledkům vyhledávání" - -msgid "Backup" -msgstr "Zálohovat" - -msgid "Backup / Flash Firmware" -msgstr "Zálohovat / nahrát firmware" - -msgid "Backup file list" -msgstr "Seznam souborů k zálohování" - -msgid "Bad address specified!" -msgstr "Zadána neplatná adresa!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Seznam souborů k zálohování lze nalézt níže. Sestává se z konfiguračních " -"souborů označených opkg, nezbyných systémových souborů a souborů " -"vyhovujících uživatelem určeným vzorům." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Přenosová rychlost" - -msgid "Bogus NX Domain Override" -msgstr "Přepíše falešnou hodnotu NX Domény" - -msgid "Bridge" -msgstr "Síťový most" - -msgid "Bridge interfaces" -msgstr "Síťové mosty" - -msgid "Bridge unit number" -msgstr "Číslo síťového mostu" - -msgid "Bring up on boot" -msgstr "Zapnout po startu" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s bezdrátový ovladač" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom modul BCM%04x 802.11 bezdrátový ovladač" - -msgid "Buffered" -msgstr "Bufferováno" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Vytížení CPU (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Storno" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Řetěz" - -msgid "Changes" -msgstr "Změny" - -msgid "Changes applied." -msgstr "Změny aplikovány." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Změní administrátorské heslo pro přístup k zařízení" - -msgid "Channel" -msgstr "Kanál" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Kontrola" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Kontrolní součet" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Zóna firewallu přiřazená k tomuto rozhraní. Pro odstranění rozhraní z " -"přiřazené zóny vyberte volbu nespecifikovaná. Pro vytvoření nové " -"zóny a její následné přiřazení danému rozhraní vyplňte pole vytvořit." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Vyberte síť(ě), které chcete připojit k tomuto bezdrátovému rozhraní, nebo " -"vyplňte pole vytvořit a pojmenujte novou síť." - -msgid "Cipher" -msgstr "Šifra" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Pro stažení archivu tar s aktuální konfigurací stiskněte \"Vytvořit archiv\"." - -msgid "Client" -msgstr "Klient" - -msgid "Client ID to send when requesting DHCP" -msgstr "Klientské ID odesílané v DHCP požadavku" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Uzavírat neaktivní spojení po daném počtu sekund. Pro vypnutí časového " -"omezení použijte jako hodntu nulu" - -msgid "Close list..." -msgstr "Zavřít seznam..." - -msgid "Collecting data..." -msgstr "Probíhá sběr dat..." - -msgid "Command" -msgstr "Příkaz" - -msgid "Common Configuration" -msgstr "Společná nastavení" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Nastavení" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Konfigurační soubory budou zachovány." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Ověření" - -msgid "Connect" -msgstr "Připojit" - -msgid "Connected" -msgstr "Připojeno" - -msgid "Connection Limit" -msgstr "Omezení počtu připojení" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Připojení" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "Země" - -msgid "Country Code" -msgstr "Kód země" - -msgid "Cover the following interface" -msgstr "Pokrýt následující rozhraní" - -msgid "Cover the following interfaces" -msgstr "Pokrýt následující rozhraní" - -msgid "Create / Assign firewall-zone" -msgstr "Vytvořit / přiřadit zónu firewallu" - -msgid "Create Interface" -msgstr "Vytvořit rozhraní" - -msgid "Create a bridge over multiple interfaces" -msgstr "Vytvořit síťový most přes více rozhraní" - -msgid "Critical" -msgstr "Kritické" - -msgid "Cron Log Level" -msgstr "Úroveň protokolování Cronu" - -msgid "Custom Interface" -msgstr "Vlastní rozhraní" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Upraví chování LED diod zařízení " -"pokud je to možné." - -msgid "DHCP Server" -msgstr "DHCP server" - -msgid "DHCP and DNS" -msgstr "DHCP a DNS" - -msgid "DHCP client" -msgstr "DHCP klient" - -msgid "DHCP-Options" -msgstr "Volby DHCP" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Přeposílání DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Ladění" - -msgid "Default %d" -msgstr "Výchozí %d" - -msgid "Default gateway" -msgstr "Výchozí brána" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Výchozí stav" - -msgid "Define a name for this network." -msgstr "Jméno sítě." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Další možnosti DHCP, například \"6,192.168.2.1,192.168.2.2\", " -"které odkazuje na různé DNS servery pro klienty." - -msgid "Delete" -msgstr "Odstranit" - -msgid "Delete this network" -msgstr "Odstranit tuto síť" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Popis" - -msgid "Design" -msgstr "Vzhled" - -msgid "Destination" -msgstr "Cíl" - -msgid "Device" -msgstr "Zařízení" - -msgid "Device Configuration" -msgstr "Nastavení zařízení" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnostika" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Adresář" - -msgid "Disable" -msgstr "Zakázat" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Pro toto rozhraní zakázat DHCP." - -msgid "Disable DNS setup" -msgstr "Zakázat nastavení DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Zakázáno" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Vyřadit upstream RFC1918 odpovědi" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "Zobrazeny pouze balíčky obsahující" - -msgid "Distance Optimization" -msgstr "Optimalizace na vzdálenost" - -msgid "Distance to farthest network member in meters." -msgstr "Vzdálenost nejodlehlejšího člena sítě v metrech." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diverzita" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq je kombinace DHCP serveru a DNS " -"forwarderu pro použití v NAT firewallech" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Necachovat negativní odpovědi (např. pro neexistující domény)" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Nepřeposílat požadavky, které nemohou být zodpovězeny veřejnými jmennými " -"servery" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Nepřeposílat reverzní dotazy na místní sítě" - -msgid "Domain required" -msgstr "Vyžadována doména" - -msgid "Domain whitelist" -msgstr "Whitelist domén" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Nepřeposílat DNS dotazy bez DNS jména" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Stáhnout a nainstalovat balíček" - -msgid "Download backup" -msgstr "Stáhnout zálohu" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instance Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear poskytuje SSH přístup a SCP server" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Dynamický DHCP" - -msgid "Dynamic tunnel" -msgstr "Dynamický tunel" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Pro klienty alokovat DHCP adresy dynamicky. Pokud je volba zakázána, budou " -"obsloužení pouze klienti se statickými výpůjčkami." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Metoda EAP" - -msgid "Edit" -msgstr "Upravit" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Upravit toto rozhraní" - -msgid "Edit this network" -msgstr "Upravit tuto síť" - -msgid "Emergency" -msgstr "Záchrana" - -msgid "Enable" -msgstr "Povolit" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Povolit STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Povolit dynamickou aktualizaci koncového bodu HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Na PPP spoji povolit vyjednání IPv6" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Povolit průchod jumbo rámců" - -msgid "Enable NTP client" -msgstr "Povolit NTP klienta" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Povolit TFTP server" - -msgid "Enable VLAN functionality" -msgstr "Povolit funkcionalitu VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Povolit ARP učení a stárnutí" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Povolit tento přípojný bod" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "Povolit tento swapovací oddíl" - -msgid "Enable/Disable" -msgstr "Povolit/Zakázat" - -msgid "Enabled" -msgstr "Povoleno" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Na tomto síťovém mostě povolit Spanning Tree Protocol" - -msgid "Encapsulation mode" -msgstr "Režim zapouzdření" - -msgid "Encryption" -msgstr "Šifrování" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Odstraňování..." - -msgid "Error" -msgstr "Chyba" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernetový adaptér" - -msgid "Ethernet Switch" -msgstr "Ethernetový switch" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Rozšířit hostitele" - -msgid "Expires" -msgstr "Vyprší" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Čas vypršení vypůjčené adresy, minimum jsou 2 minuty (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Externí protokolovací server" - -msgid "External system log server port" -msgstr "Port externího protokolovacího serveru" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Soubor" - -msgid "Filename of the boot image advertised to clients" -msgstr "Název souboru s bootovacím obrazem oznamovaný klientům" - -msgid "Filesystem" -msgstr "Souborový systém" - -msgid "Filter" -msgstr "Filtr" - -msgid "Filter private" -msgstr "Filtrovat soukromé" - -msgid "Filter useless" -msgstr "Filtrovat nepotřebné" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Vyhledat a připojit síť" - -msgid "Find package" -msgstr "Vyhledat balíček" - -msgid "Finish" -msgstr "Dokončit" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Nastavení firewallu" - -msgid "Firewall Status" -msgstr "Stav firewallu" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Verze firmwaru" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Pevný zdrojový port pro odchozí DNS dotazy" - -msgid "Flash Firmware" -msgstr "Nahrát firmware" - -msgid "Flash image..." -msgstr "Nahrát obraz..." - -msgid "Flash new firmware image" -msgstr "Nahrát nový obraz s firmwarem" - -msgid "Flash operations" -msgstr "Operace nad flash pamětí" - -msgid "Flashing..." -msgstr "Nahrávám..." - -msgid "Force" -msgstr "Vynutit" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Vynutit CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Na této síti vynutit DHCP i v případě detekování jiného serveru." - -msgid "Force TKIP" -msgstr "Vynutit TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Vynutit TKIP a CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Přeposílat DHCP provoz" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Přeposílat broadcasty" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Režim přeposílání" - -msgid "Fragmentation Threshold" -msgstr "Hranice fragmentace" - -msgid "Frame Bursting" -msgstr "Dávkování rámců" - -msgid "Free" -msgstr "Volné" - -msgid "Free space" -msgstr "Volné místo" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Pouze GPRS" - -msgid "Gateway" -msgstr "Brána" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Porty brány" - -msgid "General Settings" -msgstr "Obecná nastavení" - -msgid "General Setup" -msgstr "Obecné nastavení" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Vytvorǐt archív" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Generic 802.11%s Wireless Controller" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Heslo nezměněno z důvodu nesouhlasu nového hesla a ověření hesla!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Přejít na nastavení hesla..." - -msgid "Go to relevant configuration page" -msgstr "Přejít na související konfigurační stránku" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Heslo HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Zavěsit" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Nastavení základních vlastností zařízení jako je časová zóna nebo název " -"zařízení." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Vložte veřejné klíče (na každý řadek jeden) pro ověřovaní SSH přístupu." - -msgid "Hide ESSID" -msgstr "Skrývat ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Záznamy hostitelů" - -msgid "Host expiry timeout" -msgstr "Vypršení časového limitu hostitele" - -msgid "Host-IP or Network" -msgstr "" -"IP adresa hostitele nebo síť" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Jméno hostitele" - -msgid "Hostname to send when requesting DHCP" -msgstr "Jméno hostitele odesílané s DHCP požadavky" - -msgid "Hostnames" -msgstr "Jména hostitelů" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP adresy" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 firewall" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "IPv4 adresa" - -msgid "IPv4 and IPv6" -msgstr "IPv4 a IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "IPv4 broadcast" - -msgid "IPv4 gateway" -msgstr "IPv4 brána" - -msgid "IPv4 netmask" -msgstr "IPv4 maska sítě" - -msgid "IPv4 only" -msgstr "Pouze IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Délka IPv4 prefixu" - -msgid "IPv4-Address" -msgstr "IPv4 adresa" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 firewall" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "IPv6 adresa" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6 brána" - -msgid "IPv6 only" -msgstr "Pouze IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6 prefix" - -msgid "IPv6 prefix length" -msgstr "Délka IPv6 prefixu" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6 adresa" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-over-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-over-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identita" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "Namísto pevného uzlu zařízení připojovat pomocí UUID" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "Namísto pevného uzlu zařízení připojovat pomocí názvu oddílu" - -msgid "If unchecked, no default route is configured" -msgstr "Pokud není povoleno, není nastaven žádný výchozí směrovací záznam" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Pokud není povoleno, oznámené adresy DNS serverů budou ignorovány" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Pokud máte nedostatek fyzické paměti, nepoužívaná data mohou být dočasně " -"odložena do odkládacího zařízení, což bude mít za důsledek větší množství " -"použitelné RAM. Vezměte na " -"vědomí, že odkládání dat je velice pomalý proces, stejně jako fakt, že " -"přístup na odkládací zařízení je řádově pomalejší, než přístup do paměti " -"RAM." - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "Ignorovat rozhraní" - -msgid "Ignore resolve file" -msgstr "Ignorovat resolv soubor" - -msgid "Image" -msgstr "Obraz" - -msgid "In" -msgstr "Dovnitř" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Časový limit nečinnosti" - -msgid "Inbound:" -msgstr "Příchozí:" - -msgid "Info" -msgstr "Info" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Initskript" - -msgid "Initscripts" -msgstr "Initskripty" - -msgid "Install" -msgstr "Instalovat" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instalovat balíček %q" - -msgid "Install protocol extensions..." -msgstr "Instalovat protokolové rozšíření..." - -msgid "Installed packages" -msgstr "Nainstalované balíčky" - -msgid "Interface" -msgstr "Rozhraní" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Konfigurace rozhraní" - -msgid "Interface Overview" -msgstr "Přehled rozhraní" - -msgid "Interface is reconnecting..." -msgstr "Rozhraní se znovu připojuje..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Rozhraní není přítomné nebo je dosud nepřipojeno." - -msgid "Interfaces" -msgstr "Rozhraní" - -msgid "Internal" -msgstr "" - -# Není co dodat. -msgid "Internal Server Error" -msgstr "Vnitřní chyba serveru" - -msgid "Invalid" -msgstr "Neplatná vstupní hodnota" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"Uvedené VLAN ID je neplatné! Jsou povolena pouze ID z rozsahu %d až %d." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Uvedené VLAN ID je neplatné! Každé ID musí být jedinečné" - -msgid "Invalid username and/or password! Please try again." -msgstr "Špatné uživatelské jméno a/nebo heslo! Prosím zkuste to znovu." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Zdá se, že se pokoušíte zapsat obraz, který se nevejde do flash paměti. " -"Prosím ověřte soubor s obrazem!" - -msgid "JavaScript required!" -msgstr "Vyžadován JavaScript!" - -msgid "Join Network" -msgstr "Připojit k síti" - -msgid "Join Network: Wireless Scan" -msgstr "Připojit k síti: Vyhledání bezdrátových sítí" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Zachovat nastavení" - -msgid "Kernel Log" -msgstr "Záznam jádra" - -msgid "Kernel Version" -msgstr "Verze jádra" - -msgid "Key" -msgstr "Klíč" - -msgid "Key #%d" -msgstr "Klíč #%d" - -msgid "Kill" -msgstr "Zabít" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP Server" - -msgid "LCP echo failure threshold" -msgstr "LCP echo prahová hodnota selhání" - -msgid "LCP echo interval" -msgstr "LCP interval upozornění" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Popis" - -msgid "Language" -msgstr "Jazyk" - -msgid "Language and Style" -msgstr "Jazyk a styl" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Doba platnosti zápůjčky" - -msgid "Leasefile" -msgstr "Soubor zájpůjček" - -msgid "Leasetime remaining" -msgstr "Zbývající doba trvání zápůjčky" - -msgid "Leave empty to autodetect" -msgstr "Ponechte prázdné pro automatickou detekci" - -msgid "Leave empty to use the current WAN address" -msgstr "Ponecháte-li prázdné, použije stávající WAN adresu" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limit" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Odkaz na" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Seznam DNS serverů, na které " -"přeposílat požadavky" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Seznam domén, pro které povolit odpovědi podle RFC1918" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Seznam hostitelů, kteří udávají falešné hodnoty NX domén" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Poslouchat pouze na daném rozhraní, nebo pokud není specifikováno, na všech" - -msgid "Listening port for inbound DNS queries" -msgstr "Port pro příchozí dotazy DNS" - -msgid "Load" -msgstr "Zátěž" - -msgid "Load Average" -msgstr "Zátěž průměrná" - -msgid "Loading" -msgstr "Načítání" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Místní IPv4 adresa" - -msgid "Local IPv6 address" -msgstr "Místní IPv6 adresa" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Místní startup" - -msgid "Local Time" -msgstr "Místní čas" - -msgid "Local domain" -msgstr "Místní doména" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Specifikace místní domény. Jména shodná s touto doménou nikdy nebudou " -"přesměrována ani rozlušťována pomocí DHCP nebo souborů hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Přípona místní domény, připojená za názvy DHCP jmen a záznamů v souboru hosts" - -msgid "Local server" -msgstr "Místní server" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Lokalizovat jméno v závislosti na dotazující se podsíti, pokud bylo nalezeno " -"více IP adres" - -msgid "Localise queries" -msgstr "Lokalizační dotazy" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Úroveň logování" - -msgid "Log queries" -msgstr "Dotazy pro logování" - -msgid "Logging" -msgstr "Logování" - -msgid "Login" -msgstr "Přihlásit" - -msgid "Logout" -msgstr "Odhlásit" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Nejnižší zapůjčenou adresu použít jako offset síťové adresy." - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-Adresa" - -msgid "MAC-Address Filter" -msgstr "Filtr MAC adres" - -msgid "MAC-Filter" -msgstr "Filtr MAC" - -msgid "MAC-List" -msgstr "Seznam Mac" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Nejvyšší povolené množství aktivních DHCP zápůjček" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Nejvyšší povolené množství souběžných DNS dotazů" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Nejvyšší povolená velikost EDNS.0 UDP paketů" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Nejvyšší počet sekund čekání, než bude modem připraven" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Maximální počet zapůjčených adres." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Paměť" - -msgid "Memory usage (%)" -msgstr "Využití paměti (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metrika" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Chybějící rozšíření protokolu %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mód" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Modemové zařízení" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "Časový limit inicializace modemu" - -msgid "Monitor" -msgstr "Sledování" - -msgid "Mount Entry" -msgstr "Připojit vstup" - -msgid "Mount Point" -msgstr "Přípojný bod" - -msgid "Mount Points" -msgstr "Přípojné body" - -msgid "Mount Points - Mount Entry" -msgstr "Přípojné body - vstupy" - -msgid "Mount Points - Swap Entry" -msgstr "Přípojné body - změna vstupu" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Přípojný bod určuje místo v souborovém systému, na kterém bude připojeno " -"paměťové zařízení" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Volby připojení" - -msgid "Mount point" -msgstr "Přípojný bod" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Připojené souborové systémy" - -msgid "Move down" -msgstr "Přesunout dolů" - -msgid "Move up" -msgstr "Přesunout nahoru" - -msgid "Multicast address" -msgstr "Adresa vícesměrového vysílání" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Kandidáti NTP serveru" - -msgid "Name" -msgstr "Název" - -msgid "Name of the new interface" -msgstr "Název nového rozhraní" - -msgid "Name of the new network" -msgstr "Název nové sítě" - -msgid "Navigation" -msgstr "Navigace" - -msgid "Netmask" -msgstr "Síťová maska" - -msgid "Network" -msgstr "Síť" - -msgid "Network Utilities" -msgstr "Síťové nástroje" - -msgid "Network boot image" -msgstr "Síťový bootovací obraz" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "Síť bez rozhraní." - -msgid "Next »" -msgstr "Další »" - -msgid "No DHCP Server configured for this interface" -msgstr "Pro toto rozhraní není nastaven žádný DHCP server" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Žádné řetězce v této tabulce" - -msgid "No files found" -msgstr "Nebyly nalezeny žádné soubory" - -msgid "No information available" -msgstr "Údaje nejsou k dispozici" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "Žádná negativní mezipaměť" - -msgid "No network configured on this device" -msgstr "Síť není nastavena na tomto zařízení" - -msgid "No network name specified" -msgstr "Neuvedeno jméno sítě" - -msgid "No package lists available" -msgstr "Seznam balíčků není k dispozici" - -msgid "No password set!" -msgstr "Žádné heslo!" - -msgid "No rules in this chain" -msgstr "Žádná pravidla v tomto řetězci" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Žádná zóna nepřiřazena" - -msgid "Noise" -msgstr "Šum" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Šum:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Žádný" - -msgid "Normal" -msgstr "Normální" - -msgid "Not Found" -msgstr "Nenalezeno" - -msgid "Not associated" -msgstr "Neasociováno" - -msgid "Not connected" -msgstr "Nepřipojeno" - -msgid "Note: Configuration files will be erased." -msgstr "Pozn: Konfigurační soubory budou vymazány." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Oznámení" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Konfigurace balíčků OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "Vypnutí prodlevy" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Na této stránce můžete nastavit síťová rozhraní. Můžete přemostit několik " -"rozhraní zaškrtnutím pole \"přemostit rozhraní\" a zápisem názvů rozhraní, " -"vzájemně oddělených mezerami. Také můžete použít VLAN zápis INTERFACE.VLANNR (např.: eth0.1)." - -msgid "On-State Delay" -msgstr "Zapnutí prodlevy" - -msgid "One of hostname or mac address must be specified!" -msgstr "Jedno jméno nebo mac adresa, musí být zadáno!" - -msgid "One or more fields contain invalid values!" -msgstr "Jedno nebo více polí obsahuje neplatné hodnoty!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Jedno nebo více požadovaných polí neobsahuje hodnotu!" - -msgid "Open list..." -msgstr "Otevřít seznam..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Volba změněna" - -msgid "Option removed" -msgstr "Volba odstraněna" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Možnosti" - -msgid "Other:" -msgstr "Ostatní:" - -msgid "Out" -msgstr "Ven" - -msgid "Outbound:" -msgstr "Odchozí:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Přepsat MAC adresu" - -msgid "Override MTU" -msgstr "Přepsat MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Přepsat bránu v DHCP odpovědích" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Přepsat síťovou masku, odesílanou klientům. Obvykle je spočítána podle " -"subsítě, která je obsluhována." - -msgid "Override the table used for internal routes" -msgstr "Přepsat tabulku, používanou pro vnitřní cesty" - -msgid "Overview" -msgstr "Přehled" - -msgid "Owner" -msgstr "Vlastník" - -msgid "PAP/CHAP password" -msgstr "Heslo PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Uživatelské jméno PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Zapouzdření PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Vyžadován balíček libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Seznamy balíčků jsou starší než 24 hodin" - -msgid "Package name" -msgstr "Název balíčku" - -msgid "Packets" -msgstr "Pakety" - -msgid "Part of zone %q" -msgstr "Část zóny %q" - -msgid "Password" -msgstr "Heslo" - -msgid "Password authentication" -msgstr "Autentizace heslem" - -msgid "Password of Private Key" -msgstr "Heslo privátního klíče" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Heslo bylo úspěšně změněno!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Cesta k certifikátu CA" - -msgid "Path to Client-Certificate" -msgstr "Cesta k certifikátu klienta" - -msgid "Path to Private Key" -msgstr "Cesta k privátnímu klíči" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Špička:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Provést restart" - -msgid "Perform reset" -msgstr "Provést reset" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Fyzická rychlost:" - -msgid "Physical Settings" -msgstr "Fyzické nastavení" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Paketů" - -msgid "Please enter your username and password." -msgstr "Prosím vložte vaše uživatelské jméno a heslo." - -msgid "Policy" -msgstr "Politika" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Stav portu:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Po takovém množství LCP echo selhání předpokládám, že peer je mrtvý. " -"Použijte 0 pro ignorování chyb" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Zabraňuje komunikaci klient-klient" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Pokračovat" - -msgid "Processes" -msgstr "Procesy" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokol" - -msgid "Protocol family" -msgstr "Rodina protokolů" - -msgid "Protocol of the new interface" -msgstr "Protokol nového rozhraní" - -msgid "Protocol support is not installed" -msgstr "Podpora pro protokol není nainstalována" - -msgid "Provide NTP server" -msgstr "Poskytování NTP serveru" - -msgid "Provide new network" -msgstr "Poskytování nové sítě" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Kvalita" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Práh RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "RX Rate" - -msgid "Radius-Accounting-Port" -msgstr "Port pro Radius-Accounting" - -msgid "Radius-Accounting-Secret" -msgstr "Tajný klíč pro Radius-Accounting" - -msgid "Radius-Accounting-Server" -msgstr "Server Radius-Accounting" - -msgid "Radius-Authentication-Port" -msgstr "Výběr ověřování portů" - -msgid "Radius-Authentication-Secret" -msgstr "Tajný klíč pro Radius-Authentication" - -msgid "Radius-Authentication-Server" -msgstr "Server Radius-Authentication" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Přečtěte si /etc/ethers ke konfiguraci DHCP Serveru" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Opravdu odstranit bezdrátovou síť? Odstranění nelze vrátit zpět!\n" -"Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím této " -"sítě." - -msgid "Really reset all changes?" -msgstr "Opravdu resetovat všechny změny?" - -msgid "Really switch protocol?" -msgstr "Opravdu prohodit protokol?" - -msgid "Realtime Connections" -msgstr "Připojení v reálném čase" - -msgid "Realtime Graphs" -msgstr "Grafy v reálném čase" - -msgid "Realtime Load" -msgstr "Zátěž v reálném čase" - -msgid "Realtime Traffic" -msgstr "Provoz v reálném čase" - -msgid "Realtime Wireless" -msgstr "Wireless v reálném čase" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Opětovné nastavení ochrany" - -msgid "Reboot" -msgstr "Reboot" - -msgid "Rebooting..." -msgstr "Rebootuji..." - -msgid "Reboots the operating system of your device" -msgstr "Rebootuje operační systém vašeho zařízení" - -msgid "Receive" -msgstr "Přijmout" - -msgid "Receiver Antenna" -msgstr "Přijímací anténa" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Přepojit toto rozhraní" - -msgid "References" -msgstr "Reference" - -msgid "Relay" -msgstr "Přenos" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "Přenášet mezi sítěmi" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "Vzdálená IPv4 adresa" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Odstranit" - -msgid "Repeat scan" -msgstr "Opakovat skenování" - -msgid "Replace entry" -msgstr "Nahradit vstup" - -msgid "Replace wireless configuration" -msgstr "Nahradit bezdrátovou konfiguraci" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -# Charter je poskytovate -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Vyžadováno u některých ISP, např. Charter s DocSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Resetovat čítače" - -msgid "Reset to defaults" -msgstr "Obnovit na výchozí" - -msgid "Resolv and Hosts Files" -msgstr "Soubory Resolv a Hosts" - -msgid "Resolve file" -msgstr "Soubor resolve" - -msgid "Restart" -msgstr "Restart" - -msgid "Restart Firewall" -msgstr "Restartovat firewall" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Obnovit" - -msgid "Restore backup" -msgstr "Obnovit zálohu" - -msgid "Reveal/hide password" -msgstr "Odhalit/skrýt heslo" - -msgid "Revert" -msgstr "Vrátit zpět" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "Kořenový adresář souborů, přístupných přes TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Heslo routeru" - -msgid "Routes" -msgstr "Trasy" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Trasy určují, přes jaké rozhraní a bránu může být konkrétního hosta dosaženo." - -msgid "Run a filesystem check before mounting the device" -msgstr "Spustit kontrolu souborového systému před připojením zařízení" - -msgid "Run filesystem check" -msgstr "Spustit kontrolu souborového systému" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Přístup přes SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "SSH klíče" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Uložit" - -msgid "Save & Apply" -msgstr "Uložit & použít" - -msgid "Scan" -msgstr "Skenovat" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Naplánované úlohy" - -msgid "Section added" -msgstr "Přidána sekce" - -msgid "Section removed" -msgstr "Sekce odebrána" - -msgid "See \"mount\" manpage for details" -msgstr "Podrobnosti viz manuálová stránka příkazu \"mount\"" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Odesílat LCP echo požadaveky každých x sekund, účinné pouze ve spojení s " -"prahem selhání." - -msgid "Separate Clients" -msgstr "Oddělovat klienty" - -msgid "Server Settings" -msgstr "Nastavení serveru" - -msgid "Service Name" -msgstr "Název služby" - -msgid "Service Type" -msgstr "Typ služby" - -msgid "Services" -msgstr "Služby" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Nastavit synchronizaci času" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "Nastavit DHCP server" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "Ukázat aktuální seznam záložních souborů" - -msgid "Shutdown this interface" -msgstr "Shodit toho rozhraní" - -msgid "Signal" -msgstr "Signál" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Signál:" - -msgid "Size" -msgstr "Velikost" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Přeskočit" - -msgid "Skip to content" -msgstr "Skočit na obsah" - -msgid "Skip to navigation" -msgstr "Skočit na navigaci" - -msgid "Slot time" -msgstr "Time sloty" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Některá pole obsahují neplatné hodnoty, nelze uložit!" - -msgid "Sorry, the object you requested was not found." -msgstr "Omlouváme se, ale požadovaný objekt nebyl nalezen." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Omlouváme se, na serveru došlo k neočekávané vyjímce." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Omlouváme se, ale v tomto zařízení není přítomná podpora pro upgrade " -"systému. Nový obraz firmwaru musí být zapsán ručně. Prosím, obraťte se na " -"wiki pro zařízení specifické instalační instrukce." - -msgid "Source" -msgstr "Zdroj" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Určuje port na kterém bude tato instance Dropbearu naslouchat" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Určuje množství neúspěšných ARP požadavků, po kterém je hostitel považován " -"za mrtvého" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "Určuje počet sekund, po kterém je hostitel považovám za mrtvého" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Zde nastavte soukromý šifrovací klíč." - -msgid "Start" -msgstr "Start" - -msgid "Start priority" -msgstr "Priorita spouštění" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Po spuštění" - -msgid "Static IPv4 Routes" -msgstr "Statické IPv4 trasy" - -msgid "Static IPv6 Routes" -msgstr "Statické IPv6 trasy" - -msgid "Static Leases" -msgstr "Statické zápůjčky" - -msgid "Static Routes" -msgstr "Statické trasy" - -msgid "Static address" -msgstr "Statická adresa" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Statické zápůjčky se používají pro přiřazení fixních IP adres a symbolických " -"jmen DHCP klientům. Jsou také vyžadovány pro nedynamické konfigurace " -"rozhraní, kde jsou povoleni pouze hosté s odpovídajícím nastavením." - -msgid "Status" -msgstr "Stav" - -msgid "Stop" -msgstr "Stop" - -msgid "Strict order" -msgstr "Striktní výběr" - -msgid "Submit" -msgstr "Odeslat" - -msgid "Suppress logging" -msgstr "Potlačit logování" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Vstupní bod" - -msgid "Switch" -msgstr "Směrovač" - -msgid "Switch %q" -msgstr "Směrovač číslo %q" - -msgid "Switch %q (%s)" -msgstr "Směrovač číslo %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Směrovací protokol" - -msgid "Sync with browser" -msgstr "Synchronizovat s prohlížečem" - -msgid "Synchronizing..." -msgstr "Synchronizuji..." - -msgid "System" -msgstr "Systém" - -msgid "System Log" -msgstr "Systémový log" - -msgid "System Properties" -msgstr "Vlastnosti systému" - -msgid "System log buffer size" -msgstr "Velikost bufferu systémového logu" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Nastavení TFTP" - -msgid "TFTP server root" -msgstr "Kořenový adresář TFTP serveru" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Rychlost TX" - -msgid "Table" -msgstr "" - -msgid "Target" -msgstr "Cíl" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Ukončit" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Sekce Nastavení zařízení pokrývá fyzické nastavení radiového " -"hardwaru jako kanál, vysílací výkon nebo výběr antény, které je sdíleno mezi " -"všemi bezdrátovými sítěmi (pokud hardware podporuje multi-SSID). Nastavení " -"konkrétní sítě jako šifrování, operační mód jsou seskupeny v sekci " -"Nastavení rozhraní." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Balíček libiwinfo-lua není nainstalován. Tato komponenta musí být " -"nainstalována, aby fungovalo nastavení bezdátové sítě!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "IPv6 prefix přidělený poskytovatelm většinou končí ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Povolené znaky jsou: A-Z, a-z, 0-9 a " -"_" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Soubor zařízení paměti nebo oddílu (např. " -"/dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Souborový systém, který byl použit pro formátování paměti (napři. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Obraz flash byl nahrán. Prosím porovnejte níže uvedený checksum a velikost " -"souboru s originálním souborem pro zajištění integrity dat.
    Kliknutím " -"na \"Pokračovat\" spustíte proceduru flashování." - -msgid "The following changes have been reverted" -msgstr "Následující změny byly vráceny" - -msgid "The following rules are currently active on this system." -msgstr "Následující pravidla jsou v nyní na tomto systému aktivní." - -msgid "The given network name is not unique" -msgstr "Zadané jméno sítě není jedinečné" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Tento hardware nepodporuje multi-SSID. Pokud budete pokračovat, existující " -"konfigurace bude nahrazena." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "Délka IPv4 prefixu v bitech, zbytek se používá v IPv6 adresách" - -msgid "The length of the IPv6 prefix in bits" -msgstr "Délka IPv6 prefixu v bitech" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Síťové porty tohoto zařízení mohou být kombinovány do několika VLANve kterých počítače mohou " -"komunikovat přímo mezi sebou. VLANse často používají na oddělení různých siťových částí. Většinou je " -"jeden port pro připojení k vyšší síti (Uplink) jako třeba internet a " -"zbývající porty pro místní síť." - -msgid "The selected protocol needs a device assigned" -msgstr "Vybraný protokol potřebuje mít přiřazeno zařízení" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Systém maže konfigurační oddíl, po skončení procesu bude automaticky " -"restartován." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Systém nyní nahrává firmware.
    NEVYPÍNEJTE ZAŘÍZENÍ!
    Počkejte " -"několik minut než se pokusíte znovu připojit. V záležitosti na vašem " -"nastavení, bude možná nutné obnovit adresu vašeho počítače, aby jste se " -"mohli znovu připojit." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "Nejsou žádné aktivní zápůjčky." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "Nejsou zde žádné nevyřízené změny k navrácení!" - -msgid "There are no pending changes!" -msgstr "Nejsou zde žádné nevyřízené změny!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Zatím zde není přiřazeno zařízení, prosím připojte nějaké v záložce " -"\"Fyzické nastavení\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Na tomto routeru není nastaveno heslo. Prosím, nastavte heslo uživatele root " -"tak, abyste ochránili webové rozhraní a mohli povolit SSH." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Zde vidíte obsah souboru /etc/rc.local. Příkazy, které sem vložíte (před " -"příkaz 'exit 0') budou spuštěny na konci bootovacího procesu." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Toto je jediný DHCP v mistní síti" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Toto je systémový crontab, v němž můžete nastavit naplánované úlohy. " -"Podrobnosti naleznete v crontab(5)." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"V tomto seznamu vidíte přehled aktuálně běžících systémových procesů a " -"jejich stavy." - -msgid "This page gives an overview over currently active network connections." -msgstr "Tato stránka zobrazuje přehled aktivních síťových spojení." - -msgid "This section contains no values yet" -msgstr "Tato sekce zatím neobsahuje žádné hodnoty" - -msgid "Time Synchronization" -msgstr "Synchronizace času" - -msgid "Time Synchronization is not configured yet." -msgstr "Synchronizace času dosud není nakonfigurována." - -msgid "Timezone" -msgstr "Časové pásmo" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Zde můžete nahrát dříve vygenerovaný záložní archiv, pokud chcete obnovit " -"konfigurační soubory. Pro obnovení továrního nastavení stiskněte \"Obnovit " -"výchozí\" (možné pouze s obrazy squashfs)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Dostupná celkem" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Provoz" - -msgid "Transfer" -msgstr "Přenos" - -msgid "Transmission Rate" -msgstr "Vysílací rychlost" - -msgid "Transmit" -msgstr "Přenos" - -msgid "Transmit Power" -msgstr "Vysílací výkon" - -msgid "Transmitter Antenna" -msgstr "Anténa vysílače" - -msgid "Trigger" -msgstr "Spouštění" - -msgid "Trigger Mode" -msgstr "Trigger mód" - -msgid "Tunnel ID" -msgstr "ID tunelu" - -msgid "Tunnel Interface" -msgstr "Rozhraní tunelu" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Tx-Power" - -msgid "Type" -msgstr "Typ" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Pouze UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB zařízení" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Neznámý" - -msgid "Unknown Error, password not changed!" -msgstr "Neznámá chyba, heslo nebylo změněno!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "Nespravovaný" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Neuložené změny" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Nepodporovaný typ protokolu." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Aktualizovat seznamy" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Nahrát obraz pro upgrade systému, jímž bude přepsán běžící firmware. " -"Zkontrolujte \"Keep settings\" za účelem udržení aktuální konfigurace " -"(vyžaduje obraz kompatabilního firmwaru)." - -msgid "Upload archive..." -msgstr "Nahrát archiv..." - -msgid "Uploaded File" -msgstr "Nahrát soubor" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Použít /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Použít DHCP bránu" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Pomocí ISO/IEC 3166 alpha2 kódů zemí." - -msgid "Use MTU on tunnel interface" -msgstr "Použít MTU na rozhraní tunelu" - -msgid "Use TTL on tunnel interface" -msgstr "Použít TTL na rozhraní tunelu" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Použít příznak broadcastu" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Použít vlastní DNS servery" - -msgid "Use default gateway" -msgstr "Použít výchozí bránu" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "Použít směrovací tabulku" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Použitím tlačítka Přidat přidáte novou zápůjčku (lease). MAC " -"adresa identifikuje počítač, IPv4 adresa určuje, jaká pevná " -"adresa bude použita. Hostname je přiřazeno jako symbolické jméno." - -msgid "Used" -msgstr "Použit" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Uživatelské jméno" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANy na %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANy na %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "VPN server" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "Ověřit" - -msgid "Version" -msgstr "Verze" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP Open System" - -msgid "WEP Shared Key" -msgstr "Sdílený klíč WEP" - -msgid "WEP passphrase" -msgstr "WEP heslo" - -msgid "WMM Mode" -msgstr "WMM mód" - -msgid "WPA passphrase" -msgstr "WPA heslo" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"Šifrování WPA vyžaduje nainstalovaný wpa_supplicant (pro klientský režim) " -"nebo hostapd (pro AP a ad-hoc režim)." - -msgid "Waiting for changes to be applied..." -msgstr "Čekání na realizaci změn..." - -msgid "Waiting for command to complete..." -msgstr "Čekání na dokončení příkazu..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Varování" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Bezdrátová síť" - -msgid "Wireless Adapter" -msgstr "Bezdrátový adaptér" - -msgid "Wireless Network" -msgstr "Bezdrátová síť" - -msgid "Wireless Overview" -msgstr "Přehled bezdrátových sití" - -msgid "Wireless Security" -msgstr "Zabezpečení bezdrátové sítě" - -msgid "Wireless is disabled" -msgstr "Bezdrátová síť vypnuta" - -msgid "Wireless is not associated" -msgstr "Bezdrátová síť nespojena" - -msgid "Wireless is restarting..." -msgstr "Probíhá restartování bezdrátové sítě..." - -msgid "Wireless network is disabled" -msgstr "Bezdrátová síť je zakázána" - -msgid "Wireless network is enabled" -msgstr "Bezdrátová síť je povolena" - -msgid "Write received DNS requests to syslog" -msgstr "Zapisovat přijaté požadavky DNS do systemového logu" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Zde můžete povolit nebo zakázat init skripty. Změny se projeví po restartu " -"zařízení.
    Varování: Pokud zakážete základní init skripty jako " -"\"network\", vaše zařízení se může stát nepřístupným!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Aby LuCI fungoval správně, musíte mít v prohlížeči povolený JavaScript." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "libovolný" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "přemostěný" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "vytvoří most přes vybraná rozhraní" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "zakázat" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "expirované" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Soubor, ve kterém budou uloženy zadané DHCP výpůjčky (leases)" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "plný-duplex" - -msgid "half-duplex" -msgstr "poloviční-duplex" - -msgid "hidden" -msgstr "skrytý" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "pokud cílem je síť" - -msgid "input" -msgstr "vstup" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "místní DNS soubor" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "ne" - -msgid "no link" -msgstr "žádné spojení" - -msgid "none" -msgstr "žádný" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "off" - -msgid "on" -msgstr "on" - -msgid "open" -msgstr "" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "směrované" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "označený" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "neznámý" - -msgid "unlimited" -msgstr "neomezený" - -msgid "unspecified" -msgstr "nespecifikovaný" - -msgid "unspecified -or- create:" -msgstr "nespecifikovaný -nebo- vytvořit:" - -msgid "untagged" -msgstr "neoznačený" - -msgid "yes" -msgstr "ano" - -msgid "« Back" -msgstr "« Zpět" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Aktivovat tuto síť" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Hermes 802.11b bezdrátový ovladač" - -#~ msgid "Interface is shutting down..." -#~ msgstr "Rozhraní se vypíná..." - -#~ msgid "Interface reconnected" -#~ msgstr "Rozhraní bylo znovu připojeno" - -#~ msgid "Interface shut down" -#~ msgstr "Rozhraní bylo vypnuto" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Prism2/2.5/3 802.11b Wireless Controller" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "RaLink 802.11%s Wireless Controller" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "Opravdu vypnout rozhraní \"%s\" ?\n" -#~ "Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím " -#~ "tohoto rozhraní." - -#~ msgid "Reconnecting interface" -#~ msgstr "Přepojuji rozhraní" - -#~ msgid "Shutdown this network" -#~ msgstr "Shodit tuto síť" - -#~ msgid "Wireless restarted" -#~ msgstr "Bezdrátová síť restartována" - -#~ msgid "Wireless shut down" -#~ msgstr "Bezdrátová síť vypnuta" - -#~ msgid "DHCP Leases" -#~ msgstr "DHCP výpůjčky" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "DHCPv6 přidělené IP" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "Opravdu odstranit toto rozhraní? Odstranění nelze vrátit zpět!\n" -#~ "Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím " -#~ "tohoto rozhraní." - -#, fuzzy -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "Opravdu vypnout síť ?\n" -#~ "Můžete ztratit přístup k zařízení, pokud jste připojeni prostřednictvím " -#~ "tohoto rozhraní." - -#~ msgid "Sort" -#~ msgstr "Seřadit" - -#~ msgid "help" -#~ msgstr "pomoc" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "Stav IPv4 WAN" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "Stav IPv6 WAN" - -#~ msgid "Apply" -#~ msgstr "Použít" - -#~ msgid "Applying changes" -#~ msgstr "Probíhá uplatňování nastavení" - -#~ msgid "Configuration applied." -#~ msgstr "Nastavení uplatněno." - -#~ msgid "Save & Apply" -#~ msgstr "Uložit & použít" - -#~ msgid "The following changes have been committed" -#~ msgstr "Následující změny byly provedeny" - -#~ msgid "There are no pending changes to apply!" -#~ msgstr "Nejsou zde žádné nevyřízené změny k aplikaci!" - -#~ msgid "Action" -#~ msgstr "Akce" - -#~ msgid "Buttons" -#~ msgstr "Tlačítka" - -#~ msgid "Handler" -#~ msgstr "Handler" - -#~ msgid "Maximum hold time" -#~ msgstr "Maximální doba držení" - -#~ msgid "Minimum hold time" -#~ msgstr "Minimální čas zápůjčky" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "Cesta ke spustitelnému souboru, který obsluhuje událost tlačítka" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "Na této stránce si můžete nastavit vlastní události tlačítek" - -#~ msgid "Leasetime" -#~ msgstr "Doba trvání zápůjčky" - -#~ msgid "AR Support" -#~ msgstr "Podpora AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s bezdrátový ovladač" - -#~ msgid "Background Scan" -#~ msgstr "Vyhledávat na pozadí" - -#~ msgid "Compression" -#~ msgstr "Komprese" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Zakázat HW-Beacon časovač" - -#~ msgid "Do not send probe responses" -#~ msgstr "Neodpovídat na vyhledávání" - -#~ msgid "Fast Frames" -#~ msgstr "Rychlé rámce" - -#~ msgid "Maximum Rate" -#~ msgstr "Nejvyšší míra" - -#~ msgid "Minimum Rate" -#~ msgstr "Nejnižší hodnota" - -#~ msgid "Multicast Rate" -#~ msgstr "Hodnota vícesměrového vysílání" - -#~ msgid "Outdoor Channels" -#~ msgstr "Venkovní kanály" - -#~ msgid "Regulatory Domain" -#~ msgstr "Doména regulátora" - -#~ msgid "Separate WDS" -#~ msgstr "Oddělovat WDS" - -#~ msgid "Static WDS" -#~ msgstr "Statický WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo mód" - -#~ msgid "XR Support" -#~ msgstr "Podpora XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Pokud není zaškrtnuto, bude vytvořena dodatečná síť." - -#~ msgid "Join Network: Settings" -#~ msgstr "Připojit k síti: nastavení" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Port %d je neoznačený ve více VLAN!" - -#~ msgid "VLAN Interface" -#~ msgstr "Rozhraní VLAN" diff --git a/luci-base/po/de/base.po b/luci-base/po/de/base.po deleted file mode 100644 index cb599601f..000000000 --- a/luci-base/po/de/base.po +++ /dev/null @@ -1,4274 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 17:57+0200\n" -"PO-Revision-Date: 2018-07-15 12:25+0200\n" -"Last-Translator: JoeSemler \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s darf nicht ohne VLAN-Tag in mehreren VLAN-Gruppen vorkommen!" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d Minuten Abschnitt, %d Sekunden Intervall)" - -msgid "(%s available)" -msgstr "(%s verfügbar)" - -msgid "(empty)" -msgstr "(leer)" - -msgid "(no interfaces attached)" -msgstr "(keine Schnittstellen)" - -msgid "-- Additional Field --" -msgstr "-- Zusätzliches Feld --" - -msgid "-- Please choose --" -msgstr "-- Bitte auswählen --" - -msgid "-- custom --" -msgstr "-- benutzerdefiniert --" - -msgid "-- match by device --" -msgstr "-- anhand Gerätedatei selektieren --" - -msgid "-- match by label --" -msgstr "-- anhand Label selektieren --" - -msgid "-- match by uuid --" -msgstr "-- UUID vergleichen --" - -msgid "-- please select --" -msgstr "-- Bitte auswählen --" - -msgid "1 Minute Load:" -msgstr "Systemlast (1 Minute):" - -msgid "15 Minute Load:" -msgstr "Systemlast (15 Minuten):" - -msgid "4-character hexadecimal ID" -msgstr "vierstellige hexadezimale ID" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Systemlast (5 Minuten):" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "sechstellige hexadezimale ID (ohne Doppelpunkte)" - -msgid "802.11r Fast Transition" -msgstr "802.11r: Schnelle Client-Übergabe" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "Maximales Timeout für Quelladressprüfungen (SA Query)" - -msgid "802.11w Association SA Query retry timeout" -msgstr "Wiederholungsintervall für Quelladressprüfungen (SA Query)" - -msgid "802.11w Management Frame Protection" -msgstr "802.11w: Schutz von Management-Frames aktivieren" - -msgid "802.11w maximum timeout" -msgstr "802.11w: Maximales Timeout" - -msgid "802.11w retry timeout" -msgstr "802.11w: Wiederholungsintervall" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS Abfrageport" - -msgid "DNS server port" -msgstr "DNS Serverport" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS-Server in der Reihenfolge der " -"Resolv-Datei abfragen" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Adresse" - -msgid "IPv4-Gateway" -msgstr "IPv4-Gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netzmaske" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "IPv6 Host- oder Netzwerk-Addresse (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "IPv6-Suffix (hexadezimal)" - -msgid "LED Configuration" -msgstr "LED Konfiguration" - -msgid "LED Name" -msgstr "LED Name" - -msgid "MAC-Address" -msgstr "MAC-Adresse" - -msgid "DUID" -msgstr "" -"DUID" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. Anzahl von DHCP-Leases" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. Größe von EDNS0-Paketen" - -msgid "Max. concurrent queries" -msgstr "Max. Anzahl gleichzeitiger Abfragen" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    Hinweis: Der Cron-Dienst muss manuell neu gestartet werden wenn die " -"Crontab-Datei vor der Bearbeitung leer war." - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Grenzwert für ARP-Auflösungsversuche" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "ATM (Asynchroner Transfer-Modus)" - -msgid "ATM Bridges" -msgstr "ATM Brücken" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM Virtual Channel Identifier (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM Virtual Path Identifier (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM Brücken exponieren in AAL5 gekapselten Ethernetverkehr als virtuelle " -"Linux Netzwerkschnittstellen welche z.B. in Verbindung mit DHCP oder PPP " -"genutzt werden können um sich in das Providernetzwerk einzuwählen." - -msgid "ATM device number" -msgstr "ATM Geräteindex" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Access Concentrator" - -msgid "Access Point" -msgstr "Access Point" - -msgid "Actions" -msgstr "Aktionen" - -msgid "Active IPv4-Routes" -msgstr "Aktive IPv4-Routen" - -msgid "Active IPv6-Routes" -msgstr "Aktive IPv6-Routen" - -msgid "Active Connections" -msgstr "Aktive Verbindungen" - -msgid "Active DHCP Leases" -msgstr "Aktive DHCP-Leases" - -msgid "Active DHCPv6 Leases" -msgstr "Aktive DHCPv6-Leases" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Hinzufügen" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Lokalen Domainsuffx an Namen aus der Hosts-Datei anhängen" - -msgid "Add new interface..." -msgstr "Neue Schnittstelle hinzufügen..." - -msgid "Additional Hosts files" -msgstr "Zusätzliche Hosts-Dateien" - -msgid "Additional servers file" -msgstr "Zusätzliche Nameserver-Datei" - -msgid "Address" -msgstr "Adresse" - -msgid "Address to access local relay bridge" -msgstr "Adresse der lokalen Relay-Brücke" - -msgid "Administration" -msgstr "Administration" - -msgid "Advanced Settings" -msgstr "Erweiterte Einstellungen" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "Vollständige Sendeleistung (ACTATP)" - -msgid "Alert" -msgstr "Alarm" - -msgid "Alias Interface" -msgstr "Alias-Schnittstelle" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" -"IP-Adressen sequenziell vergeben, beginnend mit der kleinsten verfügbaren " -"Adresse" - -msgid "Allocate IP sequentially" -msgstr "IPs sequenziell vergeben" - -msgid "Allow SSH password authentication" -msgstr "Erlaube Anmeldung per Passwort" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Alle außer gelistete erlauben" - -msgid "Allow legacy 802.11b rates" -msgstr "Veraltete 802.11b Raten erlauben" - -msgid "Allow listed only" -msgstr "Nur gelistete erlauben" - -msgid "Allow localhost" -msgstr "Erlaube localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Entfernten Hosts erlauben zu lokale SSH-Tunnel-Ports zu verbinden" - -msgid "Allow root logins with password" -msgstr "\"root\" Login mit Passwort aktivieren" - -msgid "Allow the root user to login with password" -msgstr "" -"Erlaubt es dem root Benutzer sich mit einem Passwort statt einem " -"Zertifikat einzuloggen" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Dies erlaubt DNS-Antworten im 127.0.0.0/8 Bereich der z.B. für RBL Dienste " -"genutzt wird" - -msgid "Allowed IPs" -msgstr "Erlaubte IP-Adressen" - -msgid "Always announce default router" -msgstr "Immer Defaultrouter ankündigen" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "Annex B (alle Arten)" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "Annex J (alle Arten)" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "Annex M (alle Arten)" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" -"Kündigt im Netzwerk einen Defaultrouter an, auch wenn kein öffentlicher " -"Adressbereich verfügbar ist." - -msgid "Announced DNS domains" -msgstr "Angekündigte Suchdomains" - -msgid "Announced DNS servers" -msgstr "Angekündigte DNS Server" - -msgid "Anonymous Identity" -msgstr "Anonyme Identität" - -msgid "Anonymous Mount" -msgstr "automatische Mountpunkte" - -msgid "Anonymous Swap" -msgstr "automatische Swap-Aktivierung" - -msgid "Antenna 1" -msgstr "Antenne 1" - -msgid "Antenna 2" -msgstr "Antenne 2" - -msgid "Antenna Configuration" -msgstr "Antennenkonfiguration" - -msgid "Any zone" -msgstr "Beliebige Zone" - -msgid "Apply request failed with status %h" -msgstr "" -"Anforderung zur Anwendung der Änderungen mit Status %h " -"fehlgeschlagen" - -msgid "Apply unchecked" -msgstr "Ungeprüft anwenden" - -msgid "Architecture" -msgstr "Architektur" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" -"Legt die Größe der dieser Schnittstelle zugewiesenen Partitionen der " -"öffentlichen IPv6-Präfixe fest." - -msgid "Assign interfaces..." -msgstr "Schnittstellen zuweisen..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" -"Der Schnittstelle zugewiesene Partitionen des Adressraums werden anhand " -"dieser hexadezimalen ID gewählt." - -msgid "Associated Stations" -msgstr "Assoziierte Clients" - -msgid "Associations" -msgstr "Assoziierungen" - -msgid "Auth Group" -msgstr "Berechtigungsgruppe" - -msgid "Authentication" -msgstr "Authentifizierung" - -msgid "Authentication Type" -msgstr "Authentifizierungstyp" - -msgid "Authoritative" -msgstr "Authoritativ" - -msgid "Authorization Required" -msgstr "Autorisierung benötigt" - -msgid "Auto Refresh" -msgstr "Automatisches Neuladen" - -msgid "Automatic" -msgstr "automatisch" - -msgid "Automatic Homenet (HNCP)" -msgstr "automatisches Homenet-Protokoll (HNCP)" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "Dateisystem vor dem Einhängen automatisch auf Fehler prüfen" - -msgid "Automatically mount filesystems on hotplug" -msgstr "Unkonfigurierte Dateisysteme automatisch einhängen" - -msgid "Automatically mount swap on hotplug" -msgstr "Unkonfigurierte SWAP-Partitionen automatisch aktivieren" - -msgid "Automount Filesystem" -msgstr "Dateisystem automatisch einhängen" - -msgid "Automount Swap" -msgstr "SWAP automatisch aktivieren" - -msgid "Available" -msgstr "Verfügbar" - -msgid "Available packages" -msgstr "Verfügbare Pakete" - -msgid "Average:" -msgstr "Durchschnitt:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Zurück" - -msgid "Back to Overview" -msgstr "Zurück zur Übersicht" - -msgid "Back to configuration" -msgstr "Zurück zur Konfiguration" - -msgid "Back to overview" -msgstr "Zurück zur Übersicht" - -msgid "Back to scan results" -msgstr "Zurück zu den Scan-Ergebnissen" - -msgid "Backup" -msgstr "Sichern" - -msgid "Backup / Flash Firmware" -msgstr "Backup / Firmware Update" - -msgid "Backup file list" -msgstr "Liste zu sichernder Dateien" - -msgid "Bad address specified!" -msgstr "Ungültige Adresse angegeben!" - -msgid "Band" -msgstr "Frequenztyp" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Nachfolgend wird eine generierte Liste der zu sichernden Dateien angezeigt. " -"Sie enthält alle notwendigen Systemdateien sowie die von opkg als geändert " -"markierten Konfigurationsdateien. Des Weiteren sind die durch " -"benutzerdefinierte Dateiemuster betroffenen Dateien enthalten." - -msgid "Bind interface" -msgstr "An Schnittstelle binden" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" -"Nur auf angegebenen Schnittstellen reagieren, anstatt auf allen " -"Schnittstellen zu antworten." - -msgid "Bind the tunnel to this interface (optional)." -msgstr "Tunnelendpunkt an diese Schnittstelle binden (optional)" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Ungültige \"NX-Domain\" Antworten ignorieren" - -msgid "Bridge" -msgstr "Bridge" - -msgid "Bridge interfaces" -msgstr "Netzwerkbrücke" - -msgid "Bridge unit number" -msgstr "Geräteindex der Brücke" - -msgid "Bring up on boot" -msgstr "Während des Bootvorgangs starten" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s W-LAN Adapter" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 W-LAN Adapter" - -msgid "Buffered" -msgstr "Gepuffert" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"Konfiguriert die distributionsspezifischen Paket-Repositories. Diese " -"Konfiguration wird bei Upgrades NICHT gesichert." - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" -"CA-Zertifikat (wird beim ersten Verbindungsaufbau automatisch gespeichert " -"wenn leer). " - -msgid "CPU usage (%)" -msgstr "CPU-Nutzung (%)" - -msgid "Call failed" -msgstr "Anruf fehlgeschlagen" - -msgid "Cancel" -msgstr "Abbrechen" - -msgid "Category" -msgstr "Kategorie" - -msgid "Chain" -msgstr "Kette" - -msgid "Changes" -msgstr "Änderungen" - -msgid "Changes applied." -msgstr "Änderungen angewendet." - -msgid "Changes have been reverted." -msgstr "Änderungen wurden verworfen" - -msgid "Changes the administrator password for accessing the device" -msgstr "Ändert das Administratorpasswort für den Zugriff auf dieses Gerät" - -msgid "Channel" -msgstr "Kanal" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" -"Kanal %d ist in der Regulierungszone \"%s\" nicht verfügbar und wurde " -"automatisch auf %d gesetzt." - -msgid "Check" -msgstr "Prüfen" - -msgid "Check filesystems before mount" -msgstr "Dateisysteme prüfen" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" -"Diese Option setzen um existierende Netzwerke auf dem Radio zu löschen." - -msgid "Checksum" -msgstr "Prüfsumme" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Ordnet dieser Schnittstelle eine Firewallzone zu. Den Wert " -"unspezifiziert wählen um die Schnittstelle von der Zone zu lösen " -"oder das erstellen Feld ausfüllen um eine neue Zone direkt " -"anzulegen und zuzuweisen." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Wählt die Netzwerke die dieser WLAN-Schnittstelle zugeordnet werden. Das " -"erstelle-Feld ausfüllen um ein neues Netzwerk zu erzeugen." - -msgid "Cipher" -msgstr "Verschlüsselungsalgorithmus" - -msgid "Cisco UDP encapsulation" -msgstr "Cisco UDP-Kapselung" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Zum Herunterladen der aktuellen Konfigurationsdateien als gepacktes Archiv " -"\"Sicherung erstellen\" drücken." - -msgid "Client" -msgstr "Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "Zu sendende Client-ID bei DHCP Anfragen" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Inaktive Verbindungen nach Ablauf dieser Zeit in Sekunden schließen (0 um " -"die Verbindung immer aufrecht zu erhalten)." - -msgid "Close list..." -msgstr "Schließe Liste..." - -msgid "Collecting data..." -msgstr "Sammle Daten..." - -msgid "Command" -msgstr "Befehl" - -msgid "Common Configuration" -msgstr "Allgemeine Konfiguration" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" -"Deaktiviert bestimmte EAPOL-Key-Retransmissionen um Key-Reinstallation " -"(KRACK) Angriffe auf Client-Seite zu erschweren. Diese Abhilfemaßnahme kann " -"Kompatibilitätsprobleme verursachen und die Zuverlässigkeit von " -"Schlüsselerneuerungen in ausgelasteten Umgebungen verringern." - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Configuration failed" -msgstr "Konfiguration fehlgeschlagen" - -msgid "Configuration files will be kept." -msgstr "Konfigurationsdateien sichern" - -msgid "Configuration has been applied." -msgstr "Die Konfiguration wurde angewendet." - -msgid "Configuration has been rolled back!" -msgstr "Die Konfiguration wurde zurückgerollt!" - -msgid "Confirmation" -msgstr "Bestätigung" - -msgid "Connect" -msgstr "Verbinden" - -msgid "Connected" -msgstr "Verbunden" - -msgid "Connection Limit" -msgstr "Verbindungslimit" - -msgid "Connection attempt failed" -msgstr "Verbindungsversuch fehlgeschlagen" - -msgid "Connections" -msgstr "Verbindungen" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" -"Das Gerät konnte nach Anwendung der Konfigurationsänderungen nicht mehr " -"erreicht werden. Unter Umständen müssen Sie sich neu verbinden wenn " -"netzwerkbezogene Einstellungen wie die IP-Adresse oder W-LAN Passwörter " -"geändert wurden." - -msgid "Country" -msgstr "Land" - -msgid "Country Code" -msgstr "Ländercode" - -msgid "Cover the following interface" -msgstr "Die folgende Schnittstelle abdecken" - -msgid "Cover the following interfaces" -msgstr "Die folgende Schnittstellen abdecken" - -msgid "Create / Assign firewall-zone" -msgstr "Firewallzone anlegen / zuweisen" - -msgid "Create Interface" -msgstr "Erzeuge Schnittstelle" - -msgid "Create a bridge over multiple interfaces" -msgstr "Erzeuge Netzwerkbrücke über mehrere Schnittstellen" - -msgid "Critical" -msgstr "Kritisch" - -msgid "Cron Log Level" -msgstr "Cron Protokolllevel" - -msgid "Custom Interface" -msgstr "benutzerdefinierte Schnittstelle" - -msgid "Custom delegated IPv6-prefix" -msgstr "Delegierter IPv6-Präfix" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" -"Selbst konfigurierte Paket-Repositories, z.B. private oder inoffizielle " -"Quellen. Diese Konfiguration wird by Upgrades gesichert." - -msgid "Custom feeds" -msgstr "Eigene Repositories" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" -"Eigene Dateien wir Zertifikate oder Scripte können unter Umständen auf dem " -"System verbleiben. Um dies zu vermeiden, sollte zuerst auf " -"Werkseinstellungen zurückgesetzt werden." - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "Passt das Verhalten der Geräte-LEDs an - wenn dies möglich ist." - -msgid "DHCP Server" -msgstr "DHCP-Server" - -msgid "DHCP and DNS" -msgstr "DHCP und DNS" - -msgid "DHCP client" -msgstr "DHCP Client" - -msgid "DHCP-Options" -msgstr "DHCP-Optionen" - -msgid "DHCPv6 client" -msgstr "DHCPv6 Client" - -msgid "DHCPv6-Mode" -msgstr "DHCPv6-Modus" - -msgid "DHCPv6-Service" -msgstr "DHCPv6-Dienst" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNS-Weiterleitungen" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "DNSSEC Signaturstatus prüfen" - -msgid "DPD Idle Timeout" -msgstr "DPD Inaktivitätstimeout" - -msgid "DS-Lite AFTR address" -msgstr "DS-Lite AFTR-Adresse" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "DSL Leitungsmodus" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "Datenrate" - -msgid "Debug" -msgstr "Debug" - -msgid "Default %d" -msgstr "Standard %d" - -msgid "Default gateway" -msgstr "Default Gateway" - -msgid "Default is stateless + stateful" -msgstr "Der Standardwert ist zustandslos und zustandsorientiert" - -msgid "Default state" -msgstr "Ausgangszustand" - -msgid "Define a name for this network." -msgstr "Definiert einen Namen für dieses Netzwerk" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Definiert zusätzliche DHCP-Optionen, z.B. \"6,192.168.2.1,192.168.2.2\" um einen anderen DNS-Server an Clients zu verteilen." - -msgid "Delete" -msgstr "Löschen" - -msgid "Delete this network" -msgstr "Dieses Netzwerk löschen" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Beschreibung" - -msgid "Design" -msgstr "Design" - -msgid "Destination" -msgstr "Ziel" - -msgid "Device" -msgstr "Gerät" - -msgid "Device Configuration" -msgstr "Gerätekonfiguration" - -msgid "Device is rebooting..." -msgstr "Das Gerät startet neu..." - -msgid "Device unreachable!" -msgstr "Das Gerät ist nicht erreichbar" - -msgid "Device unreachable! Still waiting for device..." -msgstr "Gerät nicht erreichbar! Wartet immer noch..." - -msgid "Diagnostics" -msgstr "Diagnosen" - -msgid "Dial number" -msgstr "Einwahlnummer" - -msgid "Directory" -msgstr "Verzeichnis" - -msgid "Disable" -msgstr "Deaktivieren" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"DHCP-Server auf " -"dieser Schnittstelle deaktivieren" - -msgid "Disable DNS setup" -msgstr "DNS-Verarbeitung deaktivieren" - -msgid "Disable Encryption" -msgstr "Verschlüsselung deaktivieren" - -msgid "Disable this network" -msgstr "Dieses Netzwerk deaktivieren" - -msgid "Disabled" -msgstr "Deaktiviert" - -msgid "Disabled (default)" -msgstr "Deaktiviert (Standard)" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Eingehende RFC1918-Antworten verwerfen" - -msgid "Disconnection attempt failed" -msgstr "Verbindungstrennung fehlgeschlagen" - -msgid "Dismiss" -msgstr "Schließen" - -msgid "Displaying only packages containing" -msgstr "Nur Pakete mit folgendem Inhalt anzeigen" - -msgid "Distance Optimization" -msgstr "Distanzoptimierung" - -msgid "Distance to farthest network member in meters." -msgstr "Distanz zum am weitesten entfernten Funkpartner in Metern." - -msgid "Distribution feeds" -msgstr "Distributionsrepositories" - -msgid "Diversity" -msgstr "Diversität" - -# Nur für NAT-Firewalls? -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq ist ein kombinierter DHCP-Server und DNS-Forwarder für NAT " -"Router" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Negative Antworten nicht zwischenspeichern, z.B. bei nicht existierenden " -"Domains" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Keine Anfragen weiterleiten welche nicht durch öffentliche Server " -"beantwortet werden können" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Keine Rückwärtsauflösungen für lokale Netzwerke weiterleiten" - -msgid "Domain required" -msgstr "Anfragen nur mit Domain" - -msgid "Domain whitelist" -msgstr "Domain-Whitelist" - -msgid "Don't Fragment" -msgstr "Nicht fragmentieren" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "Anfragen ohne Domainnamen nicht weiterleiten" - -msgid "Down" -msgstr "runter" - -msgid "Download and install package" -msgstr "Paket herunterladen und installieren" - -msgid "Download backup" -msgstr "Backup herunterladen" - -msgid "Downstream SNR offset" -msgstr "Downstream SNR-Offset" - -msgid "Dropbear Instance" -msgstr "Dropbear Instanz" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Der SSH-Server ermöglicht Shell-Zugriff über das Netzwerk und bietet einen " -"integrierten SCP-Dienst." - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "Dynamisches DHCP" - -msgid "Dynamic tunnel" -msgstr "Dynamischer Tunnel" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"DHCP Adressen dynamisch erzeugen. Wenn dies deaktiviert ist, werden nur " -"Clients mit konfigurierten statischen Leases bedient" - -msgid "EA-bits length" -msgstr "EA-Bitlänge" - -msgid "EAP-Method" -msgstr "EAP-Methode" - -msgid "Edit" -msgstr "Bearbeiten" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" -"Um die Syntaxfehler zu beheben, bitte die obige unformatierte Konfiguration " -"anpassen und \"Speichern\" klicken um die Seite neu zu laden." - -msgid "Edit this interface" -msgstr "Diese Schnittstelle bearbeiten" - -msgid "Edit this network" -msgstr "Dieses Netzwerk bearbeiten" - -msgid "Emergency" -msgstr "Notfall" - -msgid "Enable" -msgstr "Aktivieren" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" -"IGMP-Erkennung " -"aktivieren" - -msgid "Enable STP" -msgstr "STP aktivieren" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Dynamisches HE.net IP-Adress-Update aktivieren" - -msgid "Enable IPv6 negotiation" -msgstr "IPv6 anfordern" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Aushandeln von IPv6-Adressen auf der PPP-Verbindung aktivieren" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Aktiviere Jumbo Frame Durchleitung" - -msgid "Enable NTP client" -msgstr "Aktiviere NTP-Client" - -msgid "Enable Single DES" -msgstr "Single-DES aktivieren" - -msgid "Enable TFTP server" -msgstr "TFTP-Server aktivieren" - -msgid "Enable VLAN functionality" -msgstr "VLAN-Funktionalität aktivieren" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "WPS-via-Knopfdruck aktivieren, erfordert WPA(2)-PSK" - -#, fuzzy -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "Key Reinstallation (KRACK) Gegenmaßnahmen aktivieren " - -msgid "Enable learning and aging" -msgstr "Learning und Aging aktivieren" - -msgid "Enable mirroring of incoming packets" -msgstr "Port-Mirroring für eingehende Pakete aktivieren" - -msgid "Enable mirroring of outgoing packets" -msgstr "Port-Mirroring für ausgehende Pakete aktivieren" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "Das DF-Bit (Nicht fragmentieren) auf gekapselten Paketen setzen." - -msgid "Enable this mount" -msgstr "Diesen Mountpunkt aktivieren" - -msgid "Enable this network" -msgstr "Dieses Netzwerk aktivieren" - -msgid "Enable this swap" -msgstr "Diesen Auslagerungsspeicher aktivieren" - -msgid "Enable/Disable" -msgstr "Aktivieren/Deaktivieren" - -msgid "Enabled" -msgstr "Aktiviert" - -msgid "Enables IGMP snooping on this bridge" -msgstr "Aktiviert die automatische IGMP-Erkennung auf dieser Netzwerkbrücke" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" -"Aktiviert schnelles Roaming zwischen Access-Points des selben " -"Mobilitätsbereiches" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Aktiviert das Spanning Tree Protokoll auf dieser Netzwerkbrücke" - -msgid "Encapsulation mode" -msgstr "Kapselung" - -msgid "Encryption" -msgstr "Verschlüsselung" - -msgid "Endpoint Host" -msgstr "Entfernter Server" - -msgid "Endpoint Port" -msgstr "Entfernter Port" - -msgid "Enter custom value" -msgstr "Eigenen Wert angeben" - -msgid "Enter custom values" -msgstr "Eigene Werte angeben" - -msgid "Erasing..." -msgstr "Lösche..." - -msgid "Error" -msgstr "Fehler" - -msgid "Errored seconds (ES)" -msgstr "Fehlersekunden (ES)" - -msgid "Ethernet Adapter" -msgstr "Netzwerkschnittstelle" - -msgid "Ethernet Switch" -msgstr "Netzwerk Switch" - -msgid "Exclude interfaces" -msgstr "Schnittstellen ausschließen" - -msgid "Expand hosts" -msgstr "Hosts vervollständigen" - -msgid "Expires" -msgstr "Verfällt" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Gültigkeitsdauer von vergebenen Adressen. Das Minimum sind 2 Minuten " -"(2m)." - -msgid "External" -msgstr "Extern" - -msgid "External R0 Key Holder List" -msgstr "Externe R0-Key-Holder-List" - -msgid "External R1 Key Holder List" -msgstr "Externe R1-Key-Holder-List" - -msgid "External system log server" -msgstr "Externer Protokollserver IP" - -msgid "External system log server port" -msgstr "Externer Protokollserver Port" - -msgid "External system log server protocol" -msgstr "Externes Protokollserver Protokoll" - -msgid "Extra SSH command options" -msgstr "Zusätzliche SSH-Kommando-Optionen" - -msgid "FT over DS" -msgstr "FT-über-DS" - -msgid "FT over the Air" -msgstr "FT-drahtlos" - -msgid "FT protocol" -msgstr "FT Protokoll" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" -"Konnte nicht innerhalb von %d Sekunden bestätigen, warte auf Zurückrollen " -"der Änderungen..." - -msgid "File" -msgstr "Datei" - -msgid "Filename of the boot image advertised to clients" -msgstr "Dateiname des Boot-Images welches den Clients mitgeteilt wird." - -msgid "Filesystem" -msgstr "Dateisystem" - -msgid "Filter" -msgstr "Filter" - -msgid "Filter private" -msgstr "Private Anfragen filtern" - -msgid "Filter useless" -msgstr "Windowsanfragen filtern" - -msgid "Finalizing failed" -msgstr "Finalisierung fehlgeschlagen" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" -"Findet alle angeschlossenen Dateisysteme und SWAP-Partitionen und generiert " -"die Konfiguration mit passenden Standardwerten für alle gefundenen Geräte " -"neu." - -msgid "Find and join network" -msgstr "Suchen und Verbinden von Netzwerken" - -msgid "Find package" -msgstr "Paket suchen" - -msgid "Finish" -msgstr "Fertigstellen" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "Firewall-Markierung" - -msgid "Firewall Settings" -msgstr "Firewall Einstellungen" - -msgid "Firewall Status" -msgstr "Firewall-Status" - -msgid "Firmware File" -msgstr "Firmware-Datei" - -msgid "Firmware Version" -msgstr "Firmware Version" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Fester Port für ausgehende DNS-Anfragen" - -msgid "Flash Firmware" -msgstr "Firmware aktualisieren" - -msgid "Flash image..." -msgstr "Firmware aktualisieren..." - -msgid "Flash new firmware image" -msgstr "Neues Firmware Image schreiben" - -msgid "Flash operations" -msgstr "Flash-Operationen" - -msgid "Flashing..." -msgstr "Firmware wird installiert..." - -msgid "Force" -msgstr "Start erzwingen" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "CCMP (AES) erzwingen" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"Aktiviere DHCP-Server für dieses Netzwerk, selbst wenn ein anderer aktiver " -"Server erkannt wurde." - -msgid "Force TKIP" -msgstr "Erzwinge TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Erzwinge TKIP und CCMP (AES)" - -msgid "Force link" -msgstr "Erzwinge Verbindung" - -msgid "Force use of NAT-T" -msgstr "Benutzung von NAT-T erzwingen" - -msgid "Form token mismatch" -msgstr "Abweichendes Formular-Token" - -msgid "Forward DHCP traffic" -msgstr "DHCP Traffic weiterleiten" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "Fehlerkorrektursekunden (FECS)" - -msgid "Forward broadcast traffic" -msgstr "Broadcasts weiterleiten" - -msgid "Forward mesh peer traffic" -msgstr "Mesh-Nachbar-Traffic weiterleiten" - -msgid "Forwarding mode" -msgstr "Weiterleitungstyp" - -msgid "Fragmentation Threshold" -msgstr "Fragmentierungsschwelle" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Frei" - -msgid "Free space" -msgstr "Freier Platz" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" -"Weitere Informationen zu WireGuard-Schnittstellen und Peers unter wireguard.com." - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Nur GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway address is invalid" -msgstr "Gateway-Adresse ist ungültig" - -msgid "Gateway ports" -msgstr "Gateway-Ports" - -msgid "General Settings" -msgstr "Allgemeine Einstellungen" - -msgid "General Setup" -msgstr "Allgemeine Einstellungen" - -msgid "General options for opkg" -msgstr "Allgemeine Optionen für Opkg." - -msgid "Generate Config" -msgstr "Konfiguration generieren" - -msgid "Generate PMK locally" -msgstr "PMK lokal generieren" - -msgid "Generate archive" -msgstr "Sicherung erstellen" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Generischer 802.11%s W-LAN Adapter" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"Die angegebenen Passwörter stimmen nicht überein, das Systempasswort wurde " -"nicht geändert!" - -msgid "Global Settings" -msgstr "Globale Einstellungen" - -msgid "Global network options" -msgstr "Globale Netzwerkeinstellungen" - -msgid "Go to password configuration..." -msgstr "Zur Passwortkonfiguration..." - -msgid "Go to relevant configuration page" -msgstr "Gehe zur entsprechenden Konfigurationsseite" - -msgid "Group Password" -msgstr "Gruppenpasswort" - -msgid "Guest" -msgstr "Gast" - -msgid "HE.net password" -msgstr "HE.net Passwort" - -msgid "HE.net username" -msgstr "HE.net Benutzername" - -msgid "HT mode (802.11n)" -msgstr "HT-Modus (802.11n)" - -msgid "Hang Up" -msgstr "Auflegen" - -msgid "Header Error Code Errors (HEC)" -msgstr "Anzahl Header-Error-Code-Fehler (HEC)" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"An dieser Stelle können Grundeinstellungen des Systems wie Hostname oder " -"Zeitzone vorgenommen werden." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Hier können öffentliche SSH-Schlüssel reinkopiert werden (einer pro Zeile)." - -msgid "Hide ESSID" -msgstr "ESSID verstecken" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Host-Einträge" - -msgid "Host expiry timeout" -msgstr "Host Verfallsdatum" - -msgid "Host-IP or Network" -msgstr "Host-IP oder Netzwerk" - -msgid "Host-Uniq tag content" -msgstr "\"Host-Uniq\"-Bezeichner" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Hostname to send when requesting DHCP" -msgstr "Zu sendender Hostname bei DHCP Anfragen" - -msgid "Hostnames" -msgstr "Rechnernamen" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "IP-Adressen" - -msgid "IP address" -msgstr "IP-Adresse" - -msgid "IP address in invalid" -msgstr "IP-Adresse ist ungültig" - -msgid "IP address is missing" -msgstr "IP-Adresse fehlt" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 Firewall" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "IPv4 Adresse" - -msgid "IPv4 and IPv6" -msgstr "IPv4 und IPv6" - -msgid "IPv4 assignment length" -msgstr "IPv4 Zuweisungslänge" - -msgid "IPv4 broadcast" -msgstr "IPv4 Broadcast" - -msgid "IPv4 gateway" -msgstr "IPv4 Gateway" - -msgid "IPv4 netmask" -msgstr "IPv4 Netzmaske" - -msgid "IPv4 only" -msgstr "nur IPv4" - -msgid "IPv4 prefix" -msgstr "IPv4 Bereich" - -msgid "IPv4 prefix length" -msgstr "Länge des IPv4 Präfix" - -msgid "IPv4-Address" -msgstr "IPv4-Adresse" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 Firewall" - -msgid "IPv6 Neighbours" -msgstr "IPv6 Nachbarn" - -msgid "IPv6 Settings" -msgstr "IPv6 Einstellungen" - -msgid "IPv6 ULA-Prefix" -msgstr "IPv6 ULA-Präfix" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "IPv6 Adresse" - -msgid "IPv6 assignment hint" -msgstr "IPv6 Zuweisungshinweis" - -msgid "IPv6 assignment length" -msgstr "IPv6 Zuweisungslänge" - -msgid "IPv6 gateway" -msgstr "IPv6 Gateway" - -msgid "IPv6 only" -msgstr "nur IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6 Präfix" - -msgid "IPv6 prefix length" -msgstr "Länge des IPv6 Präfix" - -msgid "IPv6 routed prefix" -msgstr "Gerouteter IPv6-Präfix" - -msgid "IPv6 suffix" -msgstr "IPv6 Endung" - -msgid "IPv6-Address" -msgstr "IPv6-Adresse" - -msgid "IPv6-PD" -msgstr "IPv6 Präfixdelegation (PD)" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-über-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-über-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identität" - -msgid "If checked, 1DES is enabled" -msgstr "Aktiviert die Benutzung von 1DES, wenn ausgewählt" - -msgid "If checked, encryption is disabled" -msgstr "Deaktiviert die Verschlüsselung, wenn ausgewählt" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Wenn angegeben, wird das Gerät anhand seiner UUID statt fester Gerätedatei " -"gemounted" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Wenn angegeben, wird das Gerät nach anhhand des Partitionslabels statt " -"fester Gerätedatei gemounted" - -msgid "If unchecked, no default route is configured" -msgstr "Wenn deaktiviert, wird keine Default-Route gesetzt" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Falls deaktiviert werden die zugewiesenen DNS-Server ignoriert" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Falls der Arbeitsspeicher des Routers nicht ausreicht, kann dieser nicht " -"benutzte Daten zeitweise auf einem SWAP-Laufwerk auslagern um so die " -"effektive Größe des Arbeitsspeichers zu erhöhen. Die Auslagerung der Daten " -"ist natürlich bedeutend langsamer als direkte Arbeitsspeicherzugriffe." - -msgid "Ignore /etc/hosts" -msgstr "Ignoriere /etc/hosts" - -msgid "Ignore interface" -msgstr "Schnittstelle ignorieren" - -msgid "Ignore resolve file" -msgstr "Resolv-Datei ignorieren" - -msgid "Image" -msgstr "Image" - -msgid "In" -msgstr "Ein" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" -"Um unauthorisierte Zugriffe auf das System zu verhindern, wurde dieser " -"Request blockiert. Auf \"Weiter\" klicken um zur vorherigen Seite " -"zurückzukehren." - -msgid "Inactivity timeout" -msgstr "Timeout bei Inaktivität" - -msgid "Inbound:" -msgstr "Eingehend:" - -msgid "Info" -msgstr "Info" - -msgid "Initialization failure" -msgstr "Initialisierung fehlgeschlagen" - -msgid "Initscript" -msgstr "Startscript" - -msgid "Initscripts" -msgstr "Startscripte" - -msgid "Install" -msgstr "Installieren" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" -"Bitte \"iputils-traceroute6\" installieren um IPv6-Routenverfolgung nutzen " -"zu können" - -msgid "Install package %q" -msgstr "Installiere Paket %q" - -msgid "Install protocol extensions..." -msgstr "Installiere Protokoll-Erweiterungen" - -msgid "Installed packages" -msgstr "Installierte Pakete" - -msgid "Interface" -msgstr "Schnittstelle" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" -"Das Gerät der Schnittstelle %q wurde automatisch von %q auf %q geändert." - -msgid "Interface Configuration" -msgstr "Schnittstellenkonfiguration" - -msgid "Interface Overview" -msgstr "Schnittstellenübersicht" - -msgid "Interface is reconnecting..." -msgstr "Schnittstelle verbindet neu..." - -msgid "Interface name" -msgstr "Schnittstellenname" - -msgid "Interface not present or not connected yet." -msgstr "Schnittstelle existiert nicht oder ist nicht verbunden." - -msgid "Interfaces" -msgstr "Schnittstellen" - -msgid "Internal" -msgstr "Intern" - -msgid "Internal Server Error" -msgstr "Interner Serverfehler" - -msgid "Invalid" -msgstr "Ungültige Eingabe" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "Ungültige VLAN ID angegeben! Nur IDs zwischen %d und %d sind erlaubt." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Ungültige VLAN ID angegeben! Die ID ist muß eindeutig sein!" - -msgid "Invalid username and/or password! Please try again." -msgstr "" -"Ungültiger Benutzername oder ungültiges Passwort! Bitte erneut versuchen. " - -msgid "Isolate Clients" -msgstr "Clients isolieren" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Das verwendete Image scheint zu groß für den internen Flash-Speicher zu " -"sein. Überprüfen Sie die Imagedatei!" - -msgid "JavaScript required!" -msgstr "JavaScript benötigt!" - -msgid "Join Network" -msgstr "Netzwerk beitreten" - -msgid "Join Network: Wireless Scan" -msgstr "Netzwerk beitreten: Suche nach Netzwerken" - -msgid "Joining Network: %q" -msgstr "Trete Netzwerk %q bei" - -msgid "Keep settings" -msgstr "Konfiguration behalten" - -msgid "Kernel Log" -msgstr "Kernelprotokoll" - -msgid "Kernel Version" -msgstr "Kernel Version" - -msgid "Key" -msgstr "Schlüssel" - -msgid "Key #%d" -msgstr "Schlüssel Nr. %d" - -msgid "Kill" -msgstr "Töten" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP Server" - -msgid "LCP echo failure threshold" -msgstr "LCP Echo Fehler Schwellenwert" - -msgid "LCP echo interval" -msgstr "LCP Echo Intervall" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Label" - -msgid "Language" -msgstr "Sprache" - -msgid "Language and Style" -msgstr "Sprache und Aussehen" - -msgid "Latency" -msgstr "Latenz" - -msgid "Leaf" -msgstr "Zweigstelle" - -msgid "Lease time" -msgstr "Laufzeit" - -msgid "Lease validity time" -msgstr "Lease-Gültigkeitsdauer" - -msgid "Leasefile" -msgstr "Leasedatei" - -msgid "Leasetime remaining" -msgstr "Verbleibende Gültigkeit" - -msgid "Leave empty to autodetect" -msgstr "Zur automatischen Erkennung leer lassen" - -msgid "Leave empty to use the current WAN address" -msgstr "Leer lassen um die aktuelle WAN-Adresse zu verwenden" - -msgid "Legend:" -msgstr "Legende:" - -msgid "Limit" -msgstr "Limit" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" -"DNS-Dienste auf direkte lokale Subnetze beschränken um Missbrauch durch " -"Dritte zu verhindern." - -msgid "Limit listening to these interfaces, and loopback." -msgstr "Dienste auf die angegeben Schnittstellen plus Loopback beschränken." - -msgid "Line Attenuation (LATN)" -msgstr "Dämpfung (LATN)" - -msgid "Line Mode" -msgstr "Verbindungsmodus" - -msgid "Line State" -msgstr "Verbindungsstatus" - -msgid "Line Uptime" -msgstr "Verbindungsdauer" - -msgid "Link On" -msgstr "Verbindung hergestellt" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Liste von DNS-Servern an welche " -"Requests weitergeleitet werden" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" -"Liste von R0KH-Bezeichnern innerhalb der selben Mobilitätsdomäne.
    Format: MAC-Adresse,NAS-Identifier,128 Bit Schlüssel in Hex-Notation.
    Diese Liste wird verwendet um R0KH-Bezeichner (NAS Identifier) einer Ziel-" -"MAC-Adresse zuzuordnen damit ein PMK-R1-Schlüssel von der R0KH angefordert " -"werden kann, mit der sich der Client wärend der anfänglichen " -"Mobilitätsdomänen-Assoziation verbunden hat." - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" -"Liste von R1KH-Bezeichnern innerhalb der selben Mobilitätsdomäne.
    Format: MAC-Adresse,R1KH-ID im MAC-Adress-Format,128 Bit Schlüssel in Hex-" -"Notation.
    Diese Liste wird benutzt um einer R1KH-ID eine Ziel-MAC-" -"Adresse zuzuordnen wenn ein PMK-R1-Schlüssel von einer R0KH-Station " -"versendet wird. Die Liste dient auch zur Authorisierung von R1KH-IDs, welche " -"innerhalb der Mobilitätsdomain PMK-R1-Schlüssel anfordern dürfen." - -msgid "List of SSH key files for auth" -msgstr "Liste der SSH Schlüssel zur Authentifikation" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Liste von Domains für welche RFC1918-Antworten erlaubt sind" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Liste von Servern die falsche \"NX Domain\" Antworten liefern" - -msgid "Listen Interfaces" -msgstr "Aktive Schnittstellen" - -msgid "Listen Port" -msgstr "Aktive Ports" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Nur auf die gegebene Schnittstelle reagieren, nutze alle wenn nicht " -"spezifiziert" - -msgid "Listening port for inbound DNS queries" -msgstr "Serverport für eingehende DNS Abfragen" - -msgid "Load" -msgstr "Last" - -msgid "Load Average" -msgstr "Durchschnittslast" - -msgid "Loading" -msgstr "Lade" - -msgid "Local IP address is invalid" -msgstr "Lokale IP-Adresse ist ungültig" - -msgid "Local IP address to assign" -msgstr "Lokale IP-Adresse" - -msgid "Local IPv4 address" -msgstr "Lokale IPv4 Adresse" - -msgid "Local IPv6 address" -msgstr "Lokale IPv6 Adresse" - -msgid "Local Service Only" -msgstr "Nur lokale Dienste" - -msgid "Local Startup" -msgstr "Lokales Startskript" - -msgid "Local Time" -msgstr "Lokale Zeit" - -msgid "Local domain" -msgstr "Lokale Domain" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Spezifiziert den lokalen Domainnamen. Anfragen für Hostnamen welche auf " -"diese Domain zutreffen werden nie weitergeleitet und ausschließlich aus DHCP-" -"Namen oder Hosts-Dateien aufgelöst" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Lokaler Domain-Suffix welcher an DHCP Namen und Host-Datei Einträge " -"angehangen wird" - -msgid "Local server" -msgstr "Lokaler Server" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Hostnamen je nach anfragendem Subnetz auflösen wenn mehrere IPs verfügbar " -"sind" - -msgid "Localise queries" -msgstr "Lokalisiere Anfragen" - -msgid "Locked to channel %s used by: %s" -msgstr "Festgelegt auf Kanal %s, verwendet durch: %s" - -msgid "Log output level" -msgstr "Protokolllevel" - -msgid "Log queries" -msgstr "Schreibe Abfragelog" - -msgid "Logging" -msgstr "Protokollierung" - -msgid "Login" -msgstr "Anmelden" - -msgid "Logout" -msgstr "Abmelden" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "Signalverlustsekunden (LOSS)" - -msgid "Lowest leased address as offset from the network address." -msgstr "Kleinste vergebene Adresse (Netzwerkadresse + x)" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-Adresse" - -msgid "MAC-Address Filter" -msgstr "MAC-Adressfilter" - -msgid "MAC-Filter" -msgstr "MAC-Filter" - -msgid "MAC-List" -msgstr "MAC-Adressliste" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "MAP-Regel ist ungültig" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "Das Root-Dateisystem muss mit folgenden Kommandsos vorbereitet werden:" - -msgid "Manual" -msgstr "Manuell" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "Maximal erreichbare Datenrate (ATTNDR)" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Maximal zulässige Anzahl an gleichzeitigen DNS-Anfragen" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Maximal zulässige Größe von EDNS.0 UDP Paketen" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Maximale Zeit die gewartet wird bis das Modem bereit ist (in Sekunden)" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" -"Die maximale Länge des Names ist auf 15 Zeichen beschränkt, abzüglich des " -"automatischen Protokoll- oder Bridge-Prefixes wie \"br-\" oder \"pppoe-\" " -"etc." - -msgid "Maximum number of leased addresses." -msgstr "Maximal zulässige Anzahl von vergeben DHCP-Adressen" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Hauptspeicher" - -msgid "Memory usage (%)" -msgstr "Speichernutzung (%)" - -msgid "Mesh Id" -msgstr "Mesh-ID" - -msgid "Metric" -msgstr "Metrik" - -msgid "Mirror monitor port" -msgstr "Spiegel-Monitor-Port" - -msgid "Mirror source port" -msgstr "Spiegel-Quell-Port" - -msgid "Missing protocol extension for proto %q" -msgstr "Erweiterung für Protokoll %q fehlt" - -msgid "Mobility Domain" -msgstr "Mobilitätsbereich" - -msgid "Mode" -msgstr "Modus" - -msgid "Model" -msgstr "Modell" - -msgid "Modem device" -msgstr "Modemgerät" - -msgid "Modem information query failed" -msgstr "Modem-Informationsabfrage fehlgeschlagen" - -msgid "Modem init timeout" -msgstr "Wartezeit für Modeminitialisierung" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Mount-Eintrag" - -msgid "Mount Point" -msgstr "Einhängepunkt" - -msgid "Mount Points" -msgstr "Einhängepunkte" - -msgid "Mount Points - Mount Entry" -msgstr "Mountpunkte - Mount-Eintrag" - -msgid "Mount Points - Swap Entry" -msgstr "Mountpunkte - Auslagerungsdatei" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Einhängepunkte bestimmen, an welcher Stelle des Dateisystems bestimmte " -"Laufwerke und Speicher zur Verwendung eingebunden werden." - -msgid "Mount filesystems not specifically configured" -msgstr "Nicht explizit konfigurierte Dateisysteme einhängen" - -msgid "Mount options" -msgstr "Mount-Optionen" - -msgid "Mount point" -msgstr "Mountpunkt" - -msgid "Mount swap not specifically configured" -msgstr "Unkonfigurierte SWAP-Partitionen aktivieren" - -msgid "Mounted file systems" -msgstr "Eingehängte Dateisysteme" - -msgid "Move down" -msgstr "Nach unten schieben" - -msgid "Move up" -msgstr "Nach oben schieben" - -msgid "Multicast address" -msgstr "Multicast-Adresse" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "NAT-T Modus" - -msgid "NAT64 Prefix" -msgstr "NAT64 Präfix" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "NTP Server Kandidaten" - -msgid "Name" -msgstr "Name" - -msgid "Name of the new interface" -msgstr "Name der neuen Schnittstelle" - -msgid "Name of the new network" -msgstr "Name des neuen Netzwerkes" - -msgid "Navigation" -msgstr "Navigation" - -msgid "Netmask" -msgstr "Netzmaske" - -msgid "Network" -msgstr "Netzwerk" - -msgid "Network Utilities" -msgstr "Netzwerk-Werkzeuge" - -msgid "Network boot image" -msgstr "Netzwerk-Boot-Image" - -msgid "Network device is not present" -msgstr "Netzwerkgerät ist nicht vorhanden" - -msgid "Network without interfaces." -msgstr "Netzwerk ohne Schnittstellen." - -msgid "Next »" -msgstr "Weiter »" - -msgid "No DHCP Server configured for this interface" -msgstr "Kein DHCP Server auf dieser Schnittstelle eingerichtet" - -msgid "No NAT-T" -msgstr "Kein NAT-T" - -msgid "No chains in this table" -msgstr "Keine Ketten in dieser Tabelle" - -msgid "No files found" -msgstr "Keine Dateien gefunden" - -msgid "No information available" -msgstr "Keine Informationen verfügbar" - -msgid "No matching prefix delegation" -msgstr "Kein passendes delegiertes Prefix" - -msgid "No negative cache" -msgstr "Kein Negativ-Cache" - -msgid "No network configured on this device" -msgstr "Keine Netzwerke auf diesem Gerät konfiguriert" - -msgid "No network name specified" -msgstr "Netzwerkname nicht angegeben" - -# Ich glab das ist so richtiger -msgid "No package lists available" -msgstr "Es sind keine Paketlisten vorhanden" - -msgid "No password set!" -msgstr "Kein Passwort gesetzt!" - -msgid "No rules in this chain" -msgstr "Keine Regeln in dieser Kette" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Keine Zone zugewiesen" - -msgid "Noise" -msgstr "Rauschen" - -msgid "Noise Margin (SNR)" -msgstr "Signal-Rausch-Abstand (SNR)" - -msgid "Noise:" -msgstr "Noise:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "Nicht-präemptive CRC-Fehler (CRC_P)" - -msgid "Non-wildcard" -msgstr "An Schnittstellen binden" - -msgid "None" -msgstr "keine" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Nicht Gefunden" - -msgid "Not associated" -msgstr "Nicht assoziiert" - -msgid "Not connected" -msgstr "Nicht verbunden" - -msgid "Note: Configuration files will be erased." -msgstr "Warnung: Konfigurationsdateien werden gelöscht." - -msgid "Note: interface name length" -msgstr "Hinweis: Länge des Namens beachten" - -msgid "Notice" -msgstr "Notiz" - -msgid "Nslookup" -msgstr "DNS-Auflösung" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" -"Anzahl der zwischengespeicherten DNS-Einträge. Maximum sind 10000 Einträge, " -"\"0\" deaktiviert die Zwischenspeicherung." - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "OPKG-Konfiguration" - -msgid "Obfuscated Group Password" -msgstr "Chiffriertes Gruppenpasswort" - -msgid "Obfuscated Password" -msgstr "Chiffriertes Passwort" - -msgid "Obtain IPv6-Address" -msgstr "IPv6-Adresse beziehen" - -msgid "Off-State Delay" -msgstr "Verzögerung für Ausschalt-Zustand" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"An dieser Stelle können die einzelnen Schnittstellen des Netzwerkes " -"konfiguriert werden. Es können mehrere Schnittstellen zu einer Brücke " -"zusammengefasst werden, indem diese durch Leerzeichen getrennt aufgezählt " -"werden und ein entsprechender Haken im Feld Netzwerkbrücke gesetzt wird. Es " -"können VLANs in der Notation SCHNITTSTELLE.VLANNR (z.B.: eth0.1) verwendet " -"werden." - -msgid "On-State Delay" -msgstr "Verzögerung für Anschalt-Zustand" - -msgid "One of hostname or mac address must be specified!" -msgstr "Es muss entweder ein Hostname oder eine MAC-Adresse angegeben werden!" - -msgid "One or more fields contain invalid values!" -msgstr "Ein oder mehrere Felder enthalten ungültige Werte!" - -msgid "One or more invalid/required values on tab" -msgstr "Ein oder mehrere ungültige/benötigte Werte auf Registerkarte" - -msgid "One or more required fields have no value!" -msgstr "Ein oder mehr benötigte Felder sind nicht ausgefüllt!" - -msgid "Open list..." -msgstr "Liste öffnen..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "Betriebsfrequenz" - -msgid "Option changed" -msgstr "Option geändert" - -msgid "Option removed" -msgstr "Option entfernt" - -msgid "Optional" -msgstr "Optional" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" -"Optional. 32-Bit-Marke für ausgehende, verschlüsselte Pakete. Wert in " -"hexadezimal mit führendem 0x angeben." - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" -"Optional. Mögliche Werte: 'eui64', 'random' oder Suffixes wie '::1' oder " -"'::1:2'. Wenn ein IPv6-Präfix (wie z.B. 'a:b:c:d::') von einem delegierendem " -"Server empfangen wird, kombiniert das System das Suffix mit dem Präfix um " -"eine IPv6-Adresse (z.B. 'a:b:c:d::1') für die Schnittstelle zu formen." - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" -"Optional. Base64-kodierter, vorhab ausgetauschter Schlüssel um eine weitere " -"Ebene an symmetrischer Verschlüsselung für erhöhte Sicherheit hinzuzufügen." - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "Optional. Routen für erlaubte IP-Adressen erzeugen." - -msgid "Optional. Description of peer." -msgstr "Optionale Beschreibung des entfernten VPN-Partners." - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" -"Optional. Hostname oder Adresse des Verbindungspartners. Namen werden vor " -"dem Verbindungsaufbau aufgelöst." - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "Optional. Maximale MTU für Tunnelschnittstellen." - -msgid "Optional. Port of peer." -msgstr "Optional. Port-Nummer des Verbindungspartners." - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" -"Optional. Sekunden zwischen Keep-Alive-Nachrichten. Standardwert is 0 " -"(deaktiviert). Der empfohlene Wert für Geräte hinter einem NAT sind 25 " -"Sekunden." - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" -"Optional. Benutzte UDP-Port-Nummer für ausgehende und eingehende Pakete." - -msgid "Options" -msgstr "Optionen" - -msgid "Other:" -msgstr "Andere:" - -msgid "Out" -msgstr "Aus" - -msgid "Outbound:" -msgstr "Ausgehend:" - -msgid "Output Interface" -msgstr "Ausgehende Schnittstelle" - -msgid "Override MAC address" -msgstr "MAC-Adresse überschreiben" - -msgid "Override MTU" -msgstr "MTU-Wert überschreiben" - -msgid "Override TOS" -msgstr "TOS-Wert überschreiben" - -msgid "Override TTL" -msgstr "TTL-Wert überschreiben" - -msgid "Override default interface name" -msgstr "Standard Schnittstellennamen überschreiben" - -msgid "Override the gateway in DHCP responses" -msgstr "Gateway-Adresse in DHCP-Antworten überschreiben" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Überschreibt die Netzmaske welche an Clients geschickt wird. Normalerweise " -"wird diese vom bedienten Subnetz abgeleitet." - -msgid "Override the table used for internal routes" -msgstr "Überschreibt die benutzte Tabelle für interne Routen" - -msgid "Overview" -msgstr "Übersicht" - -msgid "Owner" -msgstr "Besitzer" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP Passwort" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP Benutzername" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "PIN-Code abgelehnt" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA Kapselung" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "PSID-Offset" - -msgid "PSID-bits length" -msgstr "PSID-Bitlänge" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "PTM/EFM (Paket-Transfer-Modus)" - -msgid "Package libiwinfo required!" -msgstr "Benötige das libiwinfo Paket!" - -msgid "Package lists are older than 24 hours" -msgstr "Die Paketlisten sind älter als 24 Stunden" - -msgid "Package name" -msgstr "Paketname" - -msgid "Packets" -msgstr "Pakete" - -msgid "Part of zone %q" -msgstr "Teil von Zone %q" - -msgid "Password" -msgstr "Passwort" - -msgid "Password authentication" -msgstr "Passwortanmeldung" - -msgid "Password of Private Key" -msgstr "Passwort des privaten Schlüssels" - -msgid "Password of inner Private Key" -msgstr "Password des inneren, privaten Schlüssels" - -msgid "Password successfully changed!" -msgstr "Passwort erfolgreich geändert!" - -msgid "Password2" -msgstr "Passwort Bestätigung" - -msgid "Path to CA-Certificate" -msgstr "Pfad zum CA-Zertifikat" - -msgid "Path to Client-Certificate" -msgstr "Pfad zu Client-Zertifikat" - -msgid "Path to Private Key" -msgstr "Pfad zum Privaten Schlüssel" - -msgid "Path to inner CA-Certificate" -msgstr "Pfad zum inneren CA-Zertifikat" - -msgid "Path to inner Client-Certificate" -msgstr "Pfad zum inneren Client-Zertifikat" - -msgid "Path to inner Private Key" -msgstr "Pfad zum inneren, privaten Schlüssel" - -msgid "Peak:" -msgstr "Spitze:" - -msgid "Peer IP address to assign" -msgstr "Entfernte IP-Adresse" - -msgid "Peer address is missing" -msgstr "Entfernte IP-Adresse fehlt" - -msgid "Peers" -msgstr "Verbindungspartner" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Neustart durchführen" - -msgid "Perform reset" -msgstr "Reset durchführen" - -msgid "Persistent Keep Alive" -msgstr "Persistentes Keep-Alive" - -msgid "Phy Rate:" -msgstr "Phy-Rate:" - -msgid "Physical Settings" -msgstr "Physikalische Einstellungen" - -msgid "Ping" -msgstr "Ping-Anfrage" - -msgid "Pkts." -msgstr "Pkte." - -msgid "Please enter your username and password." -msgstr "Bitte Benutzernamen und Passwort eingeben." - -msgid "Policy" -msgstr "Standardregel" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Port-Status:" - -msgid "Power Management Mode" -msgstr "Energiesparmodus" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "Präemptive CRC-Fehler (CRCP_P)" - -msgid "Prefer LTE" -msgstr "LTE bevorzugen" - -msgid "Prefer UMTS" -msgstr "UMTS bevorzugen" - -msgid "Prefix Delegated" -msgstr "Delegiertes Präfix" - -msgid "Preshared Key" -msgstr "Gemeinsamer Schlüssel" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Deklariere den Client als tot nach der angegebenen Anzahl von LCP Echo " -"Fehlschlägen, nutze den Wert 0 um Fehler zu ignorieren" - -msgid "Prevent listening on these interfaces." -msgstr "Verhindert das Binden an diese Schnittstellen" - -msgid "Prevents client-to-client communication" -msgstr "Unterbindet Client-Client-Verkehr" - -msgid "Private Key" -msgstr "Privater Schlüssel" - -msgid "Proceed" -msgstr "Fortfahren" - -msgid "Processes" -msgstr "Prozesse" - -msgid "Profile" -msgstr "Profil" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Protocol family" -msgstr "Protokollfamilie" - -msgid "Protocol of the new interface" -msgstr "Protokoll für die neue Schnittstelle" - -msgid "Protocol support is not installed" -msgstr "Protokollunterstützung ist nicht installiert" - -msgid "Provide NTP server" -msgstr "NTP-Server anbieten" - -msgid "Provide new network" -msgstr "Neues Netzwerk anbieten" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "Öffentlicher Schlüssel" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" -"Zu diesem Gerät geroutetes öffentliches Präfix zur Weiterverteilung an " -"Clients." - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Qualität" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "R0-Schlüsselgültigkeit" - -msgid "R1 Key Holder" -msgstr "R1-Schlüsselinhaber" - -msgid "RFC3947 NAT-T mode" -msgstr "RFC3947 \"NAT-T\"-Modus" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS-Schwelle" - -# Ein / Aus, eingehend / ausgehend? -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "RX-Rate" - -msgid "Radius-Accounting-Port" -msgstr "Radius-Accounting-Port" - -msgid "Radius-Accounting-Secret" -msgstr "Radius-Accounting-Secret" - -msgid "Radius-Accounting-Server" -msgstr "Radius-Accounting-Server" - -msgid "Radius-Authentication-Port" -msgstr "Radius-Authentication-Port" - -msgid "Radius-Authentication-Secret" -msgstr "Radius-Authentication-Secret" - -msgid "Radius-Authentication-Server" -msgstr "Radius-Authentication-Server" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" -"Hexadezimal-kodierte Zeichensequenz. Nur angeben wenn der Internetanbieter " -"einen bestimmten Wert erwartet." - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "Lese Informationen aus /etc/ethers um den DHCP-Server zu konfigurieren" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" -"Diese Schnittstelle wirklich löschen? Das Löschen kann nicht rückgängig " -"gemacht werden! Der Kontakt zum Gerät könnte verloren gehen wenn die " -"Verbidung über diese Schnittstelle erfolgt." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Dieses Drahtlosnetzwerk wirklich löschen? Der Schritt kann nicht rückgängig " -"gemacht werden!\n" -"Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über dieses Netzwerk " -"verbunden sind." - -msgid "Really reset all changes?" -msgstr "Sollen wirklich alle Änderungen verworfen werden?" - -msgid "Really switch protocol?" -msgstr "Protokoll wirklich wechseln?" - -msgid "Realtime Connections" -msgstr "Echtzeitverbindungen" - -msgid "Realtime Graphs" -msgstr "Echtzeit-Diagramme" - -msgid "Realtime Load" -msgstr "Echtzeitsystemlast" - -msgid "Realtime Traffic" -msgstr "Echtzeitverkehr" - -msgid "Realtime Wireless" -msgstr "Echtzeit-WLAN-Signal" - -msgid "Reassociation Deadline" -msgstr "Reassoziierungsfrist" - -msgid "Rebind protection" -msgstr "DNS-Rebind-Schutz" - -msgid "Reboot" -msgstr "Neu Starten" - -msgid "Rebooting..." -msgstr "Das System wird neu gestartet..." - -msgid "Reboots the operating system of your device" -msgstr "Startet das Betriebssystem des Routers neu." - -msgid "Receive" -msgstr "Empfangen" - -msgid "Receiver Antenna" -msgstr "Empfangsantenne" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "Empfohlen. IP-Adresse der WireGuard-Schnittstelle." - -msgid "Reconnect this interface" -msgstr "Diese Schnittstelle neu verbinden" - -msgid "References" -msgstr "Verweise" - -msgid "Relay" -msgstr "Relay" - -msgid "Relay Bridge" -msgstr "Relay-Brücke" - -msgid "Relay between networks" -msgstr "Zwischen folgenden Netzwerken weiterleiten" - -msgid "Relay bridge" -msgstr "Relay-Brücke" - -msgid "Remote IPv4 address" -msgstr "Entfernte IPv4-Adresse" - -msgid "Remote IPv4 address or FQDN" -msgstr "Entfernte IPv4-Adresse oder Hostname" - -msgid "Remove" -msgstr "Entfernen" - -msgid "Repeat scan" -msgstr "Scan wiederholen" - -msgid "Replace entry" -msgstr "Eintrag ersetzen" - -msgid "Replace wireless configuration" -msgstr "Drahtloskonfiguration ersetzen" - -msgid "Request IPv6-address" -msgstr "IPv6-Adresse anfordern" - -msgid "Request IPv6-prefix of length" -msgstr "IPv6-Präfix dieser Länge anfordern" - -msgid "Required" -msgstr "Benötigt" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" -"Wird von bestimmten Internet-Providern benötigt, z.B. Charter mit DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "Benötigt. Base64-kodierter privater Schlüssel für diese Schnittstelle" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" -"Benötigt. Base64-kodierter öffentlicher Schlüssel für diese Schnittstelle" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" -"Benötigt. IP-Adressen und Präfixe die der Verbindungspartner innerhalb des " -"Tunnels nutzen darf. Entspricht üblicherweise der Tunnel-IP-Adresse des " -"Verbindungspartners und den Netzwerken, die dieser durch den Tunnel routet." - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" -"Benötigt die \"volle\" Variante des wpad oder hostapd Paketes und " -"Unterstützung vom WLAN-Treiber." - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" -"Setzt DNSSEC-Unterstützung im DNS-Zielserver vorraus; überprüft ob " -"unsignierte Antworten wirklich von unsignierten Domains kommen." - -msgid "Reset" -msgstr "Zurücksetzen" - -msgid "Reset Counters" -msgstr "Zähler zurücksetzen" - -msgid "Reset to defaults" -msgstr "Auslieferungszustand wiederherstellen" - -msgid "Resolv and Hosts Files" -msgstr "Resolv- und Hosts-Dateien" - -msgid "Resolve file" -msgstr "Resolv-Datei" - -msgid "Restart" -msgstr "Neustarten" - -msgid "Restart Firewall" -msgstr "Firewall neu starten" - -msgid "Restart radio interface" -msgstr "W-LAN-Gerät neu starten" - -msgid "Restore" -msgstr "Wiederherstellen" - -msgid "Restore backup" -msgstr "Sicherung wiederherstellen" - -msgid "Reveal/hide password" -msgstr "Passwort zeigen/verstecken" - -msgid "Revert" -msgstr "Verwerfen" - -msgid "Revert changes" -msgstr "Änderungen verwerfen" - -msgid "Revert request failed with status %h" -msgstr "Anforderung zum Verwerfen mit Status %h fehlgeschlagen" - -msgid "Reverting configuration…" -msgstr "Verwerfe Konfigurationsänderungen..." - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "Wurzelverzeichnis für über TFTP ausgelieferte Dateien " - -msgid "Root preparation" -msgstr "Wurzelverzeichnis erzeugen" - -msgid "Route Allowed IPs" -msgstr "Erlaubte IP-Addressen routen" - -msgid "Route type" -msgstr "Routen-Typ" - -msgid "Router Advertisement-Service" -msgstr "Router-Advertisement-Dienst" - -msgid "Router Password" -msgstr "Routerpasswort" - -msgid "Routes" -msgstr "Routen" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Netzwerkrouten geben an, über welche Schnittstellen bestimmte Rechner oder " -"Netzwerke erreicht werden können" - -msgid "Run a filesystem check before mounting the device" -msgstr "Vor dem Einhängen Dateisystemprüfung starten " - -msgid "Run filesystem check" -msgstr "Dateisystemprüfung durchführen" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "SSH-Zugriff" - -msgid "SSH server address" -msgstr "SSH-Server-Adresse" - -msgid "SSH server port" -msgstr "SSH-Server-Port" - -msgid "SSH username" -msgstr "SSH Benutzername" - -msgid "SSH-Keys" -msgstr "SSH-Schlüssel" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Speichern" - -msgid "Save & Apply" -msgstr "Speichern & Anwenden" - -msgid "Scan" -msgstr "Scan" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Geplante Aufgaben" - -msgid "Section added" -msgstr "Sektion hinzugefügt" - -msgid "Section removed" -msgstr "Sektion entfernt" - -msgid "See \"mount\" manpage for details" -msgstr "Siehe \"mount\" Handbuch für Details" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Sende LCP Echo Anforderungen im angegebenem Interval in Sekunden, nur " -"effektiv in Verbindung mit einem Fehler-Schwellwert" - -msgid "Separate Clients" -msgstr "Clients isolieren" - -msgid "Server Settings" -msgstr "Servereinstellungen" - -msgid "Service Name" -msgstr "Service-Name" - -msgid "Service Type" -msgstr "Service-Typ" - -msgid "Services" -msgstr "Dienste" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" -"Schnittstelleneigenschaften werden unabhängig vom Link gesetzt (ist die " -"Option ausgewählt, so werden die Hotplug-Skripte bei Änderung nicht " -"aufgerufen)" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Zeitsynchronisierung einrichten" - -msgid "Setting PLMN failed" -msgstr "Setzen der PLMN fehlgeschlagen" - -msgid "Setting operation mode failed" -msgstr "Setzen des Betriebsmodus fehlgeschlagen" - -msgid "Setup DHCP Server" -msgstr "DHCP Server einrichten" - -msgid "Severely Errored Seconds (SES)" -msgstr "schwerwiegende Fehlersekunden (SES)" - -msgid "Short GI" -msgstr "kurzes Guardintervall" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "Zeige aktuelle Liste der gesicherten Dateien" - -msgid "Shutdown this interface" -msgstr "Diese Schnittstelle herunterfahren" - -msgid "Signal" -msgstr "Signal" - -msgid "Signal Attenuation (SATN)" -msgstr "Signaldämpfung (SATN)" - -msgid "Signal:" -msgstr "Signal:" - -msgid "Size" -msgstr "Größe" - -msgid "Size (.ipk)" -msgstr "Größe (.ipk)" - -msgid "Size of DNS query cache" -msgstr "Größe des DNS-Caches" - -msgid "Skip" -msgstr "Überspringen" - -msgid "Skip to content" -msgstr "Zum Inhalt springen" - -msgid "Skip to navigation" -msgstr "Zur Navigation springen" - -msgid "Slot time" -msgstr "Zeitslot" - -msgid "Software" -msgstr "Paketverwaltung" - -msgid "Software VLAN" -msgstr "Software-VLAN" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Einige Felder sind ungültig, kann das Formular nicht speichern!" - -msgid "Sorry, the object you requested was not found." -msgstr "Entschuldigung, das anfgeforderte Objekt wurde nicht gefunden." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" -"Entschuldigung, auf dem Server ist ein unerwarteter Fehler aufgetreten." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Aufgrund des fehlenden sysupgrade-Supports muss die neue Firmware manuell " -"geflasht werden. Weitere Informationen sowie gerätespezifische " -"Installationsanleitungen entnehmen Sie bitte dem Wiki." - -msgid "Source" -msgstr "Quelle" - -msgid "Specifies the directory the device is attached to" -msgstr "Nennt das Verzeichnis, an welches das Gerät angebunden ist" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Gibt den Server-Port dieser Dropbear-Instanz an" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Maximale Anzahl fehlgeschlagener ARP-Anfragen bis ein Host als nicht " -"verfügbar gilt" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Spezifiziert die maximale Anzahl an Sekunde nach denen Hoss als tot erachtet " -"werden" - -msgid "Specify a TOS (Type of Service)." -msgstr "Setzt einen spezifischen TOS (Type of Service) Wert" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" -"Setzt eine spezifische TTL (Time to Live) für gekapselte Pakete, anstatt der " -"standardmäßigen 64." - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" -"Setzt eine spezifische MTU (Maximum Transmission Unit) abweichend von den " -"standardmäßigen 1280 Bytes." - -msgid "Specify the secret encryption key here." -msgstr "Geben Sie hier den geheimen Netzwerkschlüssel an" - -msgid "Start" -msgstr "Start" - -msgid "Start priority" -msgstr "Startpriorität" - -msgid "Starting configuration apply…" -msgstr "Starte Anwendung der Konfigurationsänderungen..." - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Systemstart" - -msgid "Static IPv4 Routes" -msgstr "Statische IPv4 Routen" - -msgid "Static IPv6 Routes" -msgstr "Statische IPv6 Routen" - -msgid "Static Leases" -msgstr "Statische Einträge" - -msgid "Static Routes" -msgstr "Statische Routen" - -msgid "Static address" -msgstr "Statische Adresse" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Statische Leases werden genutzt um feste IP-Adressen und Hostnames zu DHCP-" -"Clients zuzuordnen. Sie werden auch für nicht-dynamische Schnittstellen-" -"Konfigurationen benötigt auf denen lediglich Hosts mit zugehörigem " -"statischem Lease-Eintrag bedient werden." - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Stoppen" - -msgid "Strict order" -msgstr "Strikte Reihenfolge" - -msgid "Submit" -msgstr "Absenden" - -msgid "Suppress logging" -msgstr "Logeinträge unterdrücken" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" -"Logeinträge für erfolgreiche Operationen dieser Protokolle unterdrücken" - -msgid "Swap" -msgstr "Auslagerungsspeicher" - -msgid "Swap Entry" -msgstr "Auslagerungsdatei" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "Switch %q" - -msgid "Switch %q (%s)" -msgstr "Switch %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" -"Der Switch %q hat eine unbekannte Struktur, die VLAN Settings könnten " -"unpassend sein." - -msgid "Switch Port Mask" -msgstr "Switch-Port-Maske" - -msgid "Switch VLAN" -msgstr "Switch-VLAN" - -msgid "Switch protocol" -msgstr "Wechsle Protokoll" - -msgid "Sync with browser" -msgstr "Mit Browser synchronisieren" - -msgid "Synchronizing..." -msgstr "Synchronisiere..." - -msgid "System" -msgstr "System" - -msgid "System Log" -msgstr "Systemprotokoll" - -msgid "System Properties" -msgstr "Systemeigenschaften" - -msgid "System log buffer size" -msgstr "Größe des Systemprotokoll-Puffers" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP Einstellungen" - -msgid "TFTP server root" -msgstr "TFTP Wurzelverzeichnis" - -# same as RX -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "TX-Rate" - -msgid "Table" -msgstr "Tabelle" - -msgid "Target" -msgstr "Ziel" - -msgid "Target network" -msgstr "Zielnetzwerk" - -msgid "Terminate" -msgstr "Beenden" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Die Gerätekonfiguration deckt physikalische Einstellungen der WLAN-" -"Hardware wie Kanal, Sendestärke oder Antennenauswahl ab. Diese Einstellungen " -"werden von allen Netzwerken auf dem Gerät geteilt. Netzwerk-spezifische " -"Einstellungen wie Verschlüsselung oder Betriebsmodus sind in der " -"Schnittstellenkonfiguration gruppiert." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Das libiwinfo-lua Paket ist nicht installiert. Dieses Paket muss " -"für eine funktionierende WLAN-Konfiguration vorhanden sein!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" -"Die Updateprozedur für HE.net Tunnel-IP-Adrerssen hat sich geändert, statt " -"der numerischen User-ID muss nun der normale Benutzername angegeben werden." - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" -"Die IPv4-Adresse oder der volle Domain Name des entfernten Tunnel-Endpunktes." - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Vom Provider zugewiesener IPv6 Präfix, endet normalerweise mit ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Erlaubte Buchstaben sind: A-Z, a-z, 0-9 and _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "Das Backup-Archiv scheint keine valide GZip-Datei zu sein." - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" -"Die Konfigurationsdatei konnte aufgrund der folgenden Fehler nicht geladen " -"werden:" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" -"Das Gerät konnte nach dem Anwenden der ausstehenden Änderungen innerhalb von " -"%d Sekunden nicht mehr erreicht werden, daher wurde die Änderungen aus " -"Sicherheitsgründen zurückgerollt. Wenn Sie der Meinung sind, dass die " -"Änderungen trotzdem korrekt sind, wenden sie die Änderungen ungeprüft an. " -"Alternativ können Sie diese Meldung schließen und die Konfiguration weiter " -"bearbeiten bevor Sie das Anwenden neu versuchen oder alle austehenden " -"Änderungen verwerfen um den aktuell funktionierenden Konfigurationsstand " -"beizubehalten." - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "Die Gerätedatei des Speichers oder der Partition (z.B.: /dev/sda)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "Das Dateisystem mit dem der Speicher formatiert ist (z.B.: ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Das Firmware-Image wurde hochgeladen. Nachfolgend sind die Prüfsumme und " -"Dateigröße gelistet. Vergleichen Sie diese mit der Originaldatei um die " -"Integrität sicherzustellen.
    Klicken Sie \"Fortfahren\" um die Flash-" -"Prozedur zu starten." - -msgid "The following changes have been reverted" -msgstr "Die folgenden Änderungen wurden verworfen" - -msgid "The following rules are currently active on this system." -msgstr "Die folgenden Regeln sind zur Zeit auf dem System aktiv." - -msgid "The given network name is not unique" -msgstr "Der angebene Netzwerk-Name ist nicht eindeutig" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Die Hardware ist nicht Multi-SSID fähig und die existierende Konfiguration " -"wird beim Fortfahren ersetzt." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"Länge des IPv4 Präfix in Bits, die übrigen Bits werden in der IPv6 Adresse " -"verwendet." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Länge des IPv6 Präfix in Bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "Die lokale IPv4-Adresse über die der Tunnel aufgebaut wird (optional)." - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Die Netzwerkschnittstellen dieses Geräts können zu verschienden VLANs zusammengefasst werden, in denen " -"Geräte miteinander direkt kommunizieren können. VLANs werden auch häufig dazu genutzt, um Netzwerke " -"voneinander zu trennen. So ist oftmals eine Schnittstelle als Uplink zu " -"einem größeren Netz, wie dem Internet, vorkonfiguriert und die anderen " -"Schnittstellen bilden ein VLAN für das lokale Netzwerk." - -msgid "The selected protocol needs a device assigned" -msgstr "Dem ausgewähltem Protokoll muss ein Gerät zugeordnet werden" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" -"Das mitgesendete Sicherheits-Token ist ungültig oder bereits abgelaufen!" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Die Einstellungen werden nun gelöscht! Anschließend wird ein Neustart des " -"Systems durchgeführt." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Der Flashvorgang läuft jetzt.
    SCHALTEN SIE NICHT DEN STROM AUS!
    " -"Warten Sie einige Minuten bis das Gerät wieder erreichbar ist. Je nach " -"Konfiguration ist es notwendig, dass Sie auf Ihrem Computer eine neue IP-" -"Adresse beziehen müssen um auf das Gerät zugreifen zu können." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Das hochgeladene Firmware-Image hat ein nicht unterstütztes Format. Stellen " -"Sie sicher dass Sie das generische Format für Ihre Platform gewählt haben." - -msgid "There are no active leases." -msgstr "Es gibt z.Z. keine aktiven Leases." - -msgid "There are no changes to apply." -msgstr "Es gibt keine ausstehenden Änderungen anzuwenden." - -msgid "There are no pending changes to revert!" -msgstr "Es gibt keine ausstehenen Änderungen zurückzusetzen!" - -msgid "There are no pending changes!" -msgstr "Es gibt keine ausstehenen Änderungen!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Es wurde noch kein Netzwerkgerät zugeordnet, bitte ein Gerät im " -"\"Physikalische Einstellungen\" Bereich anfügen" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Es ist kein Passwort auf diesem Router gesetzt. Bitte konfigurieren Sie ein " -"Root-Passwort um das Web-Interface zu schützen und SSH zu aktivieren." - -msgid "This IPv4 address of the relay" -msgstr "IPv4-Adresse des Relais" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" -"Diese Datei beinhaltet Zeilen in der Art 'server=/domain/1.2.3.4' oder " -"'server=1.2.3.4' für domainspezifische oder komplette Ziel-DNS-Server." - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Dies ist eine Liste von Shell-Glob-Mustern um Dateien und Verzeichnisse zu " -"selektieren welche während eines System-Upgrade gesichert werden sollen. " -"Modifizierte Dateien in /etc/config/ und bestimmte andere essenzielle " -"Konfigurationsdateien werden automatisch gesichert." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" -"Dies ist entweder der \"Update Key\" der für diesen Tunnel eingerichtet " -"wurde oder das normale Account-Passwort wenn kein separater Schlüssel " -"gesetzt wurde." - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Dies ist der Inhalt von /etc/rc.local. Hier kann man eigene Befehle einfügen " -"(vor 'exit 0'), die dann am Ende des Bootvorgangs ausgeführt werden." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" -"Dies ist die lokale, vom Broker zugewiesene IPv6-Adresse, sie endet " -"üblicherweise mit ...:2/64" - -msgid "" -"This is the only DHCP in the local network" -msgstr "Dies ist der einzige DHCP im lokalen Netz" - -msgid "This is the plain username for logging into the account" -msgstr "Das ist der normale Login-Name für den Account." - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" -"Dies ist das vom Tunnel-Broker geroutete öffentliche Präfix zur Verwendung " -"durch nachgelagerte Clients." - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Dies ist die System-Crontab in der geplante Aufgaben definiert werden können." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Dies ist üblicherweise die Adresse des nächstgelegenen PoPs betrieben durch " -"den Tunnelbroker" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Diese Tabelle gibt eine Übersicht über aktuell laufende Systemprozesse und " -"deren Status." - -msgid "This page gives an overview over currently active network connections." -msgstr "Diese Seite gibt eine Übersicht über aktive Netzwerkverbindungen." - -msgid "This section contains no values yet" -msgstr "Diese Sektion enthält noch keine Einträge" - -msgid "Time Synchronization" -msgstr "Zeitsynchronisation" - -msgid "Time Synchronization is not configured yet." -msgstr "Die Zeitsynchronisation wurde noch nicht konfiguriert." - -msgid "Timezone" -msgstr "Zeitzone" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Zum Wiederherstellen der Konfiguration kann hier ein bereits vorhandenes " -"Backup-Archiv hochgeladen werden. \"Konfiguration zurücksetzen\" stellt den " -"Auslieferungszustand des Systems wieder her (nur möglich bei squashfs-" -"Images)." - -msgid "Tone" -msgstr "Ton" - -msgid "Total Available" -msgstr "Gesamt verfügbar" - -msgid "Traceroute" -msgstr "Routenverfolgung" - -# Ich bin der Meinung Traffic versteht jeder! Wenn der Begriff "deutscher" sein soll, würde ich "Datenmenge" angeben. Aber "Verkehrs" passt nicht! -msgid "Traffic" -msgstr "Traffic" - -msgid "Transfer" -msgstr "Transfer" - -msgid "Transmission Rate" -msgstr "Übertragungsrate" - -msgid "Transmit" -msgstr "Senden" - -msgid "Transmit Power" -msgstr "Sendeleistung" - -msgid "Transmitter Antenna" -msgstr "Sendeantenne" - -msgid "Trigger" -msgstr "Auslöser" - -msgid "Trigger Mode" -msgstr "Auslösmechanismus" - -msgid "Tunnel ID" -msgstr "Tunnel-ID" - -msgid "Tunnel Interface" -msgstr "Tunnelschnittstelle" - -msgid "Tunnel Link" -msgstr "Basisschnittstelle" - -msgid "Tx-Power" -msgstr "Sendestärke" - -msgid "Type" -msgstr "Typ" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Nur UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB-Gerät" - -msgid "USB Ports" -msgstr "USB Anschlüsse" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "Gerätename konnte nicht bestimmt werden" - -msgid "Unable to determine external IP address" -msgstr "Externe IP-Adresse konnte nicht bestimmt werden" - -msgid "Unable to determine upstream interface" -msgstr "Externe Netzwerkschnittstelle konnte nicht bestimmt werden" - -msgid "Unable to dispatch" -msgstr "Kann Anfrage nicht zustellen" - -msgid "Unable to obtain client ID" -msgstr "Client-ID konnte nicht bezogen werden" - -msgid "Unable to resolve AFTR host name" -msgstr "Der AFTR-Hostname konnte nicht aufgelöst werden" - -msgid "Unable to resolve peer host name" -msgstr "Der Name des entfernten Hosts konnte nicht aufgelöst werden" - -msgid "Unavailable Seconds (UAS)" -msgstr "Nicht verfügbare Sekunden (UAS)" - -msgid "Unknown" -msgstr "Unbekannt" - -msgid "Unknown Error, password not changed!" -msgstr "Unbekannter Fehler, Passwort nicht geändert!" - -msgid "Unknown error (%s)" -msgstr "Protokollfehler: %s" - -msgid "Unmanaged" -msgstr "Ignoriert" - -msgid "Unmount" -msgstr "Aushängen" - -msgid "Unsaved Changes" -msgstr "Ungespeicherte Änderungen" - -msgid "Unsupported MAP type" -msgstr "Nicht unterstützter MAP-Typ" - -msgid "Unsupported modem" -msgstr "Nicht unterstütztes Modem" - -msgid "Unsupported protocol type." -msgstr "Nicht unterstützter Protokolltyp." - -msgid "Up" -msgstr "Hoch" - -msgid "Update lists" -msgstr "Listen aktualisieren" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Zum Ersetzen der aktuellen Firmware kann hier ein sysupgrade-Kompatibles " -"Image hochgeladen werden. Wenn die vorhandene Konfiguration auch nach dem " -"Update noch aktiv sein soll, aktivieren Sie \"Konfiguration behalten\"." - -msgid "Upload archive..." -msgstr "Backup wiederherstellen..." - -msgid "Uploaded File" -msgstr "hochgeladene Datei" - -msgid "Uptime" -msgstr "Laufzeit" - -msgid "Use /etc/ethers" -msgstr "Verwende /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Benutze DHCP-Gateway" - -msgid "Use DNS servers advertised by peer" -msgstr "Benutze die von der Gegenstelle zugewiesenen DNS-Server" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Muss ein ISO/IEC 3166 Länderkürzel sein." - -msgid "Use MTU on tunnel interface" -msgstr "Benutze MTU auf der Tunnelschnittstelle" - -msgid "Use TTL on tunnel interface" -msgstr "Benutze TTL auf der Tunnelschnittstelle" - -msgid "Use as external overlay (/overlay)" -msgstr "Als externes Overlay benutzen (/overlay)" - -msgid "Use as root filesystem (/)" -msgstr "Als Root-Dateisystem benutzen (/)" - -msgid "Use broadcast flag" -msgstr "Benutze Broadcast-Flag" - -msgid "Use builtin IPv6-management" -msgstr "Eingebautes IPv6-Management nutzen" - -msgid "Use custom DNS servers" -msgstr "Benutze eigene DNS-Server" - -msgid "Use default gateway" -msgstr "Benutze Standard-Gateway" - -msgid "Use gateway metric" -msgstr "Benutze Gateway-Metrik" - -msgid "Use routing table" -msgstr "Benutze Routing-Tabelle" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Die Hinzufügen Schaltfläche fügt einen neuen Lease-Eintrag hinzu. " -"Die MAC-Adresse identifiziert den Host, die IPv4-Adresse " -"definiert die zu nutzende statische Adresse und der Hostname ist " -"der symbolische Name der dem Host zugewisen wird." - -msgid "Used" -msgstr "Belegt" - -msgid "Used Key Slot" -msgstr "Benutzer Schlüsselindex" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" -"Wird als RADIUS-NAS-ID und als 802.11r R0KH-ID verwendet. Nicht benötigt für " -"WPA(2)-PSK." - -msgid "User certificate (PEM encoded)" -msgstr "PEM-kodiertes Benutzerzertifikat" - -msgid "User key (PEM encoded)" -msgstr "PEM-kodierter Benutzerschlüssel" - -msgid "Username" -msgstr "Benutzername" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs auf %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs auf %q (%s)" - -msgid "VPN Local address" -msgstr "Lokale VPN-Adresse" - -msgid "VPN Local port" -msgstr "Lokaler VPN-Port" - -msgid "VPN Server" -msgstr "VPN-Server" - -msgid "VPN Server port" -msgstr "VPN-Server Port" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "SHA1-Hash des VPN-Server-Zertifikates" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "VPNC (VPN für CISCO 3000 und Ähnliche)" - -msgid "Vendor" -msgstr "Hersteller" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Bei DHCP-Anfragen gesendete Vendor-Klasse" - -msgid "Verify" -msgstr "Verifizieren" - -msgid "Version" -msgstr "Version" - -msgid "Virtual dynamic interface" -msgstr "Virtuelle dynamisches Schnittstelle" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP Open System" - -msgid "WEP Shared Key" -msgstr "WEP Shared Key" - -msgid "WEP passphrase" -msgstr "WEP Schlüssel" - -msgid "WMM Mode" -msgstr "WMM Modus" - -msgid "WPA passphrase" -msgstr "WPA Schlüssel" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-Verschlüsselung benötigt wpa_supplicant (für Client-Modus) oder hostapd " -"(für AP oder Ad-Hoc Modus)." - -msgid "Waiting for changes to be applied..." -msgstr "Änderungen werden angewandt..." - -msgid "Waiting for command to complete..." -msgstr "Der Befehl wird ausgeführt..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "Warte auf das Anwenden der Konfigurationsänderungen... %d Sekunden" - -msgid "Waiting for device..." -msgstr "Warte auf Gerät..." - -msgid "Warning" -msgstr "Warnung" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" -"Achtung: Es gibt ungespeicherte Änderungen die bei einem Neustart verloren " -"gehen!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" -"Wenn PSK in Verwendung ist, können PMK-Schlüssel lokal ohne Inter-Access-" -"Point-Kommunikation erzeugt werden." - -msgid "Width" -msgstr "Breite" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "WLAN" - -msgid "Wireless Adapter" -msgstr "WLAN-Gerät" - -msgid "Wireless Network" -msgstr "Drahtlosnetzwerk" - -msgid "Wireless Overview" -msgstr "Drahtlosübersicht" - -msgid "Wireless Security" -msgstr "WLAN-Verschlüsselung" - -msgid "Wireless is disabled" -msgstr "W-LAN ist deaktiviert" - -msgid "Wireless is not associated" -msgstr "W-LAN ist nicht assoziiert" - -msgid "Wireless is restarting..." -msgstr "WLAN startet neu..." - -msgid "Wireless network is disabled" -msgstr "Das WLAN-Netzwerk ist deaktiviert" - -msgid "Wireless network is enabled" -msgstr "Das WLAN-Netzwerk ist aktiviert" - -msgid "Write received DNS requests to syslog" -msgstr "Empfangene DNS-Anfragen in das Systemprotokoll schreiben" - -msgid "Write system log to file" -msgstr "Systemprotokoll in Datei schreiben" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Hier können installierte Startscripte aktiviert oder deaktiviert werden. " -"Änderungen werden erst mit einem Geräteneustart angewendet.
    Warnung: Wenn essentialle Startscripte wie \"network\" deaktiviert " -"werden könnte das Gerät unerreichbar werden!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Im Browser muss JavaScript aktiviert sein oder LuCI wird nicht richtig " -"funktionieren." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "beliebig" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "bridged" - -msgid "create" -msgstr "erzeugen" - -msgid "create:" -msgstr "erstelle:" - -msgid "creates a bridge over specified interface(s)" -msgstr "überbrückt angegebene Schnittstelle(n)" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "deaktivieren" - -msgid "disabled" -msgstr "deaktiviert" - -msgid "expired" -msgstr "abgelaufen" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "Speicherort für vergebenen DHCP-Adressen" - -msgid "forward" -msgstr "weitergeleitet" - -msgid "full-duplex" -msgstr "Voll-Duplex" - -msgid "half-duplex" -msgstr "Halb-Duplex" - -msgid "hidden" -msgstr "versteckt" - -msgid "hybrid mode" -msgstr "hybrider Modus" - -msgid "if target is a network" -msgstr "falls Ziel ein Netzwerk ist" - -msgid "input" -msgstr "eingehend" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "Lokale DNS-Datei" - -msgid "minutes" -msgstr "Minuten" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "nein" - -msgid "no link" -msgstr "nicht verbunden" - -msgid "none" -msgstr "keine" - -msgid "not present" -msgstr "nicht vorhanden" - -msgid "off" -msgstr "aus" - -msgid "on" -msgstr "ein" - -msgid "open" -msgstr "offen" - -msgid "output" -msgstr "ausgehend" - -msgid "overlay" -msgstr "Overlay" - -msgid "random" -msgstr "zufällig" - -msgid "relay mode" -msgstr "Relay-Modus" - -msgid "routed" -msgstr "routed" - -msgid "server mode" -msgstr "Server-Modus" - -msgid "stateful-only" -msgstr "nur zustandsorientiert" - -msgid "stateless" -msgstr "nur zustandlos" - -msgid "stateless + stateful" -msgstr "zustandslos + zustandsorientiert" - -msgid "tagged" -msgstr "tagged" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "Zeiteinheiten (TUs / 1024 ms) [1000-65535]" - -msgid "unknown" -msgstr "unbekannt" - -msgid "unlimited" -msgstr "unbegrenzt" - -msgid "unspecified" -msgstr "unspezifiziert" - -msgid "unspecified -or- create:" -msgstr "nichts auswählen -oder- erstellen:" - -msgid "untagged" -msgstr "untagged" - -msgid "yes" -msgstr "ja" - -msgid "« Back" -msgstr "« Zurück" -<<<<<<< HEAD -======= - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Dieses Netzwerk aktivieren" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Hermes 802.11b W-LAN Adapter" - -#~ msgid "Interface is shutting down..." -#~ msgstr "Schnittstelle fährt herunter..." - -#~ msgid "Interface reconnected" -#~ msgstr "Schnittstelle neu verbunden" - -#~ msgid "Interface shut down" -#~ msgstr "Schnittstelle heruntergefahren" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Prism2/2.5/3 802.11b W-LAN Adapter" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "RaLink 802.11%s W-LAN Adapter" - -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface" -#~ msgstr "" -#~ "Dieses Netzwerk wirklich herunterfahren? Der Kontakt zum Gerät könnte " -#~ "verloren gehen wenn die Verbindung über dieses Netzwerk erfolgt." - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "Die Schnitstelle \"%s\" wirklich herunterfahren?\n" -#~ "Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese " -#~ "Schnittstelle verbunden sind." - -#~ msgid "Reconnecting interface" -#~ msgstr "Verbinde Schnittstelle neu" - -#~ msgid "Shutdown this network" -#~ msgstr "Dieses Netzwerk herunterfahren" - -#~ msgid "Wireless is disabled or not associated" -#~ msgstr "WLAN ist deaktiviert oder nicht assoziiert" - -#~ msgid "Wireless restarted" -#~ msgstr "WLAN neu gestartet" - -#~ msgid "Wireless shut down" -#~ msgstr "WLAN heruntergefahren" - -#~ msgid "DHCP Leases" -#~ msgstr "DHCP-Leases" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "DHCPv6-Leases" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "Diese Schnittstelle wirklich löschen? Der Schritt kann nicht rückgängig " -#~ "gemacht werden!\n" -#~ "Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese " -#~ "Schnittstelle verbunden sind." - -#, fuzzy -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "Das Netzwerk wirklich herunterfahren?\n" -#~ "Der Zugriff auf das Gerät könnte verlorengehen wenn Sie über diese " -#~ "Schnittstelle verbunden sind." - -#~ msgid "Sort" -#~ msgstr "Sortieren" - -#~ msgid "help" -#~ msgstr "Hilfe" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "IPv4 WAN Status" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "IPv6 WAN Status" ->>>>>>> 86660f92d... i18n: sync translations diff --git a/luci-base/po/el/base.po b/luci-base/po/el/base.po deleted file mode 100644 index cb5706930..000000000 --- a/luci-base/po/el/base.po +++ /dev/null @@ -1,4102 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-03-31 15:35+0200\n" -"Last-Translator: Vasilis \n" -"Language-Team: LANGUAGE \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(παράθυρο %d λεπτών, διάστημα %d δευτερολέπτων)" - -msgid "(%s available)" -msgstr "(%s διαθέσιμα)" - -msgid "(empty)" -msgstr "(κενό)" - -msgid "(no interfaces attached)" -msgstr "(χωρίς προσαρτημένες διεπαφές)" - -msgid "-- Additional Field --" -msgstr "-- Επιπλέον Πεδίο --" - -msgid "-- Please choose --" -msgstr "-- Παρακαλώ επιλέξτε --" - -msgid "-- custom --" -msgstr "-- προσαρμοσμένο --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Φορτίο 1 λεπτού:" - -msgid "15 Minute Load:" -msgstr "Φορτίο 15 λεπτών:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Φορτίο 5 λεπτών:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "Θύρα ερωτημάτων DNS" - -msgid "DNS server port" -msgstr "Θύρα εξυπηρετητή DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Οι DNS εξυπηρετητές θα " -"ερωτηθούν με την σειρά εμφάνισης στο αρχείο resolvfile" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "Διεύθυνση IPv4" - -msgid "IPv4-Gateway" -msgstr "Πύλη IPv4" - -msgid "IPv4-Netmask" -msgstr "Μάσκα IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Διεύθυνση IPv6 ή Δίκτυο " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "Πύλη IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Παραμετροποίηση LED" - -msgid "LED Name" -msgstr "Όνομα LED" - -msgid "MAC-Address" -msgstr "Διεύθυνση MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Μεγ. πλήθος DHCP leases" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Μεγ. μέγεθος πακέτου EDNS0" - -msgid "Max. concurrent queries" -msgstr "Μεγ. πλήθος ταυτόχρονων ερωτηματων" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Όριο επαναδοκιμών ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Γέφυρες ΑΤΜ" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM Εικονικό Κανάλι Αναγνωριστή (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM Εικονικό μονοπάτι Αναγνωριστή (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Οι γέφυρες ATM αποκαλύπτουν ενθυλακωμένες ethernet σε συνδέσεις AAL5 σαν " -"εικονικές διεπαφές δικτύου Linux, οι οποίες μπορούν να χρησιμοποιηθούν σε " -"συνδυασμό με DHCP ή PPP για την κλήση προς τον παροχέα δικτύου." - -msgid "ATM device number" -msgstr "Αριθμός συσκευής ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Συγκεντρωτής Πρόσβασης " - -msgid "Access Point" -msgstr "Σημείο Πρόσβασης" - -msgid "Actions" -msgstr "Ενέργειες" - -msgid "Active IPv4-Routes" -msgstr "" -"Ενεργές Διαδρομές IPv4" - -msgid "Active IPv6-Routes" -msgstr "" -"Ενεργές Διαδρομές IPv6" - -msgid "Active Connections" -msgstr "Ενεργές Συνδέσεις" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Προσθήκη" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Προσθήκη κατάληξης τοπικού τομέα για ονόματα εξυπηρετούμενα από αρχεία hosts " - -msgid "Add new interface..." -msgstr "Προσθήκη νέας διεπαφής..." - -msgid "Additional Hosts files" -msgstr "Επιπλέον αρχεία Hosts" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Διεύθυνση" - -msgid "Address to access local relay bridge" -msgstr "Διεύθυνση για πρόσβαση σε την τοπική γέφυρα αναμετάδοσης" - -msgid "Administration" -msgstr "Διαχείριση" - -msgid "Advanced Settings" -msgstr "Προχωρημένες Ρυθμίσεις" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Ειδοποίηση" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Επιτρέπει την εξουσιοδότηση SSH με " -"κωδικό πρόσβασης" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Να επιτρέπονται όλες, εκτός από αυτές στη λίστα" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Να επιτρέπονται μόνο αυτές στην λίστα" - -msgid "Allow localhost" -msgstr "Να επιτρέπεται το localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Να επιτρέπεται σε απομακρυσμένα συστήματα να συνδέονται σε τοπικά " -"προωθημένες SSH θύρες" - -msgid "Allow root logins with password" -msgstr "Να επιτρέπονται root συνδέσεις με κωδικό πρόσβασης" - -msgid "Allow the root user to login with password" -msgstr "" -"Να επιτρέπεται στον χρήστη root να συνδέετε με κωδικό πρόσβασης" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Να επιτρέπονται απαντήσεις από ανώτερο επίπεδο εντός του εύρους 127.0.0.0/8, " -"π.χ. για υπηρεσίες RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Κεραία 1" - -msgid "Antenna 2" -msgstr "Κεραία 2" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "Οιαδήποτε ζώνη" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Συνδεδεμένοι Σταθμοί" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Εξουσιοδότηση" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Κύριος" - -msgid "Authorization Required" -msgstr "Απαιτείται Εξουσιοδότηση" - -msgid "Auto Refresh" -msgstr "Αυτόματη Ανανέωση" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Διαθέσιμο" - -msgid "Available packages" -msgstr "Διαθέσιμα πακέτα" - -msgid "Average:" -msgstr "Μέσος Όρος:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Πίσω" - -msgid "Back to Overview" -msgstr "Πίσω προς Επισκόπηση" - -msgid "Back to configuration" -msgstr "Πίσω προς παραμετροποίηση" - -msgid "Back to overview" -msgstr "Πίσω προς επισκόπηση" - -msgid "Back to scan results" -msgstr "Πίσω στα αποτελέσματα σάρωσης" - -msgid "Backup" -msgstr "Αποθήκευση" - -msgid "Backup / Flash Firmware" -msgstr "Αντίγραφο ασφαλείας / Εγγραφή FLASH Υλικολογισμικό" - -msgid "Backup file list" -msgstr "Λίστα αρχείων για αντίγραφο ασφαλείας" - -#, fuzzy -msgid "Bad address specified!" -msgstr "Μη έγκυρη διεύθυνση!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Παρακάτω είναι η προκαθορισμένη λίστα αρχείων για αντιγραφή ασφαλείας. " -"Αποτελείτε από αλλαγμένα αρχεία παραμετροποίησης σημαδεμένα από το opkg, " -"ουσιώδη βασικά αρχεία καθώς και καθορισμένα από το χρήστη μοτίβα αντιγράφων " -"ασφαλείας." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Ρυθμός δεδομένων" - -msgid "Bogus NX Domain Override" -msgstr "Παράκαμψη Ψευδούς Τομέα NX" - -msgid "Bridge" -msgstr "Γέφυρα" - -msgid "Bridge interfaces" -msgstr "Γεφύρωμα διεπαφών" - -msgid "Bridge unit number" -msgstr "Αριθμός μονάδας γέφυρας" - -msgid "Bring up on boot" -msgstr "Ανέβασμα κατά την εκκίνηση" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Χρήση CPU (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Ακύρωση" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Αλυσίδα" - -msgid "Changes" -msgstr "Αλλαγές" - -msgid "Changes applied." -msgstr "Αλλαγές εφαρμόστηκαν." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Αλλάζει τον κωδικό διαχειριστή για πρόσβαση στη συσκευή" - -msgid "Channel" -msgstr "Κανάλι" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Έλεγχος" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Άθροισμα Ελέγχου" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Επιλέξατε την ζώνη τείχους προστασίας που επιθυμητέ να αναθέσετε σε αυτήν " -"την διεπαφή. Επιλέξτε απροσδιόριστο για να αφαιρέσετε την διεπαφή " -"από την συσχετισμένη ζώνη ή συμπληρώστε το δημιουργία πεδίο για να " -"προσδιορίσετε μία νέα ζώνη και να προσαρτήσετε την διεπαφή σε αυτό." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Κλικ στο \"Δημιουργία αρχείου\" για να κατεβάσετε ένα tar αρχείο με τα " -"τρέχοντα αρχεία παραμετροποίησης." - -msgid "Client" -msgstr "Πελάτης" - -msgid "Client ID to send when requesting DHCP" -msgstr "Αναγνωριστικό πελάτη που αποστέλλετε κατά την αίτηση DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Κλείσιμο, μη ενεργών συνδέσεων μετά το πέρας του ορισμένου αριθμού " -"δευτερολέπτων, χρησιμοποιήστε 0 για να εξακολουθούν να υφίστανται επ' " -"αόριστον" - -msgid "Close list..." -msgstr "Κλείσιμο λίστας..." - -msgid "Collecting data..." -msgstr "Συλλογή δεδομένων..." - -msgid "Command" -msgstr "Εντολή" - -msgid "Common Configuration" -msgstr "Κοινή Παραμετροποίηση" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Παραμετροποίηση" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Τα αρχεία παραμετροποίησης θα διατηρηθούν." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Επιβεβαίωση" - -msgid "Connect" -msgstr "Σύνδεση" - -msgid "Connected" -msgstr "Συνδεδεμένος" - -msgid "Connection Limit" -msgstr "Όριο Συνδέσεων" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Συνδέσεις" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "Χώρα" - -msgid "Country Code" -msgstr "Κωδικός Χώρας" - -msgid "Cover the following interface" -msgstr "Κάλυψη της ακόλουθης διεπαφής" - -msgid "Cover the following interfaces" -msgstr "Κάλυψη των ακόλουθων διεπαφών" - -msgid "Create / Assign firewall-zone" -msgstr "Δημιουργία / Ανάθεση ζώνης τείχους προστασίας" - -msgid "Create Interface" -msgstr "Δημιουργία Διεπαφής" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "Επίπεδο Καταγραφής Cron" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Ρυθμίζει, αν είναι δυνατόν, την συμπεριφορά των LED της συσκευής." - -msgid "DHCP Server" -msgstr "Εξυπηρετητής DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP και DNS" - -msgid "DHCP client" -msgstr "Πελάτης DHCP" - -msgid "DHCP-Options" -msgstr "Επιλογές DHCP" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Προωθήσεις DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Αποσφαλμάτωση" - -msgid "Default %d" -msgstr "Προεπιλογή %d" - -msgid "Default gateway" -msgstr "Προεπιλεγμένη πύλη" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Προεπιλεγμένη κατάσταση" - -msgid "Define a name for this network." -msgstr "Ορίστε ένα όνομα για αυτό το δίκτυο." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Ορίστε επιπλέον επιλογές DHCP, που διαφημίζουν διαφορετικούς εξυπηρετητές " -"DNS στους πελάτες, για παράδειγμα \"6,192.168.2.1,192.168.2.2\"." - -msgid "Delete" -msgstr "Διαγραφή" - -msgid "Delete this network" -msgstr "Διαγραφή αυτού του δικτύου" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Περιγραφή" - -msgid "Design" -msgstr "Εμφάνιση" - -msgid "Destination" -msgstr "Προορισμός" - -msgid "Device" -msgstr "Συσκευή" - -msgid "Device Configuration" -msgstr "Παραμετροποίηση Συσκευής" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Διαγνωστικά" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Κατάλογος" - -msgid "Disable" -msgstr "Απενεργοποίηση" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Απενεργοποίηση DHCP για αυτή τη διεπαφή." - -msgid "Disable DNS setup" -msgstr "Απενεργοποίηση ρυθμίσεων DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Απενεργοποιημένο" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Αγνόησε τις απαντήσεις ανοδικής ροής RFC1918" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "Εμφάνιση μόνο πακέτων που περιέχουν" - -msgid "Distance Optimization" -msgstr "Βελτιστοποίηση Απόστασης" - -msgid "Distance to farthest network member in meters." -msgstr "Απόσταση σε μέτρα από το πιο απομακρυσμένο μέλος του δικτύου." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Διαφορική Λήψη" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Ο Dnsmasq είναι ένας συνδυασμός εξυπηρετητή DHCP και προωθητήDNS για τείχη προστασίας NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Να μην αποθηκεύονται στη λανθάνουσα μνήμη οι αρνητικές απαντήσεις, π.χ. για " -"μη υπαρκτούς τομείς." - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Να μην προωθούνται αιτήματα τα οποία δεν μπορούν να απαντηθούν από δημόσιους " -"εξυπηρετητές ονομάτων" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Απαίτηση για όνομα τομέα" - -msgid "Domain whitelist" -msgstr "Λευκή λίστα τομέων" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Να μην προωθούνται ερωτήματα DNS " -"χωρίς όνομα τομέα DNS" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Κατέβασμα και εγκατάσταση πακέτου" - -msgid "Download backup" -msgstr "Κατέβασμα αντιγράφου ασφαλείας" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Το Dropbear προσφέρει πρόσβαση σε SSH " -"κέλυφος μέσω δικτύου και έναν ενσωματωμένο εξυπηρετητή SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Δυναμικό DHCP" - -msgid "Dynamic tunnel" -msgstr "Δυναμικό τούνελ" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Δυναμική απόδοση DHCP διευθύνσεων στους πελάτες. Σε περίπτωση " -"απενεργοποίησης, μόνο πελάτες με στατικα leases θα εξυπηρετούνται." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Μέθοδος EAP" - -msgid "Edit" -msgstr "Επεξεργασία" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Επεξεργασία αυτής της διεπαφής" - -msgid "Edit this network" -msgstr "Επεξεργασία αυτού του δικτύου" - -msgid "Emergency" -msgstr "Έκτακτη ανάγκη" - -msgid "Enable" -msgstr "Ενεργοποίηση" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Ενεργοποίηση STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Ενεργοποίηση ενημέρωσης δυναμικού τερματικού σημείου HE.net." - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Ενεργοποίηση διαπραγμάτευσης IPv6 πάνω στη PPP ζεύξη" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Ενεργοποίηση διέλευσης Jumbo Frame" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Ενεργοποίηση εξυπηρετητή TFTP" - -msgid "Enable VLAN functionality" -msgstr "Ενεργοποίηση λειτουργίας VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Ένεργοποίηση learning and aging" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Ενεργοποίηση αυτής της προσάρτησης" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "Ενεργοποίηση αυτής της swap" - -msgid "Enable/Disable" -msgstr "Ενεργοποίηση/Απενεργοποίηση" - -msgid "Enabled" -msgstr "Ενεργοποιημένο" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "Λειτουργία ενθυλάκωσης" - -msgid "Encryption" -msgstr "Κρυπτογράφηση" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Διαγράφεται..." - -msgid "Error" -msgstr "Σφάλμα" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Προσαρμογέας Ethernet" - -msgid "Ethernet Switch" -msgstr "Ethernet Switch" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "Λήγει" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Ο ελάχιστος χρόνος λήξεως των διευθύνσεων lease είναι 2 λεπτά (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Εξωτερικός εξυπηρετητής καταγραφής συστήματος" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Αρχείο" - -msgid "Filename of the boot image advertised to clients" -msgstr "Όνομα αρχείου της εικόνας εκκίνησης που διαφημίζετε στους πελάτες" - -msgid "Filesystem" -msgstr "Σύστημα Αρχείων" - -msgid "Filter" -msgstr "Φίλτρο" - -msgid "Filter private" -msgstr "Φιλτράρισμα ιδιωτικών" - -msgid "Filter useless" -msgstr "Φιλτράρισμα άχρηστων" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Εύρεση και σύνδεση σε δίκτυο" - -msgid "Find package" -msgstr "Εύρεση πακέτου" - -msgid "Finish" -msgstr "Τέλος" - -msgid "Firewall" -msgstr "Τείχος Προστασίας" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Ρυθμίσεις Τείχους Προστασίας" - -msgid "Firewall Status" -msgstr "Κατάσταση Τείχους Προστασίας" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Έκδοση Υλικολογισμικού" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "Φλασάρισμα Firmware" - -msgid "Flash image..." -msgstr "Φλασάρισμα εικόνας..." - -msgid "Flash new firmware image" -msgstr "Φλασάρισμα νέας εικόνας υλικολογισμικού" - -msgid "Flash operations" -msgstr "Λειτουργίες φλασάρισματος" - -msgid "Flashing..." -msgstr "Φλασάρεται..." - -msgid "Force" -msgstr "Επιβολή" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Επιβολή CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"Επιβολή DHCP σε αυτό το δίκτυο ακόμα κι αν έχει εντοπιστεί άλλος εξυπηρετητής" - -msgid "Force TKIP" -msgstr "Επιβολή TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Επιβολή TKIP και CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Προώθηση κίνησης DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Προώθηση κίνησης broadcast" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Μέθοδος προώθησης" - -msgid "Fragmentation Threshold" -msgstr "Όριο Κατακερµατισµού" - -msgid "Frame Bursting" -msgstr "Bursting Πλαισίων" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "Ελεύθερος χώρος" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "Πύλη" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Θύρες πύλης" - -msgid "General Settings" -msgstr "Γενικές Ρυθμίσεις" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "Μετάβαση στη σχετική σελίδα ρυθμίσεων" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Κρέμασμα" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Εδώ μπορείτε να παραμετροποιήσετε βασικές πλευρές της συσκευής σας όπως το " -"όνομα υπολογιστή ή τη ζώνη ώρας." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hide ESSID" -msgstr "Κρυφό ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Καταχωρήσεις Υπολογιστών" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" -"IP Υπολογιστή ή Δικτύου" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Όνομα Υπολογιστή" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Ονόματα Υπολογιστών" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Διεύθυνση IP" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 Τείχος Προστασίας" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "Διεύθυνση IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 και IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "Πύλη IPv4" - -msgid "IPv4 netmask" -msgstr "Μάσκα IPv4" - -msgid "IPv4 only" -msgstr "Μόνο IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-Διεύθυνση" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 Τείχος Προστασίας" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "Διεύθυνση IPv6" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Πύλη IPv6" - -msgid "IPv6 only" -msgstr "Μόνο IPv6" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "Ταυτότητα" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Αν οριστεί, προσάρτησε τη συσκευή με βάση το UUID της αντί για το " -"καθορισμένο όνομα της" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Αν οριστεί, προσάρτησε τη συσκευή με βάση την ετικέτα της αντί για το " -"καθορισμένο όνομα της" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Αν η φυσική μνήμη δεν είναι αρκετή, μη-χρησιμοποιούμενα δεδομένα μπορούν " -"προσωρινά να εναλλάσσονται σε μία συσκευή swap με αποτέλεσμα περισσότερη " -"ενεργή RAM. Η εναλλαγή δεδομένων " -"είναι μία πολύ αργή διαδικασία αφού η συσκευή swap δεν μπορεί να " -"προσπελαστεί με τους υψηλούς ρυθμούς μεταφοράς δεδομένων που διαθέτει η " -"RAM." - -msgid "Ignore /etc/hosts" -msgstr "Αγνόησε /etc/hosts" - -msgid "Ignore interface" -msgstr "Αγνόησε διεπαφή" - -msgid "Ignore resolve file" -msgstr "Αγνόησε αρχείο resolve" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "Είσοδος" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "Πληροφορίες" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Σενάριο εκκίνησης" - -msgid "Initscripts" -msgstr "Σενάρια Εκκίνησης" - -msgid "Install" -msgstr "Εγκατάσταση" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Εγκατάσταση πακέτου %q" - -msgid "Install protocol extensions..." -msgstr "Εγκατάσταση επεκτάσεων πρωτοκόλλου..." - -msgid "Installed packages" -msgstr "Εγκατεστημένα πακέτα" - -msgid "Interface" -msgstr "Διεπαφή" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Παραμετροποίηση Διεπαφής" - -msgid "Interface Overview" -msgstr "Επισκόπηση Διεπαφής" - -msgid "Interface is reconnecting..." -msgstr "Η διεπαφή επανασυνδέεται..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Η διεπαφή δεν υπάρχει ή δεν έχει συνδεθεί ακόμη." - -msgid "Interfaces" -msgstr "Διεπαφές" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "Άκυρη τιμή εισόδου" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Άκυρο όνομα χρήστη και/ή κωδικός πρόσβασης! Παρακαλώ προσπαθήστε ξανά." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Φαίνεται πως προσπαθείτε να φλασάρετε μια εικόνα που δεν χωράει στην μνήμη " -"flash, παρακαλώ επιβεβαιώστε το αρχείο εικόνας!" - -msgid "JavaScript required!" -msgstr "Απαιτείται JavaScript!" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Διατήρηση ρυθμίσεων" - -msgid "Kernel Log" -msgstr "Καταγραφή Πυρήνα" - -msgid "Kernel Version" -msgstr "Έκδοση Πυρήνα" - -msgid "Key" -msgstr "Κλειδί" - -msgid "Key #%d" -msgstr "Κλειδί #%d" - -msgid "Kill" -msgstr "Σκότωμα" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Ετικέτα" - -msgid "Language" -msgstr "Γλώσσα" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "Αρχείο Leases" - -msgid "Leasetime remaining" -msgstr "Υπόλοιπο χρόνου Lease" - -msgid "Leave empty to autodetect" -msgstr "Αφήστε το κενό για να γίνει αυτόματη ανίχνευση" - -msgid "Leave empty to use the current WAN address" -msgstr "Αφήστε το κενό για να γίνει χρήση της τρέχουσας διεύθυνσης WAN" - -msgid "Legend:" -msgstr "Υπόμνημα:" - -msgid "Limit" -msgstr "Όριο" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Αναμμένο με Ζεύξη" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Φόρτος" - -msgid "Load Average" -msgstr "Μέσος όρος φόρτου" - -msgid "Loading" -msgstr "Φόρτωση" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Τοπική διεύθυνση IPv4" - -msgid "Local IPv6 address" -msgstr "Τοπική διεύθυνση IPv6" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "Τοπική Ώρα" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "Τοπικός εξυπηρετητής" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Τοπικά ερωτήματα" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Επίπεδο εξόδου αρχείων καταγραφής" - -msgid "Log queries" -msgstr "Καταγραφή ερωτημάτων" - -msgid "Logging" -msgstr "Καταγραφή" - -msgid "Login" -msgstr "Σύνδεση" - -msgid "Logout" -msgstr "Αποσύνδεση" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-Διεύθυνση" - -msgid "MAC-Address Filter" -msgstr "Φίλτρο MAC Διευθύνσεων" - -msgid "MAC-Filter" -msgstr "MAC-Φίλτρο" - -msgid "MAC-List" -msgstr "Λίστα MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Μέγιστος επιτρεπόμενος αριθμός ενεργών DHCP leases" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Μέγιστος επιτρεπόμενος αριθμός ταυτόχρονων ερωτημάτων DNS" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Μέγιστο επιτρεπόμενο μέγεθος EDNS.0 UDP πακέτων" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" -"Μέγιστος αριθμός δευτερολέπτων αναμονής ώστε το modem να καταστεί έτοιμο" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Μέγιστος αριθμός διευθύνσεων lease" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Μνήμη" - -msgid "Memory usage (%)" -msgstr "Χρήση Μνήμης (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Μέτρο" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Λειτουργία" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Συσκευή Modem" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Παρακολούθηση" - -#, fuzzy -msgid "Mount Entry" -msgstr "Προσάρτηση" - -msgid "Mount Point" -msgstr "Σημείο Προσάρτησης" - -msgid "Mount Points" -msgstr "Σημεία Προσάρτησης" - -msgid "Mount Points - Mount Entry" -msgstr "Σημεία Προσάρτησης - Είσοδος Προσάρτησης" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Τα σημεία προσάρτησης ορίζουν σε ποιο σημείο στο σύστημα αρχείων θα " -"προσαρτηθεί μία συσκευή μνήμης" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Επιλογές προσάρτησης" - -msgid "Mount point" -msgstr "Σημείο προσάρτησης" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Προσαρτημένα συστήματα αρχείων" - -msgid "Move down" -msgstr "Μετακίνηση κάτω" - -msgid "Move up" -msgstr "Μετακίνηση πάνω" - -msgid "Multicast address" -msgstr "Διεύθυνση Multicast" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "Name" -msgstr "Όνομα" - -msgid "Name of the new interface" -msgstr "Όνομα νέας διεπαφής" - -msgid "Name of the new network" -msgstr "Όνομα νέου δικτύου" - -msgid "Navigation" -msgstr "Πλοήγηση" - -msgid "Netmask" -msgstr "Μάσκα δικτύου" - -msgid "Network" -msgstr "Δίκτυο" - -msgid "Network Utilities" -msgstr "Εργαλεία Δικτύου" - -msgid "Network boot image" -msgstr "" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "Επόμενο »" - -msgid "No DHCP Server configured for this interface" -msgstr "Δεν υπάρχει ρυθμισμένος DHCP εξυπηρετητής για αυτή τη διεπαφή" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Δεν υπάρχουν αλυσίδες σε αυτόν τον πίνακα" - -msgid "No files found" -msgstr "Δε βρέθηκαν αρχεία" - -msgid "No information available" -msgstr "Δεν υπάρχουν πληροφορίες διαθέσιμες" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "Δεν υπάρχει παραμετροποιημένο δίκτυο σε αυτή τη συσκευή" - -msgid "No network name specified" -msgstr "Δεν έχει οριστεί όνομα δικτύου" - -msgid "No package lists available" -msgstr "Δεν υπάρχουν διαθέσιμες λίστες πακέτων" - -msgid "No password set!" -msgstr "Δεν έχει οριστεί κωδικός πρόσβασης!" - -msgid "No rules in this chain" -msgstr "Δεν υπάρχει κανόνας σε αυτή την αλυσίδα" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Δεν έχει ανατεθεί ζώνη" - -msgid "Noise" -msgstr "Θόρυβος" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Θόρυβος:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Κανένα" - -msgid "Normal" -msgstr "Φυσιολογικό" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "Σημείωση: Τα αρχεία παραμετροποίησης θα διαγραφούν." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Επισήμανση" - -msgid "Nslookup" -msgstr "" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "Εντάξει" - -msgid "OPKG-Configuration" -msgstr "Παραμετροποίηση OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Σε αυτή τη σελίδα μπορείτε να ρυθμίσετε τις διεπαφές δικτύου. Μπορείτε να " -"γεφυρώσετε πολλαπλές διεπαφές τικάροντας το πεδίο \"γεφύρωμα διεπαφών\" και " -"εισάγοντας τα ονόματα των διεπαφών δικτύου χωρισμένα με κενά. Μπορείτε " -"επίσης να χρησιμοποιήσετε παράσταση τύπου VLAN INTERFACE.VLANNR (π.χ.: eth0.1)." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "Ένα ή περισσότερα πεδία περιέχουν μη έγκυρες τιμές!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Ένα ή περισσότερα πεδία δεν περιέχουν τιμές!" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Η επιλογή άλλαξε" - -msgid "Option removed" -msgstr "Η επιλογή αφαιρέθηκε" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Επιλογές" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "Έξοδος" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Επισκόπηση" - -msgid "Owner" -msgstr "Κάτοχος" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Ενθυλάκωση PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Απαιτείται το πακέτο libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Οι λίστες πακέτων έχουν να ανανεωθούν πάνω από 24 ώρες" - -msgid "Package name" -msgstr "Όνομα πακέτου" - -msgid "Packets" -msgstr "Πακέτα" - -msgid "Part of zone %q" -msgstr "Μέρος της ζώνης %q" - -msgid "Password" -msgstr "Κωδικός Πρόσβασης" - -msgid "Password authentication" -msgstr "Εξουσιοδότηση με κωδικό πρόσβασης" - -msgid "Password of Private Key" -msgstr "Κωδικός Πρόσβασης του Ιδιωτικού Κλειδιού" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Ο κωδικός πρόσβασης άλλαξε επιτυχώς!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Διαδρομή για Πιστοποιητικό CA" - -msgid "Path to Client-Certificate" -msgstr "Διαδρομή για Πιστοποιητικό-Πελάτη" - -msgid "Path to Private Key" -msgstr "Διαδρομή για Ιδιωτικό Κλειδί" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Εκτέλεση επανεκκίνησης" - -msgid "Perform reset" -msgstr "Διενέργεια αρχικοποίησης" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Πκτ." - -msgid "Please enter your username and password." -msgstr "Παρακαλώ εισάγετε όνομα χρήστη και κωδικό πρόσβασης." - -msgid "Policy" -msgstr "Πολιτική" - -msgid "Port" -msgstr "Θύρα" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -#, fuzzy -msgid "Prevents client-to-client communication" -msgstr "Αποτρέπει την επικοινωνία μεταξύ πελατών" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Συνέχεια" - -msgid "Processes" -msgstr "Εργασίες" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Πρωτ." - -msgid "Protocol" -msgstr "Πρωτόκολλο" - -msgid "Protocol family" -msgstr "Οικογένεια πρωτοκόλλου" - -msgid "Protocol of the new interface" -msgstr "Πρωτόκολλο νέας διεπαφής" - -msgid "Protocol support is not installed" -msgstr "Η υποστήριξη πρωτοκόλλου δεν έχει εκγατασταθεί" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Ψευδό Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Όριο RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Διάβασμα του /etc/ethers για την παραμετροποίηση του " -"εξυπηρετητή DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "Αρχικοποίηση όλων των αλλαγών;" - -msgid "Really switch protocol?" -msgstr "Αλλαγή πρωτοκόλλου;" - -msgid "Realtime Connections" -msgstr "Συνδέσεις πραγματικού χρόνου" - -msgid "Realtime Graphs" -msgstr "Γραφήματα πραγματικού χρόνου" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "Κίνηση πραγματικού χρόνου" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Επανεκκίνηση" - -msgid "Rebooting..." -msgstr "Επανεκκίνηση..." - -msgid "Reboots the operating system of your device" -msgstr "Επανεκκίνηση του λειτουργικού συστήματος της συσκευής σας" - -msgid "Receive" -msgstr "Λήψη" - -msgid "Receiver Antenna" -msgstr "Κεραία Λήψης" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Επανασύνδεση της διεπαφής" - -msgid "References" -msgstr "Αναφορές" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "Απομακρυσμένη διεύθυνση IPv4" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Αφαίρεση" - -msgid "Repeat scan" -msgstr "Επανάληψη σάρωσης" - -msgid "Replace entry" -msgstr "Αντικατάσταση καταχώρησης" - -msgid "Replace wireless configuration" -msgstr "Αντικατάσταση ρυθμίσεων ασύρματης σύνδεσης" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Αρχικοποίηση" - -msgid "Reset Counters" -msgstr "Αρχικοποίηση Μετρητών" - -msgid "Reset to defaults" -msgstr "Αρχικοποίηση στις προεπιλεγμένες τιμές" - -msgid "Resolv and Hosts Files" -msgstr "Αρχεία Resolv και Hosts" - -msgid "Resolve file" -msgstr "Αρχείο Resolve" - -msgid "Restart" -msgstr "Επανεκκίνηση" - -msgid "Restart Firewall" -msgstr "Επανεκκίνηση Τείχους Προστασίας" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Επαναφορά Αντίγραφου Ασφαλείας" - -msgid "Restore backup" -msgstr "Επαναφορά αντιγράφου ασφαλείας" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "Αναίρεση" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "Κατάλογος Root για αρχεία που σερβίρονται μέσω TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Κωδικός Πρόσβασης Δρομολογητή" - -#, fuzzy -msgid "Routes" -msgstr "Διαδρομές" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Οι διαδρομές ορίζουν τη διεπαφή και πύλη από την οποία κάποιος υπολογιστής ή " -"δίκτυο μπορεί να είναι προσβάσιμο/ς." - -msgid "Run a filesystem check before mounting the device" -msgstr "Εκτέλεση ελέγχου του συστήματος αρχείων πριν προσαρτηθεί η συσκευή" - -msgid "Run filesystem check" -msgstr "Εκτέλεση ελέγχου συστήματος αρχείων" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Πρόσβαση SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Κλειδιά SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Αποθήκευση" - -msgid "Save & Apply" -msgstr "Αποθήκευση & Εφαρμογή" - -msgid "Scan" -msgstr "Σάρωση" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Προγραμματισμένες Εργασίες" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "Δείτε το manpage του \"mount\" για λεπτομέρειες" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -#, fuzzy -msgid "Separate Clients" -msgstr "Απομόνωση Πελατών" - -msgid "Server Settings" -msgstr "Ρυθμίσεις Εξυπηρετητή" - -msgid "Service Name" -msgstr "Όνομα Υπηρεσίας" - -msgid "Service Type" -msgstr "Είδος Υπηρεσίας" - -msgid "Services" -msgstr "Υπηρεσίες" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "Ρύθμιση Εξυπηρετητή DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "Απενεργοποίηση αυτής της διεπαφής" - -msgid "Signal" -msgstr "Σήμα" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Σήμα:" - -msgid "Size" -msgstr "Μέγεθος" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Παράκαμψη" - -msgid "Skip to content" -msgstr "Παράκαμψη σε περιεχόμενο" - -msgid "Skip to navigation" -msgstr "Παράκαμψη σε πλοήγηση" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Λογισμικό" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Κάποια πεδία δεν είναι έγκυρα, δεν μπορούν να αποθηκευτούν οι τιμές!" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "Πηγή" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -#, fuzzy -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" -"Προσδιορίζει την θύρα ακρόασης αυτού του στιγμιοτύπου Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Ορίστε το κρυφό κλειδί κρυπτογράφησης." - -msgid "Start" -msgstr "Αρχή" - -msgid "Start priority" -msgstr "Προτεραιότητα εκκίνησης" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Εκκίνηση" - -msgid "Static IPv4 Routes" -msgstr "Στατικές Διαδρομές IPv4" - -msgid "Static IPv6 Routes" -msgstr "Στατικές Διαδρομές IPv6" - -msgid "Static Leases" -msgstr "Στατικά Leases" - -msgid "Static Routes" -msgstr "Στατικές Διαδρομές" - -msgid "Static address" -msgstr "Στατική διεύθυνση" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Κατάσταση" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "Αυστηρή σειρά" - -msgid "Submit" -msgstr "Υποβολή" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "Συγχρονισμός..." - -msgid "System" -msgstr "Σύστημα" - -msgid "System Log" -msgstr "Καταγραφή Συστήματος" - -msgid "System Properties" -msgstr "Ιδιότητες Συστήματος" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Ρυθμίσεις TFTP" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Πίνακας" - -msgid "Target" -msgstr "Στόχος" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Τερματισμός" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Οι επιτρεπόμενοι χαρακτήρες είναι: A-Z, a-z, " -"0-9 και _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Το αρχείο συσκευής της μνήμης ή του διαμέρισματος (π.χ. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Το σύστημα αρχείων που χρησιμοποιήθηκε για διαμόρφωση (π.χ. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been reverted" -msgstr "Οι παρακάτω αλλαγές έχουν αναιρεθεί" - -msgid "The following rules are currently active on this system." -msgstr "Οι παρακάτω κανόνες είναι αυτή τη στιγμή ενεργοί σε αυτό το σύστημα." - -msgid "The given network name is not unique" -msgstr "Το παρεχόμενο όνομα δικτύου δεν είναι μοναδικό" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Το σύστημα φλασάρετε τώρα.
    ΜΗ ΣΒΗΣΕΤΕ ΤΗΝ ΣΥΣΚΕΥΗ!
    Περιμένετε " -"λίγα λεπτά για να δοκιμάσετε επανασύνδεση. Ανάλογα με τις ρυθμίσεις σας, " -"είναι πιθανό να χρειαστεί να ανανεώσετε την διεύθυνση του υπολογιστή σας για " -"να αποκτήσετε ξανά πρόσβαση στη συσκευή." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Η εικόνα που ανεβάσατε δεν περιέχει κάποια υποστηριζόμενη μορφή. Βεβαιωθείτε " -"ότι επιλέξατε την γενική μορφή εικόνας για την πλατφόρμα σας." - -msgid "There are no active leases." -msgstr "Δεν υπάρχουν ενεργά leases." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Αυτός είναι ο μόνος DHCP στο τοπικό δίκτυο" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Αυτό είναι το crontab του συστήματος στο οποίο μπορούν να οριστούν " -"προγραμματισμένες εργασίες." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Αυτή η λίστα δίνει μία εικόνα των τρέχοντων εργασιών συστήματος και της " -"κατάστασής τους." - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Αυτή η σελίδα δίνει μία εικόνα για τις τρέχουσες ενεργές συνδέσεις δικτύου." - -msgid "This section contains no values yet" -msgstr "Αυτό το τμήμα δεν περιέχει τιμές ακόμη" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "Ζώνη ώρας" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. Για να επαναφέρετε το υλικολογισμικό στην αρχική του " -"κατάσταση, κάντε κλικ στο \"Εκτέλεσε επαναφορά\" (δυνατό μόνο σε squashfs " -"εικόνες)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Διαθέσιμο Συνολικά" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "Κίνηση" - -msgid "Transfer" -msgstr "Μεταφέρθηκαν" - -msgid "Transmission Rate" -msgstr "Ρυθμός Εκπομπής" - -msgid "Transmit" -msgstr "Εκπομπή" - -msgid "Transmit Power" -msgstr "Ισχύς Εκπομπής" - -msgid "Transmitter Antenna" -msgstr "Κεραία Εκπομπής" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "Διεπαφή Τούνελ" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Ισχύς Εκπομπής" - -msgid "Type" -msgstr "Τύπος" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Συσκευή USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Άγνωστο" - -msgid "Unknown Error, password not changed!" -msgstr "Άγνωστο Λάθος. ο κωδικός πρόσβασης δεν άλλαξε!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Μη-αποθηκευμένες Αλλαγές" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Το Αρχείο Ανέβηκε" - -msgid "Uptime" -msgstr "Χρόνος εν λειτουργία" - -msgid "Use /etc/ethers" -msgstr "Χρήση /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Χρήση πύλης DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "Χρήση προεπιλεγμένης πύλης" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Σε χρήση" - -msgid "Used Key Slot" -msgstr "Χρησιμοποιούμενη Υποδοχή Κλειδιού" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Όνομα Χρήστη" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Εξυπηρετητής VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "Έκδοση" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "Μοιραζόμενο κλειδί WEP" - -msgid "WEP passphrase" -msgstr "Κωδική φράση WEP" - -msgid "WMM Mode" -msgstr "Υποστήριξη WMM" - -msgid "WPA passphrase" -msgstr "Κωδική φράση WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Προειδοποίηση" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Ασύρματο" - -msgid "Wireless Adapter" -msgstr "Ασύρματος Προσαρμογέας" - -msgid "Wireless Network" -msgstr "Ασύρματο Δίκτυο" - -msgid "Wireless Overview" -msgstr "Επισκόπηση Ασύρματου Δικτύου" - -msgid "Wireless Security" -msgstr "Ασφάλεια Ασύρματου Δικτύου" - -msgid "Wireless is disabled" -msgstr "Το ασύρματο δίκτυο είναι απενεργοποιημένο" - -msgid "Wireless is not associated" -msgstr "Το ασύρματο δίκτυο μη συνδεδεμένο" - -msgid "Wireless is restarting..." -msgstr "Το ασύρματο δίκτυο επανεκκινείται..." - -msgid "Wireless network is disabled" -msgstr "Το ασύρματο δίκτυο είναι ανενεργό" - -msgid "Wireless network is enabled" -msgstr "Το ασύρματο δίκτυο είναι ενεργό" - -msgid "Write received DNS requests to syslog" -msgstr "Καταγραφή των ληφθέντων DNS αιτήσεων στο syslog" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε σενάρια εκκίνησης εδώ. Οι " -"αλλαγές θα εφαρμοστούν αφού επανεκκινήσετε τη συσκευή.
    Προειδοποίηση: Αν απενεργοποιήσετε απαραίτητα σενάρια εκκίνησης " -"όπως το \"network\", η συσκευή σας μπορεί να καταστεί μη-προσβάσιμη!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "αυτόματα" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "" - -#, fuzzy -msgid "creates a bridge over specified interface(s)" -msgstr "δημιουργεί μία γέφυρα μεταξύ των ορισμένων διεπαφών" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "ανενεργό" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"αρχείο όπου θα αποθηκεύονται τα Leases του DHCP" - -msgid "forward" -msgstr "προώθηση" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "αν ο στόχος είναι ένα δίκτυο" - -msgid "input" -msgstr "είσοδος" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "τοπικό αρχείο DNS" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "όχι" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "κανένα" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "κλειστό" - -msgid "on" -msgstr "ανοιχτό" - -msgid "open" -msgstr "" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "απεριόριστα" - -msgid "unspecified" -msgstr "μη-καθορισμένο" - -msgid "unspecified -or- create:" -msgstr "μη-καθορισμένο -ή- δημιουργείστε:" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "ναι" - -msgid "« Back" -msgstr "« Πίσω" - -#~ msgid "Activate this network" -#~ msgstr "Ενεργοποίηση αυτού του δικτύου" - -#~ msgid "Interface is shutting down..." -#~ msgstr "Η διεπαφή απενεργοποιείται..." - -#~ msgid "Interface reconnected" -#~ msgstr "Η διεπαφή επανασυνδέθηκε" - -#~ msgid "Interface shut down" -#~ msgstr "Η διεπαφή απενεργοποιήθηκε" - -#~ msgid "Reconnecting interface" -#~ msgstr "Επανασύνδεση της διεπαφής" - -#~ msgid "Shutdown this network" -#~ msgstr "Απενεργοποίηση αυτού του δικτύου" - -#~ msgid "Wireless restarted" -#~ msgstr "Το ασύρματο δίκτυο επανεκκινήθηκε" - -#~ msgid "Wireless shut down" -#~ msgstr "Το ασύρματο δίκτυο τερματίστηκε" - -#~ msgid "DHCP Leases" -#~ msgstr "DHCP Leases" - -#~ msgid "Sort" -#~ msgstr "Ταξινόμηση" - -#~ msgid "help" -#~ msgstr "βοήθεια" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "Κατάσταση IPv6 WAN" - -#~ msgid "Apply" -#~ msgstr "Εφαρμογή" - -#~ msgid "Applying changes" -#~ msgstr "Εφαρμογή αλλαγών" - -#~ msgid "Configuration applied." -#~ msgstr "Η Παραμετροποίηση εφαρμόστηκε." - -#~ msgid "Save & Apply" -#~ msgstr "Αποθήκευση & Εφαρμογή" - -#~ msgid "The following changes have been committed" -#~ msgstr "Οι παρακάτω αλλαγές έχουν υποβληθεί" - -#~ msgid "Action" -#~ msgstr "Ενέργεια" - -#~ msgid "Buttons" -#~ msgstr "Κουμπιά" - -#~ msgid "Maximum hold time" -#~ msgstr "Μέγιστος χρόνος κράτησης" - -#~ msgid "Minimum hold time" -#~ msgstr "Ελάχιστος χρόνος κράτησης" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "Διαδρομή για το εκτελέσιμο που χειρίζεται το γεγονός του κουμπιού" - -#~ msgid "Leasetime" -#~ msgstr "Χρόνος Lease" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "στατικό" - -#~ msgid "AR Support" -#~ msgstr "Υποστήριξη AR" - -#~ msgid "Background Scan" -#~ msgstr "Σάρωση Παρασκηνίου" - -#~ msgid "Compression" -#~ msgstr "Συμπίεση" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Απενεργοποίηση χρονιστή HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Να μην στέλνονται απαντήσεις σε probes" - -#~ msgid "Fast Frames" -#~ msgstr "Γρήγορα Πλαίσια" - -#~ msgid "Maximum Rate" -#~ msgstr "Μέγιστος Ρυθμός" - -#~ msgid "Minimum Rate" -#~ msgstr "Ελάχιστος Ρυθμός" - -#~ msgid "Multicast Rate" -#~ msgstr "Ρυθμός Multicast" - -#~ msgid "Outdoor Channels" -#~ msgstr "Εξωτερικά Κανάλια" - -#~ msgid "Regulatory Domain" -#~ msgstr "Ρυθμιστική Περιοχή" - -#~ msgid "Separate WDS" -#~ msgstr "Ξεχωριστά WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Λειτουργία Turbo" - -#~ msgid "XR Support" -#~ msgstr "Υποστήριξη XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Ένα επιπλέον δίκτυο θα δημιουργηθεί εάν αυτό αφεθεί κενό" - -#~ msgid "Port %d" -#~ msgstr "Θύρα %d" - -#~ msgid "VLAN Interface" -#~ msgstr "Διεπαφή VLAN" diff --git a/luci-base/po/en/base.po b/luci-base/po/en/base.po deleted file mode 100644 index dc5c22a65..000000000 --- a/luci-base/po/en/base.po +++ /dev/null @@ -1,4028 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-04-03 08:44+0200\n" -"Last-Translator: juhosg \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d minute window, %d second interval)" - -msgid "(%s available)" -msgstr "(%s available)" - -msgid "(empty)" -msgstr "(empty)" - -msgid "(no interfaces attached)" -msgstr "(no interfaces attached)" - -msgid "-- Additional Field --" -msgstr "-- Additional Field --" - -msgid "-- Please choose --" -msgstr "-- Please choose --" - -msgid "-- custom --" -msgstr "-- custom --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "1 Minute Load:" - -msgid "15 Minute Load:" -msgstr "15 Minute Load:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "5 Minute Load:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS query port" - -msgid "DNS server port" -msgstr "DNS server port" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS servers will be queried in the " -"order of the resolvfile" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Address" - -msgid "IPv4-Gateway" -msgstr "IPv4-Gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Address or Network " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Configuration" - -msgid "LED Name" -msgstr "LED Name" - -msgid "MAC-Address" -msgstr "MAC-Address" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. DHCP leases" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. EDNS0 packet size" - -msgid "Max. concurrent queries" -msgstr "Max. concurrent queries" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP retry threshold" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM Bridges" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM Virtual Channel Identifier (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM Virtual Path Identifier (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." - -msgid "ATM device number" -msgstr "ATM device number" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Access Concentrator" - -msgid "Access Point" -msgstr "Access Point" - -msgid "Actions" -msgstr "Actions" - -msgid "Active IPv4-Routes" -msgstr "Active IPv4-Routes" - -msgid "Active IPv6-Routes" -msgstr "Active IPv6-Routes" - -msgid "Active Connections" -msgstr "Active Connections" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Add" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Add local domain suffix to names served from hosts files" - -msgid "Add new interface..." -msgstr "Add new interface..." - -msgid "Additional Hosts files" -msgstr "Additional Hosts files" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Address" - -msgid "Address to access local relay bridge" -msgstr "Address to access local relay bridge" - -msgid "Administration" -msgstr "Administration" - -msgid "Advanced Settings" -msgstr "Advanced Settings" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alert" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Allow SSH password authentication" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Allow all except listed" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Allow listed only" - -msgid "Allow localhost" -msgstr "Allow localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Allow remote hosts to connect to local SSH forwarded ports" - -msgid "Allow root logins with password" -msgstr "Allow root logins with password" - -msgid "Allow the root user to login with password" -msgstr "Allow the root user to login with password" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antenna 1" - -msgid "Antenna 2" -msgstr "Antenna 2" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "Any zone" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Assign interfaces..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Associated Stations" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Authentication" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Authoritative" - -msgid "Authorization Required" -msgstr "Authorization Required" - -msgid "Auto Refresh" -msgstr "Auto Refresh" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Available" - -msgid "Available packages" -msgstr "Available packages" - -msgid "Average:" -msgstr "Average:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Back" - -msgid "Back to Overview" -msgstr "Back to Overview" - -msgid "Back to configuration" -msgstr "Back to configuration" - -msgid "Back to overview" -msgstr "Back to overview" - -msgid "Back to scan results" -msgstr "Back to scan results" - -msgid "Backup" -msgstr "" - -msgid "Backup / Flash Firmware" -msgstr "Backup / Flash Firmware" - -msgid "Backup file list" -msgstr "Backup file list" - -msgid "Bad address specified!" -msgstr "Bad address specified!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Bogus NX Domain Override" - -msgid "Bridge" -msgstr "Bridge" - -msgid "Bridge interfaces" -msgstr "Bridge interfaces" - -msgid "Bridge unit number" -msgstr "Bridge unit number" - -msgid "Bring up on boot" -msgstr "Bring up on boot" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "Buffered" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU usage (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Cancel" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Chain" - -msgid "Changes" -msgstr "Changes" - -msgid "Changes applied." -msgstr "Changes applied." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Changes the administrator password for accessing the device" - -msgid "Channel" -msgstr "Channel" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Check" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Checksum" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "Cipher" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." - -msgid "Client" -msgstr "Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "Client ID to send when requesting DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" - -msgid "Close list..." -msgstr "Close list..." - -msgid "Collecting data..." -msgstr "Collecting data..." - -msgid "Command" -msgstr "Command" - -msgid "Common Configuration" -msgstr "Common Configuration" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuration" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Configuration files will be kept." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Confirmation" - -msgid "Connect" -msgstr "Connect" - -msgid "Connected" -msgstr "Connected" - -msgid "Connection Limit" -msgstr "Connection Limit" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Connections" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "Country" - -msgid "Country Code" -msgstr "Country Code" - -msgid "Cover the following interface" -msgstr "Cover the following interface" - -msgid "Cover the following interfaces" -msgstr "Cover the following interfaces" - -msgid "Create / Assign firewall-zone" -msgstr "Create / Assign firewall-zone" - -msgid "Create Interface" -msgstr "Create Interface" - -msgid "Create a bridge over multiple interfaces" -msgstr "Create a bridge over multiple interfaces" - -msgid "Critical" -msgstr "Critical" - -msgid "Cron Log Level" -msgstr "Cron Log Level" - -msgid "Custom Interface" -msgstr "Custom Interface" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Customizes the behaviour of the device LEDs if possible." - -msgid "DHCP Server" -msgstr "DHCP Server" - -msgid "DHCP and DNS" -msgstr "DHCP and DNS" - -msgid "DHCP client" -msgstr "DHCP client" - -msgid "DHCP-Options" -msgstr "DHCP-Options" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNS forwardings" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Debug" - -msgid "Default %d" -msgstr "Default %d" - -msgid "Default gateway" -msgstr "Default gateway" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Default state" - -msgid "Define a name for this network." -msgstr "Define a name for this network." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." - -msgid "Delete" -msgstr "Delete" - -msgid "Delete this network" -msgstr "Delete this network" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Description" - -msgid "Design" -msgstr "Design" - -msgid "Destination" -msgstr "Destination" - -msgid "Device" -msgstr "Device" - -msgid "Device Configuration" -msgstr "Device Configuration" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnostics" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Directory" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Disabled" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "Distance Optimization" - -msgid "Distance to farthest network member in meters." -msgstr "Distance to farthest network member in meters." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversity" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Domain required" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Don't forward DNS-Requests " -"without DNS-Name" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Download and install package" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Dynamic DHCP" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-Method" - -msgid "Edit" -msgstr "Edit" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Enable STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "Enable/Disable" - -msgid "Enabled" -msgstr "Enabled" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Enables the Spanning Tree Protocol on this bridge" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "Encryption" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "Error" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet Adapter" - -msgid "Ethernet Switch" -msgstr "Ethernet Switch" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "Filesystem" - -msgid "Filter" -msgstr "Filter" - -msgid "Filter private" -msgstr "Filter private" - -msgid "Filter useless" -msgstr "Filter useless" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "Find package" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Firewall Settings" - -msgid "Firewall Status" -msgstr "Firewall Status" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "Flash Firmware" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "Force" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "Fragmentation Threshold" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "General Setup" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "Go to relevant configuration page" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Hang Up" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hide ESSID" -msgstr "Hide ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Host entries" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "Host-IP or Network" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Hostnames" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP address" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "Identity" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignore /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignore interface" - -msgid "Ignore resolve file" -msgstr "Ignore resolve file" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "In" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Initscript" - -msgid "Initscripts" -msgstr "Initscripts" - -msgid "Install" -msgstr "Install" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "Invalid input value" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Invalid username and/or password! Please try again." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"It appears that you try to flash an image that does not fit into the flash " -"memory, please verify the image file!" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "Join Network" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "Kernel Log" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "Key" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "Kill" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "Language" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "Leasefile" - -msgid "Leasetime remaining" -msgstr "Leasetime remaining" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "Limit" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Link On" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Load" - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "Local Time" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Localise queries" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "Log queries" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Login" - -msgid "Logout" -msgstr "Logout" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "MAC-Address Filter" - -msgid "MAC-Filter" -msgstr "MAC-Filter" - -msgid "MAC-List" -msgstr "MAC-List" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Memory" - -msgid "Memory usage (%)" -msgstr "Memory usage (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metric" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mode" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Modem device" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "Mount Point" - -msgid "Mount Points" -msgstr "Mount Points" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Mounted file systems" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "Name" -msgstr "Name" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "Name of the new network" - -msgid "Navigation" -msgstr "Navigation" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "Network" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "No chains in this table" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "No rules in this chain" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "Noise" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "OPKG-Configuration" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Options" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "Out" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Overview" - -msgid "Owner" -msgstr "Owner" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA Encapsulation" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "Package name" - -msgid "Packets" -msgstr "Packets" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "Password" - -msgid "Password authentication" -msgstr "Password authentication" - -msgid "Password of Private Key" -msgstr "Password of Private Key" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Path to CA-Certificate" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Path to Private Key" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Perform reboot" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Physical Settings" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Pkts." - -msgid "Please enter your username and password." -msgstr "Please enter your username and password." - -msgid "Policy" -msgstr "Policy" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Prevents client-to-client communication" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Proceed" - -msgid "Processes" -msgstr "Processes" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocol" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS Threshold" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Read /etc/ethers to configure the DHCP-Server" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Reboot" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "Reboots the operating system of your device" - -msgid "Receive" -msgstr "Receive" - -msgid "Receiver Antenna" -msgstr "Receiver Antenna" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "References" -msgstr "References" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Remove" - -msgid "Repeat scan" -msgstr "Repeat scan" - -msgid "Replace entry" -msgstr "Replace entry" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Reset Counters" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "Restart" - -msgid "Restart Firewall" -msgstr "Restart Firewall" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "" - -msgid "Restore backup" -msgstr "Restore backup" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "Revert" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "Routes" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Save" - -msgid "Save & Apply" -msgstr "Save & Apply" - -msgid "Scan" -msgstr "Scan" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Scheduled Tasks" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Separate Clients" - -msgid "Server Settings" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "Services" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Signal" -msgstr "Signal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "Size" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Skip" - -msgid "Skip to content" -msgstr "Skip to content" - -msgid "Skip to navigation" -msgstr "Skip to navigation" - -msgid "Slot time" -msgstr "Slot time" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "Source" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Start" - -msgid "Start priority" -msgstr "Start priority" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "Static IPv4 Routes" - -msgid "Static IPv6 Routes" -msgstr "Static IPv6 Routes" - -msgid "Static Leases" -msgstr "Static Leases" - -msgid "Static Routes" -msgstr "Static Routes" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Stop" - -msgid "Strict order" -msgstr "Strict order" - -msgid "Submit" -msgstr "Submit" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "System" - -msgid "System Log" -msgstr "System Log" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Table" - -msgid "Target" -msgstr "Target" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Terminate" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"The filesystem that was used to format the memory (e.g. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been reverted" -msgstr "The following changes have been reverted" - -msgid "The following rules are currently active on this system." -msgstr "The following rules are currently active on this system." - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes until you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." - -msgid "There are no active leases." -msgstr "" - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"This is the only DHCP in the local network" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "This is the system crontab in which scheduled tasks can be defined." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"This list gives an overview over currently running system processes and " -"their status." - -msgid "This page gives an overview over currently active network connections." -msgstr "This page gives an overview over currently active network connections." - -msgid "This section contains no values yet" -msgstr "This section contains no values yet" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "Timezone" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "Traffic" - -msgid "Transfer" -msgstr "Transfer" - -msgid "Transmission Rate" -msgstr "Transmission Rate" - -msgid "Transmit" -msgstr "Transmit" - -msgid "Transmit Power" -msgstr "Transmit Power" - -msgid "Transmitter Antenna" -msgstr "Transmitter Antenna" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "Type" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Unsaved Changes" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Uploaded File" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Use /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Used" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Username" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "Version" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "WMM Mode" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "Wireless Adapter" - -msgid "Wireless Network" -msgstr "Wireless Network" - -msgid "Wireless Overview" -msgstr "Wireless Overview" - -msgid "Wireless Security" -msgstr "Wireless Security" - -msgid "Wireless is disabled" -msgstr "" - -msgid "Wireless is not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "creates a bridge over specified interface(s)" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "disable" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"file where given DHCP-leases will be stored" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "if target is a network" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "local DNS file" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "none" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "unspecified -or- create:" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "« Back" - -#~ msgid "Activate this network" -#~ msgstr "Activate this network" - -#~ msgid "Backup / Restore" -#~ msgstr "Backup / Restore" - -#~ msgid "DHCP Leases" -#~ msgstr "DHCP Leases" - -#~ msgid "help" -#~ msgstr "help" - -#~ msgid "Apply" -#~ msgstr "Apply" - -#~ msgid "Applying changes" -#~ msgstr "Applying changes" - -#~ msgid "Configuration applied." -#~ msgstr "Configuration applied." - -#~ msgid "Action" -#~ msgstr "Action" - -#~ msgid "Buttons" -#~ msgstr "Buttons" - -#~ msgid "Handler" -#~ msgstr "Handler" - -#~ msgid "Maximum hold time" -#~ msgstr "Maximum hold time" - -#~ msgid "Minimum hold time" -#~ msgstr "Minimum hold time" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "Specifies the button state to handle" - -#~ msgid "Leasetime" -#~ msgstr "Leasetime" - -#~ msgid "automatic" -#~ msgstr "automatic" - -#~ msgid "AR Support" -#~ msgstr "AR Support" - -#~ msgid "Background Scan" -#~ msgstr "Background Scan" - -#~ msgid "Compression" -#~ msgstr "Compression" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Disable HW-Beacon timer" - -#~ msgid "Do not send probe responses" -#~ msgstr "Do not send probe responses" - -#~ msgid "Fast Frames" -#~ msgstr "Fast Frames" - -#~ msgid "Maximum Rate" -#~ msgstr "Maximum Rate" - -#~ msgid "Minimum Rate" -#~ msgstr "Minimum Rate" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicast Rate" - -#~ msgid "Outdoor Channels" -#~ msgstr "Outdoor Channels" - -#~ msgid "Regulatory Domain" -#~ msgstr "Regulatory Domain" - -#~ msgid "Separate WDS" -#~ msgstr "Separate WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo Mode" - -#~ msgid "XR Support" -#~ msgstr "XR Support" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "An additional network will be created if you leave this unchecked." - -#~ msgid "CPU" -#~ msgstr "CPU" diff --git a/luci-base/po/es/base.po b/luci-base/po/es/base.po deleted file mode 100644 index 635dc1160..000000000 --- a/luci-base/po/es/base.po +++ /dev/null @@ -1,4235 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2014-05-04 11:38+0200\n" -"Last-Translator: José Vicente \n" -"Language-Team: LANGUAGE \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(ventana de %d minutos, intervalo de %d segundos)" - -msgid "(%s available)" -msgstr "(%s está disponible)" - -msgid "(empty)" -msgstr "(vacío)" - -msgid "(no interfaces attached)" -msgstr "(sin interfaces conectados)" - -msgid "-- Additional Field --" -msgstr "-- Campo Adicional --" - -msgid "-- Please choose --" -msgstr "-- Elija, por favor --" - -msgid "-- custom --" -msgstr "-- introducir --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Carga a 1 minuto:" - -msgid "15 Minute Load:" -msgstr "Carga a 15 minutos:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Carga a 5 minutos:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" -"BSSID" - -msgid "DNS query port" -msgstr "Puerto de consultas al DNS" - -msgid "DNS server port" -msgstr "Puerto del servidor DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Los servidores de DNS se consultan " -"en el orden en que aparecen en el fichero resolv" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "Dirección IPv4" - -msgid "IPv4-Gateway" -msgstr "" -"Puerta de enlace IPv4" - -msgid "IPv4-Netmask" -msgstr "Máscara de red IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Dirección o red (CIDR)IPv6" - -msgid "IPv6-Gateway" -msgstr "" -"Puerta de enlace IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Configuración de LEDs" - -msgid "LED Name" -msgstr "Nombre del LED" - -msgid "MAC-Address" -msgstr "Dirección MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Máximas cesiones DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "Tamaño máximo de paquetes EDNS0" - -msgid "Max. concurrent queries" -msgstr "Máximo número de consultas concurrentes" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Umbral de reintento ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Puente ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identificador de canal virtual ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identificador de camino virtual ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Los puentes ATM exponen conexiones AAL5 ethernet encapsuladas como " -"interfaces de red Linux que se pueden usar junto a DHCP o PPP para conectar " -"a la red del proveedor." - -msgid "ATM device number" -msgstr "Número de dispositivo ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Concentrador de acceso" - -msgid "Access Point" -msgstr "Punto de Acceso" - -msgid "Actions" -msgstr "Acciones" - -msgid "Active IPv4-Routes" -msgstr "Rutas activas IPv4" - -msgid "Active IPv6-Routes" -msgstr "Rutas activas IPv6" - -msgid "Active Connections" -msgstr "Conexiones activas" - -msgid "Active DHCP Leases" -msgstr "Cesiones DHCP activas" - -msgid "Active DHCPv6 Leases" -msgstr "Cesiones DHCPv6 activas" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Añadir" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Añadir el sufijo de dominio local a los nombres servidos desde el fichero de " -"máquinas" - -msgid "Add new interface..." -msgstr "Añadir nueva interfaz..." - -msgid "Additional Hosts files" -msgstr "Ficheros de máquinas adicionales" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Dirección" - -msgid "Address to access local relay bridge" -msgstr "Dirección del puente relé local" - -msgid "Administration" -msgstr "Administración" - -msgid "Advanced Settings" -msgstr "Configuración avanzada" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alerta" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Permitir autenticación de contraseña via SSH" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Permitir a todos excepto a los de la lista" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Permitir a los pertenecientes en la lista" - -msgid "Allow localhost" -msgstr "Permitir a la propia máquina" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Permitir a máquinas remotas conectar a puestos SSH locales traspasados" - -msgid "Allow root logins with password" -msgstr "Permitir conexiones a root con contraseña" - -msgid "Allow the root user to login with password" -msgstr "Permitir al usuario root conectar con contraseña" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Permitir respuestas en el rango 127.0.0.0/8, por ejemplo para servicios RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "Configuración de la antena" - -msgid "Any zone" -msgstr "Cualquier zona" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Asigne interfaces..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Estaciones asociadas" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autentificación" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autorizado" - -msgid "Authorization Required" -msgstr "Conéctese" - -msgid "Auto Refresh" -msgstr "Autorefresco" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Disponible" - -msgid "Available packages" -msgstr "Paquetes disponibles" - -msgid "Average:" -msgstr "Media:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Volver" - -msgid "Back to Overview" -msgstr "Volver al resumen" - -msgid "Back to configuration" -msgstr "Volver a la configuración" - -msgid "Back to overview" -msgstr "Volver al resumen" - -msgid "Back to scan results" -msgstr "Volver a resultados de la exploración" - -msgid "Backup" -msgstr "Salvar" - -msgid "Backup / Flash Firmware" -msgstr "Copia de seguridad / Grabar firmware" - -msgid "Backup file list" -msgstr "Salvar lista de ficheros" - -msgid "Bad address specified!" -msgstr "¡Dirección no válida!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Lista de ficheros a los que hacer copia de seguridad. Es una lista de " -"ficheros de configuración cambiados por ficheros marcados por opkg, ficheros " -"esenciales base y los patrones de copia de seguridad definidos por el " -"usuario." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Ignorar dominio falso NX" - -msgid "Bridge" -msgstr "Puente" - -msgid "Bridge interfaces" -msgstr "Puentear interfaces" - -msgid "Bridge unit number" -msgstr "Número de unidad del puente" - -msgid "Bring up on boot" -msgstr "Activar en el arranque" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Controlador inalámbrico 802.11%s Broadcom" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Controlador inalámbrico 802.11 BCM%04x" - -msgid "Buffered" -msgstr "En búfer" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Uso de CPU (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Cadena" - -msgid "Changes" -msgstr "Cambios" - -msgid "Changes applied." -msgstr "Cambios aplicados." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Cambie la contraseña del administrador para acceder al dispositivo" - -msgid "Channel" -msgstr "Canal" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Comprobar" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Comprobación" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Elija la zona del cortafuegos a la que quiere asignar esta interfaz. " -"Seleccione no especificado para eliminar la interfaz de la zona " -"asociada o rellene el campo crear para definir una zona nueva a la " -"que asignarla." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Elija la red o redes a las que quiere unir esta interfaz inalámbrica o vacíe " -"el campo crear para definir una red nueva." - -msgid "Cipher" -msgstr "Cifrado" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Pulse \"generar archivo\" para descargar un fichero tar con los ficheros de " -"configuración actuales." - -msgid "Client" -msgstr "Cliente" - -msgid "Client ID to send when requesting DHCP" -msgstr "ID de cliente que se enviará al solicitar DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Cerrar las conexiones inactivas tras los segundos dados. Use 0 para una " -"conexión permanente" - -msgid "Close list..." -msgstr "Cerrar lista..." - -msgid "Collecting data..." -msgstr "Un momento..." - -msgid "Command" -msgstr "Comando" - -msgid "Common Configuration" -msgstr "Configuración común" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuración" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Se mantendrán los ficheros de configuración." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Confirmación" - -msgid "Connect" -msgstr "Conectar" - -msgid "Connected" -msgstr "Conectado" - -msgid "Connection Limit" -msgstr "Límite de conexión" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Conexiones" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "País" - -msgid "Country Code" -msgstr "Código de país" - -msgid "Cover the following interface" -msgstr "Cubre el interfaz siguiente" - -msgid "Cover the following interfaces" -msgstr "Cubre los siguientes interfaces" - -msgid "Create / Assign firewall-zone" -msgstr "Crear / Asignar zona de seguridad" - -msgid "Create Interface" -msgstr "Crear interfaz" - -msgid "Create a bridge over multiple interfaces" -msgstr "Crear un puente sobre múltiples interfaces" - -msgid "Critical" -msgstr "Crítico" - -msgid "Cron Log Level" -msgstr "Nivel de registro de cron" - -msgid "Custom Interface" -msgstr "Interfaz propio" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Personaliza el comportamiento de los LEDs del dispositivo, si es posible." - -msgid "DHCP Server" -msgstr "Servidor DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP y DNS" - -msgid "DHCP client" -msgstr "Cliente DHCP" - -msgid "DHCP-Options" -msgstr "Opciones de DHCP" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Retransmisión DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Depuración" - -msgid "Default %d" -msgstr "%d por defecto" - -msgid "Default gateway" -msgstr "Gateway por defecto" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Estado por defecto" - -msgid "Define a name for this network." -msgstr "Definir un nombre para esta red." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Definir optiones adicionales DHCP, por ejemplo " -"\"6,192.168.2.1,192.168.2.2\" que publica diferentes servidores " -"DNS a los clientes." - -msgid "Delete" -msgstr "Eliminar" - -msgid "Delete this network" -msgstr "Borrar esta red" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Descripción" - -msgid "Design" -msgstr "Diseño" - -msgid "Destination" -msgstr "Destino" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Device Configuration" -msgstr "Configuración del dispositivo" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnósticos" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Directorio" - -msgid "Disable" -msgstr "Desactivar" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Desactivar DHCP " -"para esta interfaz." - -msgid "Disable DNS setup" -msgstr "Desactivar configuración de DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Desactivar" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Descartar respuestas RFC1918 salientes" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "Mostrar sólo paquete que contienen" - -msgid "Distance Optimization" -msgstr "Optimización de distancia" - -msgid "Distance to farthest network member in meters." -msgstr "Distancia al miembro de la red mas lejana en metros." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversidad" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq es un programa que combina un servidor DHCP y un reenviador DNS para cortafuegos NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "No guardar respuestas negativas, por ejemplo dominios inexistentes" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"No retransmitir peticiones que no se puedan responder por servidores de " -"nombres públicos" - -msgid "Do not forward reverse lookups for local networks" -msgstr "No retransmitir búsquedas inversas para redes locales" - -msgid "Domain required" -msgstr "Dominio requerido" - -msgid "Domain whitelist" -msgstr "Lista blanca de dominios" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"No reenviar peticiones de DNS sin " -"un nombre de DNS" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Descargar e instalar paquete" - -msgid "Download backup" -msgstr "Descargar copia de seguridad" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instancia Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear ofrece acceso SSH y un servidor " -"SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP dinámico" - -msgid "Dynamic tunnel" -msgstr "Túnel dinámico" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Reparte direcciones DHCP dinámicamente a los clientes. Si se desactiva sólo " -"se servirá a clientes con cesiones estáticas." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Método EAP" - -msgid "Edit" -msgstr "Editar" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Editar esta interfaz" - -msgid "Edit this network" -msgstr "Editar esta red" - -msgid "Emergency" -msgstr "Emergencia" - -msgid "Enable" -msgstr "Activar" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Activar STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Activar actualización dinámica de punto final HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Activar negociación IPv6 en el enlace PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Activar paso de tramas jumbo" - -msgid "Enable NTP client" -msgstr "Activar cliente NTP" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Activar servidor TFTP" - -msgid "Enable VLAN functionality" -msgstr "Activar funcionalidad VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Activar aprendizaje y envejecimiento" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Active este punto de montaje" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "Activar este swap" - -msgid "Enable/Disable" -msgstr "Activar/Desactivar" - -msgid "Enabled" -msgstr "Activado" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Activa el protocol STP en este puente" - -msgid "Encapsulation mode" -msgstr "Modo de encapsulado" - -msgid "Encryption" -msgstr "Encriptación" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Borrando..." - -msgid "Error" -msgstr "Error" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Adaptador ethernet" - -msgid "Ethernet Switch" -msgstr "Switch ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Expandir nombre de máquina" - -msgid "Expires" -msgstr "Expira" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Tiempo de finalización de direcciones cedidas (mínimo dos minutos: 2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Servidor externo de registro del sistema" - -msgid "External system log server port" -msgstr "Puerto del servidor externo de registro del sistema" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Fichero" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nombre del fichero de imagen de arranque mostrado a los clientes" - -msgid "Filesystem" -msgstr "Sistema de ficheros" - -msgid "Filter" -msgstr "Filtro" - -msgid "Filter private" -msgstr "Filtro privado" - -msgid "Filter useless" -msgstr "Filtro inútil" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Encontrar y unirse a red" - -msgid "Find package" -msgstr "Buscar paquete" - -msgid "Finish" -msgstr "Terminar" - -msgid "Firewall" -msgstr "Cortafuegos" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Configuración del cortafuegos" - -msgid "Firewall Status" -msgstr "Estado del cortafuegos" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Versión del firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Puerto origen fijo para peticiones de DNS salientes" - -msgid "Flash Firmware" -msgstr "Grabar firmware" - -msgid "Flash image..." -msgstr "Grabar imagen..." - -msgid "Flash new firmware image" -msgstr "Grabar imágenes del firmware" - -msgid "Flash operations" -msgstr "Operaciones de grabado" - -msgid "Flashing..." -msgstr "Grabando..." - -msgid "Force" -msgstr "Forzar" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Forzar CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Forzar DHCP en esta red aunque se detecte otro servidor." - -msgid "Force TKIP" -msgstr "Forzar TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forzar TKIP y CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Retransmitir tráfico DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Retransmitir tráfico de propagación" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Modo de retransmisión" - -msgid "Fragmentation Threshold" -msgstr "Umbral de fragmentación" - -# It should be "Frame Bursting" at once! -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Libre" - -msgid "Free space" -msgstr "Espacio libre" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Sólo GPRS" - -msgid "Gateway" -msgstr "Pasarela" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Puertos del gateway" - -msgid "General Settings" -msgstr "Configuración general" - -msgid "General Setup" -msgstr "Configuración general" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Generar archivo" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Controlador inalámbrico 802.11%s genérico" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"La confirmación y la contraseña no coinciden. ¡No se ha cambiado la " -"contraseña!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Ir a configuración de contraseña..." - -msgid "Go to relevant configuration page" -msgstr "Ir a la página principal de configuración" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Contraseña HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Suspender" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Aspectos básicos de su dispositivo como la zona horaria o nombre de máquina." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "Claves públicas SSH. Ponga una por línea." - -msgid "Hide ESSID" -msgstr "Ocultar ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Entradas de máquina" - -msgid "Host expiry timeout" -msgstr "Espera para caducidad de máquinas" - -msgid "Host-IP or Network" -msgstr "" -"Dirección IP de máquina o " -"red" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Nombre de máquina" - -msgid "Hostname to send when requesting DHCP" -msgstr "Nombre de máquina a enviar cuando se solicite DHCP" - -msgid "Hostnames" -msgstr "Nombres de máquina" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Dirección IP" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Cortafuegos IPv4" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "Dirección IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Propagación IPv4" - -msgid "IPv4 gateway" -msgstr "Gateway IPv4" - -msgid "IPv4 netmask" -msgstr "Máscara de red IPv4" - -msgid "IPv4 only" -msgstr "Sólo IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Longitud de prefijo IPv4" - -msgid "IPv4-Address" -msgstr "Dirección IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Cortafuegos IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "Dirección IPv6" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Gateway IPv6" - -msgid "IPv6 only" -msgstr "Sólo IPv6" - -msgid "IPv6 prefix" -msgstr "Prefijo IPv6" - -msgid "IPv6 prefix length" -msgstr "Longitud de prefijo IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Dirección IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-en-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-sobre-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-sobre-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identidad" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Montar el dispositivo por su UUID en vez de un nodo fijo de dispositivo si " -"se especifica" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Montar el dispositivo por la etiqueta de la partición en vez de por el nodo " -"fijo de dispositivo si se especifica" - -msgid "If unchecked, no default route is configured" -msgstr "Si está desmarcado no se configurará una ruta por defecto" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" -"Si está desmarcado las direcciones de servidor DNS anunciadas se ignorarán" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Si su dispositivo no tiene memoria RAM suficiente, los datos no utilizados pueden ser guardados temporalmente " -"en un dispositivo de intercambio (swap-device) liberando el espacio que " -"ocupan. Tenga en cuenta que el intercambio es un proceso lento porque los " -"dispositivos de intercambio no pueden transferir volúmenes de información a " -"alta velocidad tal y como hace la memoria RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignorar /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignorar interfaz" - -msgid "Ignore resolve file" -msgstr "Ignorar el fichero resolv" - -msgid "Image" -msgstr "Imagen" - -msgid "In" -msgstr "Entrada" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Espera de inactividad" - -msgid "Inbound:" -msgstr "Entrantes:" - -msgid "Info" -msgstr "Información" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Nombre del script de inicio" - -msgid "Initscripts" -msgstr "Scripts de inicio" - -msgid "Install" -msgstr "Instalar" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instalar el paquete %q" - -msgid "Install protocol extensions..." -msgstr "Instalar extensiones de protocolo..." - -msgid "Installed packages" -msgstr "Paquetes instalados" - -msgid "Interface" -msgstr "Interfaz" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configuración del interfaz" - -msgid "Interface Overview" -msgstr "Resumen de interfaces" - -msgid "Interface is reconnecting..." -msgstr "Reconectando interfaz..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "El interfaz no existe o no está aún conectado." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Error interno del servidor" - -msgid "Invalid" -msgstr "Valor ingresado inválido" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "¡ID VLAN no válido! Sólo se permiten IDs entre %d y %d." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "¡ID VLAN no válido! Sólo se permiten IDs únicos" - -msgid "Invalid username and/or password! Please try again." -msgstr "" -"¡Nombre de usuario o contraseña no válidos!. Pruebe de nuevo, por favor." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Parece que está intentando grabar una imagen de firmware mayor que la " -"memoria flash de su equipo. ¡Por favor, verifique el archivo!" - -msgid "JavaScript required!" -msgstr "¡Se necesita JavaScript!" - -msgid "Join Network" -msgstr "Unirse a Red" - -msgid "Join Network: Wireless Scan" -msgstr "Unirse a una red: Exploración inalámbrica" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Conservar la configuración del router" - -msgid "Kernel Log" -msgstr "Registro del Kernel" - -msgid "Kernel Version" -msgstr "Versión del Kernel" - -msgid "Key" -msgstr "Clave" - -msgid "Key #%d" -msgstr "Clave #%d" - -msgid "Kill" -msgstr "Matar" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Servidor L2TP" - -msgid "LCP echo failure threshold" -msgstr "Umbral de fracaso en eco LCP" - -msgid "LCP echo interval" -msgstr "Intervalo de eco LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Etiqueta" - -msgid "Language" -msgstr "Idioma" - -msgid "Language and Style" -msgstr "Idioma y Estilo" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Tiempo de validación de cesión" - -msgid "Leasefile" -msgstr "Archivo de cesiones" - -msgid "Leasetime remaining" -msgstr "Tiempo de cesión restante" - -msgid "Leave empty to autodetect" -msgstr "Dejar vacío para autodetectar" - -msgid "Leave empty to use the current WAN address" -msgstr "Dejar vacío para usar la dirección WAN actual" - -msgid "Legend:" -msgstr "Leyenda:" - -msgid "Limit" -msgstr "Límite" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Enlace activado" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Lista de servidores DNS a los que " -"enviar solicitudes" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Lista de dominios a los que se permiten respuestas RFC1918" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Lista de máquinas que proporcionan resultados de dominio NX falsos" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "Escucha solo en la interfaz dada o, si no se especifica, en todas" - -msgid "Listening port for inbound DNS queries" -msgstr "Puerto de escucha para consultas DNS entrantes" - -msgid "Load" -msgstr "Carga" - -msgid "Load Average" -msgstr "Carga Media" - -msgid "Loading" -msgstr "Cargando" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Dirección local IPv4" - -msgid "Local IPv6 address" -msgstr "Dirección local IPv6" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Arranque local" - -msgid "Local Time" -msgstr "Hora local" - -msgid "Local domain" -msgstr "Dominio local" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Especificación de dominio local. Los nombres que coincidan con este dominio " -"nunca se retransmiten y se resuelven desde DHCP o ficheros de máquina locales" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Sufijo del dominio local que se añade a los nombres DHCP y a las entradas " -"del fichero de máquinas" - -msgid "Local server" -msgstr "Servidor local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Localizar nombre de máquina dependiendo de que la subred peticionaria si hay " -"disponibles múltiples IPs" - -msgid "Localise queries" -msgstr "Localizar consultas" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Nivel de registro" - -msgid "Log queries" -msgstr "Registrar consultas" - -msgid "Logging" -msgstr "Registro" - -msgid "Login" -msgstr "Iniciar sesión" - -msgid "Logout" -msgstr "Cerrar sesión" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Dirección cedida más baja como diferencia de la dirección de red." - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "Dirección MAC" - -msgid "MAC-Address Filter" -msgstr "Filtro por dirección MAC" - -msgid "MAC-Filter" -msgstr "Filtro por dirección MAC" - -msgid "MAC-List" -msgstr "Lista de direcciones MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Número máximo de cesiones DHCP activas" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Número máximo de consultas DNS concurrentes" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Tamaño máximo de paquetes EDNS.0 paquetes UDP" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Segundos máximos de espera a que el módem esté activo" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Máximas cesiones activas." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Memoria" - -msgid "Memory usage (%)" -msgstr "Uso de memoria (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Métrica" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Extensión de protocolo faltante para %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Modo" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Dispositivo de módem" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "Espera de inicialización del modem" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Entrada de montaje" - -msgid "Mount Point" -msgstr "Punto de montaje" - -msgid "Mount Points" -msgstr "Puntos de montaje" - -msgid "Mount Points - Mount Entry" -msgstr "Puntos de montaje - Entrada de montaje" - -msgid "Mount Points - Swap Entry" -msgstr "Puntos de montaje - Entrada de intercambio" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Los puntos de montaje definen el directorio en el que un dispositivo de " -"memoria se unirá al sistema del archivos" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Opciones de montaje" - -msgid "Mount point" -msgstr "Punto de montaje" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Sistemas de archivo montados" - -msgid "Move down" -msgstr "Bajar" - -msgid "Move up" -msgstr "Subir" - -msgid "Multicast address" -msgstr "Dirección multicast" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Servidores NTP a consultar" - -msgid "Name" -msgstr "Nombre" - -msgid "Name of the new interface" -msgstr "Nombre de la nueva interfaz" - -msgid "Name of the new network" -msgstr "Nombre de la nueva red" - -msgid "Navigation" -msgstr "Navegación" - -msgid "Netmask" -msgstr "Máscara de red" - -msgid "Network" -msgstr "Red" - -msgid "Network Utilities" -msgstr "Utilidades de red" - -msgid "Network boot image" -msgstr "Imagen de arranque en red" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "Red sin interfaces." - -msgid "Next »" -msgstr "Siguiente »" - -msgid "No DHCP Server configured for this interface" -msgstr "No se ha configurado un servidor DHCP para esta interfaz" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "No hay cadenas en esta tabla" - -msgid "No files found" -msgstr "No se han encontrado ficheros" - -msgid "No information available" -msgstr "No hay información disponible" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "Sin caché negativa" - -msgid "No network configured on this device" -msgstr "No hay red configurada para este dispositivo" - -msgid "No network name specified" -msgstr "No se ha especificado un nombre de red" - -msgid "No package lists available" -msgstr "No hay listas de paquetes disponibles" - -msgid "No password set!" -msgstr "¡Sin contraseña!" - -msgid "No rules in this chain" -msgstr "No hay reglas en esta cadena" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Sin zona asignada" - -msgid "Noise" -msgstr "Ruido" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Ruido:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Ninguno" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "No encontrado" - -msgid "Not associated" -msgstr "No asociado" - -msgid "Not connected" -msgstr "No conectado" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: se borrarán los ficheros de configuración." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Aviso" - -msgid "Nslookup" -msgstr "NSLookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "Aceptar" - -msgid "OPKG-Configuration" -msgstr "Configuración de OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "Retraso de desconexión" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Configure las interfaces de red. Puede hacer puentes con diferentes " -"interfaces, marcando el campo \"puentear interfaces\" e introduciendo el " -"nombre de las mismas separadas por espacios. También puede usar la notación " -"VLAN, INTERFACE." -"VLANNR (Ej.: eth0.1)." - -msgid "On-State Delay" -msgstr "Retraso de activación" - -msgid "One of hostname or mac address must be specified!" -msgstr "¡Debe especificar al menos un nombre de máquina o dirección mac!" - -msgid "One or more fields contain invalid values!" -msgstr "¡Valores no válidos!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "¡Campos vacíos!" - -msgid "Open list..." -msgstr "Abrir lista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Opción cambiada" - -msgid "Option removed" -msgstr "Opción eliminada" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Opciones" - -msgid "Other:" -msgstr "Otros:" - -msgid "Out" -msgstr "Salida" - -msgid "Outbound:" -msgstr "Saliente:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Ignorar dirección MAC" - -msgid "Override MTU" -msgstr "Ignorar MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Ignorar la pasarela en las respuestas DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Ignorar la máscara de red enviada a los clientes. Normalmente se calcula " -"desde la subred desde la que se sirve." - -msgid "Override the table used for internal routes" -msgstr "Ignorar la tabla usada para rutas internas" - -msgid "Overview" -msgstr "Descripción general" - -msgid "Owner" -msgstr "Propietario" - -msgid "PAP/CHAP password" -msgstr "Contraseña PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Nombre de usuario PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Encapsulación PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "¡Se necesita el paquete libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Las listas de paquetes tienen más de 24 horas" - -msgid "Package name" -msgstr "Nombre del paquete" - -msgid "Packets" -msgstr "Paquetes" - -msgid "Part of zone %q" -msgstr "Parte de zona %q" - -msgid "Password" -msgstr "Contraseña" - -msgid "Password authentication" -msgstr "Autentificación de contraseña" - -msgid "Password of Private Key" -msgstr "Contraseña de la Clave Privada" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "¡Contraseña cambiada!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Ruta al Certificado CA" - -msgid "Path to Client-Certificate" -msgstr "Camino al certificado de cliente" - -msgid "Path to Private Key" -msgstr "Ruta a la Clave Privada" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Pico:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Rearrancar" - -msgid "Perform reset" -msgstr "Reiniciar" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Ratio Phy:" - -msgid "Physical Settings" -msgstr "Configuración física" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Paq." - -msgid "Please enter your username and password." -msgstr "Por favor, introduzca su nombre de usuario y contraseña." - -msgid "Policy" -msgstr "Política" - -msgid "Port" -msgstr "Puerto" - -msgid "Port status:" -msgstr "Estado del puerto:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Asumir que el otro estará muerto tras estos fallos de echo LCP, use 0 para " -"ignorar fallos" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Impide la comunicación cliente a cliente" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Proceder" - -msgid "Processes" -msgstr "Procesos" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Protocol family" -msgstr "Familia de procolo" - -msgid "Protocol of the new interface" -msgstr "Protocolo de la nueva interfaz" - -msgid "Protocol support is not installed" -msgstr "No está instalado el soporte al protocolo" - -msgid "Provide NTP server" -msgstr "Dar servicio NTP" - -msgid "Provide new network" -msgstr "Introduzca una nueva red" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Calidad" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Umbral RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Ratio RX" - -msgid "Radius-Accounting-Port" -msgstr "Puerto de contabilidad Radius" - -msgid "Radius-Accounting-Secret" -msgstr "Secreto de contabilidad Radius" - -msgid "Radius-Accounting-Server" -msgstr "Servidor de contabilidad Radius" - -msgid "Radius-Authentication-Port" -msgstr "Puerto de autentificación Radius" - -msgid "Radius-Authentication-Secret" -msgstr "Secreto de autentificación Radius" - -msgid "Radius-Authentication-Server" -msgstr "Servidor de autentificación Radius" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Leer /etc/ethers para configurar el servidor DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"¿Está seguro de borrar esta red inalámbrica?. ¡No será posible deshacer el " -"borrado!\n" -"Puede perder el acceso a este dispositivo si está conectado por esta red." - -msgid "Really reset all changes?" -msgstr "¿Está seguro de querer reiniciar todos los cambios?" - -msgid "Really switch protocol?" -msgstr "¿Está seguro de querer cambiar el protocolo?" - -msgid "Realtime Connections" -msgstr "Conexiones en tiempo real" - -msgid "Realtime Graphs" -msgstr "Gráficas en tiempo real" - -msgid "Realtime Load" -msgstr "Carga en tiempo real" - -msgid "Realtime Traffic" -msgstr "Tráfico en tiempo real" - -msgid "Realtime Wireless" -msgstr "Red inalámbrica en tiempo real" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Protección contra reasociación" - -msgid "Reboot" -msgstr "Rearrancar" - -msgid "Rebooting..." -msgstr "Rearrancando..." - -msgid "Reboots the operating system of your device" -msgstr "Rearranque el sistema operativo de su dispositivo" - -msgid "Receive" -msgstr "Recibir" - -msgid "Receiver Antenna" -msgstr "Antena Receptora" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Reconectar esta interfaz" - -msgid "References" -msgstr "Referencias" - -msgid "Relay" -msgstr "Relé" - -msgid "Relay Bridge" -msgstr "Puente relé" - -msgid "Relay between networks" -msgstr "Relé entre redes" - -msgid "Relay bridge" -msgstr "Puente relé" - -msgid "Remote IPv4 address" -msgstr "Dirección IPv4 remota" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Desinstalar" - -msgid "Repeat scan" -msgstr "Repetir exploración" - -msgid "Replace entry" -msgstr "Reemplazar entrada" - -msgid "Replace wireless configuration" -msgstr "Cambiar la configuración inalámbrica" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Necesario para ciertos ISPs, por ejemplo Charter con DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reiniciar" - -msgid "Reset Counters" -msgstr "Reiniciar contadores" - -msgid "Reset to defaults" -msgstr "Reiniciar a valores por defecto" - -msgid "Resolv and Hosts Files" -msgstr "Ficheros Resolv y Hosts" - -msgid "Resolve file" -msgstr "Fichero de resolución" - -msgid "Restart" -msgstr "Rearrancar" - -msgid "Restart Firewall" -msgstr "Rearrancar cortafuegos" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Restaurar" - -msgid "Restore backup" -msgstr "Restaurar copia de seguridad" - -msgid "Reveal/hide password" -msgstr "Mostrar/ocultar contraseña" - -msgid "Revert" -msgstr "Anular" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Raíz" - -msgid "Root directory for files served via TFTP" -msgstr "Directorio raíz para los ficheros servidos por TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Contraseña del router" - -msgid "Routes" -msgstr "Rutas" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Las rutas especifican sobre qué interfaz y pasarela se puede llegar a una " -"cierta máquina o red." - -msgid "Run a filesystem check before mounting the device" -msgstr "Comprobar el sistema de ficheros antes de montar el dispositivo" - -msgid "Run filesystem check" -msgstr "Comprobar el sistema de ficheros" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Acceso SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Claves SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Guardar" - -msgid "Save & Apply" -msgstr "Guardar y aplicar" - -msgid "Scan" -msgstr "Explorar" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Tareas programadas" - -msgid "Section added" -msgstr "Sección añadida" - -msgid "Section removed" -msgstr "Sección eliminada" - -msgid "See \"mount\" manpage for details" -msgstr "Vea la página del manual de \"mount\" para detalles" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Enviar peticiones de echo LCP cada intervalo de segundos dado, solo efectivo " -"usado conjuntamente con el umbral de fallo" - -msgid "Separate Clients" -msgstr "Aislar clientes" - -msgid "Server Settings" -msgstr "Configuración del servidor" - -msgid "Service Name" -msgstr "Nombre de servicio" - -msgid "Service Type" -msgstr "Tipo de servicio" - -msgid "Services" -msgstr "Servicios" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Sincronización horaria" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "Configuración del servidor DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "Mostrar lista de ficheros a salvar" - -msgid "Shutdown this interface" -msgstr "Apagar esta interfaz" - -msgid "Signal" -msgstr "Señal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Señal:" - -msgid "Size" -msgstr "Tamaño" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Saltar" - -msgid "Skip to content" -msgstr "Saltar al contenido" - -msgid "Skip to navigation" -msgstr "Saltar a navegación" - -msgid "Slot time" -msgstr "Tiempo asignado" - -msgid "Software" -msgstr "Instalación de programas" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Algunos campos no son válidos, ¡no se pueden guardar!" - -msgid "Sorry, the object you requested was not found." -msgstr "Objeto no encontrado." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "El servidor encontró un error inesperado." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"No está instalado el soporte para el sysupgrade, la nueva imagen debe " -"grabarse manualmente. Por favor, mire el wiki para instrucciones de " -"instalación específicas." - -msgid "Source" -msgstr "Origen" - -msgid "Specifies the directory the device is attached to" -msgstr "Especifica el directorio al que está enlazado el dispositivo" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" -"Especifica los puertos de escucha de esta instancia de Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Especifica la cantidad de peticiones ARP fallidas hasta suponer muerta una " -"máquina" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Especifica la cantidad de segundos a transcurrir hasta suponer muerta una " -"máquina" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Especifica la clave secreta de encriptado." - -msgid "Start" -msgstr "Arrancar" - -msgid "Start priority" -msgstr "Prioridad de arranque" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Arranque" - -msgid "Static IPv4 Routes" -msgstr "Rutas estáticas IPv4" - -msgid "Static IPv6 Routes" -msgstr "Rutas estáticas IPv6" - -msgid "Static Leases" -msgstr "Cesiones estáticas" - -msgid "Static Routes" -msgstr "Rutas estáticas" - -msgid "Static address" -msgstr "Dirección estática" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Las cesiones estáticas se usan para asignar direcciones IP fijas y nombres " -"simbólicos de máquina a clientes DHCP. También son necesarias para " -"configuraciones de interfaz no dinámica en las que a cada máquina siempre se " -"le quiere servir la misma dirección IP." - -msgid "Status" -msgstr "Estado" - -msgid "Stop" -msgstr "Parar" - -msgid "Strict order" -msgstr "Orden estricto" - -msgid "Submit" -msgstr "Guardar" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Entrada de intercambio" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "Switch %q" - -msgid "Switch %q (%s)" -msgstr "Switch %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Intercambiar protocolo" - -msgid "Sync with browser" -msgstr "Sincronizar con el navegador" - -msgid "Synchronizing..." -msgstr "Sincronizando..." - -msgid "System" -msgstr "Sistema" - -msgid "System Log" -msgstr "Registro del sistema" - -msgid "System Properties" -msgstr "Propiedades del sistema" - -msgid "System log buffer size" -msgstr "Tamaño del buffer de registro del sistema" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Configuración TFTP" - -msgid "TFTP server root" -msgstr "Raíz del servidor TFTP" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Ratio TX" - -msgid "Table" -msgstr "Tabla" - -# Target = Meta --> Objetivo --> Destino? -msgid "Target" -msgstr "Objetivo" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Terminar" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"La sección de Configuración del dispositivo ocupa la configuración " -"física del hardware de radio como el canal, la potencia de transmisión o la " -"selección de antena que se comparte entre todas las redes inalámbricas " -"definidas (si el hardware de radio es capaz de ser multi-SSID). " -"Configuración por red como encriptado o modo de operación se agrupan en " -"Configuración del interfaz." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"El paquete libiwinfo-lua no está instalado. ¡Debe instalarlo para " -"poder configurar la conectividad inalambrica!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"El prefijo IPv6 asignado por el proveedor, suele termina con ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Los caracteres permitidos son: A-Z, a-z, " -"0-9 y _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"El archivo de dispositivo de memoria o partición (e.j. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"El sistema de archivo que fue utilizado para dar formato a la memoria (Ej. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Imagen recibida. Verifique que la comprobación y tamaño del fichero recibido " -"coinciden con los del original.
    Pulse \"Proceder\" para empezar el " -"grabado." - -msgid "The following changes have been reverted" -msgstr "Se han anulado los siguientes cambios" - -msgid "The following rules are currently active on this system." -msgstr "Rutas activas." - -msgid "The given network name is not unique" -msgstr "Nombre de red repetido" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"El hardware no es capaz de multi-SSD y la configuración actual se cambiará " -"si continúa." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"Longitud del prefijo IPv4 en bits, el resto se usará en direcciones IPv6." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Longitud del prefijo IPv6 en bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Los puertos de red de este dispositivo se pueden combinar en varias VLANs en las que los ordenadores " -"se pueden comunicar directamente entre ellos. Las VLANs se usan a menudo para separar diferentes " -"segmentos de red. Es común que exista un puerto por defecto para subida " -"hacia una red mayor como internet y el resto se dediquen a la red local." - -msgid "The selected protocol needs a device assigned" -msgstr "Este protocolo necesita estar asignado a un dispositivo" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"El sistema está borrando la partición de configuración y rearrancará cuando " -"termine." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Escribiendo en la memoria flash.
    ¡NO APAGUE EL DISPOSITIVO!
    " -"Espere unos minutos antes de reconectar. Es posible que tenga que renovar la " -"conexión de su ordenador para poder acceder de nuevo al dispositivo." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"El archivo con la imagen de firmware subido no tiene un formato adecuado. " -"Asegúrese de haber elegido la imagen correcta para su plataforma." - -msgid "There are no active leases." -msgstr "Sin cesiones activas." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "¡No hay cambios a anular!" - -msgid "There are no pending changes!" -msgstr "¡Sin cambios pendientes!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"No hay dispositivo asignado aún. Por favor, enlace un dispositivo de red en " -"la pestaña \"Configuración física\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"No hay contraseñas en este router. Por favor, configure una contraseña para " -"proteger el interfaz web y activar SSH." - -msgid "This IPv4 address of the relay" -msgstr "Dirección IPv4 del relé" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Lista de patrones shell con los ficheros y directorios que se deben incluir " -"en un sysupgrade. Los ficheros modificados en /etc/config/ y ciertas otras " -"configuraciones se guardarán automáticamente." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Contenido de /etc/rc.local. Ponga sus propios comandos aquí (antes de 'exit " -"0') para ejecutarlos al final del proceso de inicio." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" -"Esta es la dirección de punto final asignada por el broker del túnel, suele " -"terminar con ...:2/64" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Este es el único servidor DHCP en la red de área local" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Definición de tareas programadas para crontab." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Esta es normalmente la dirección del PoP más cercano operada por el broker " -"del túnel" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "Procesos de sistema que se están ejecutando actualmente y su estado." - -msgid "This page gives an overview over currently active network connections." -msgstr "Conexiones de red activas." - -msgid "This section contains no values yet" -msgstr "No hay reglas definidas" - -msgid "Time Synchronization" -msgstr "Sincronización horaria" - -msgid "Time Synchronization is not configured yet." -msgstr "Sincronización horaria no configurada." - -msgid "Timezone" -msgstr "Zona horaria" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Para restaurar los ficheros de configuración, debe subir primero una copia " -"de seguridad. Para reiniciar el firmware a su estado inicial pulse " -"\"Reiniciar\" (sólo posible con imágenes squashfs)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Total disponible" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Tráfico" - -msgid "Transfer" -msgstr "Transferencia" - -msgid "Transmission Rate" -msgstr "Tasa de Transmisión" - -msgid "Transmit" -msgstr "Transmitir" - -msgid "Transmit Power" -msgstr "Potencia de transmisión" - -msgid "Transmitter Antenna" -msgstr "Antena Transmisora" - -msgid "Trigger" -msgstr "Disparador" - -msgid "Trigger Mode" -msgstr "Modo de disparador" - -msgid "Tunnel ID" -msgstr "ID de túnel" - -msgid "Tunnel Interface" -msgstr "Interfaz de túnel" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Potencia-TX" - -msgid "Type" -msgstr "Tipo" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Sólo UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Dispositivo USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "Imposible repartir" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Desconocido" - -msgid "Unknown Error, password not changed!" -msgstr "Error desconocido, ¡no se ha cambiado la contraseña!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "No gestionado" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Cambios no guardados" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Tipo de protocolo no soportado." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Actualizar listas" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Suba una imagen compatible con sysupgrade para reemplazar el firmware " -"actual. Puede marcar \"Conservar la configuración\" si lo desea (es " -"necesario que la imagen sea compatible)." - -msgid "Upload archive..." -msgstr "Subir archivo..." - -msgid "Uploaded File" -msgstr "Archivo subido" - -msgid "Uptime" -msgstr "Tiempo activo" - -msgid "Use /etc/ethers" -msgstr "Usar /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Usar pasarela DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Utiliza servidores DNS anunciados por otros" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Usa códigos de país ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "MTU a usar en el interfaz de túnel" - -msgid "Use TTL on tunnel interface" -msgstr "TTL a usar en el interfaz de túnel" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Usar marca de propagación" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Usar servidores DNS personalizados" - -msgid "Use default gateway" -msgstr "Usar pasarela por defecto" - -msgid "Use gateway metric" -msgstr "Usar métrica de la pasarela" - -msgid "Use routing table" -msgstr "Usar tabla de rutas" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Pulse el botón Añadir para insertar una nueva cesión. Dirección " -"MAC identificará la máquina, dirección IPv4 especificará la " -"dirección fija a usar y Nombre de máquina se asignará como nombre " -"simbólico." - -msgid "Used" -msgstr "Usado" - -msgid "Used Key Slot" -msgstr "Espacio de clave usado" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Nombre de usuario" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs en %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs en %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Servidor VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Clase de vendedor a enviar cuando solicite DHCP" - -msgid "Verify" -msgstr "Verificar" - -msgid "Version" -msgstr "Versión" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Sistema abierto WEP" - -msgid "WEP Shared Key" -msgstr "Clave compartida WEP" - -msgid "WEP passphrase" -msgstr "Frase de paso WEP" - -msgid "WMM Mode" -msgstr "Modo WMM" - -msgid "WPA passphrase" -msgstr "Frase de paso WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-Encryption necesita que estén instalados wpa_supplicant (para el modo " -"cliente o hostapd (para los modos AP y ad-hoc)." - -msgid "Waiting for changes to be applied..." -msgstr "Esperando a que se realicen los cambios..." - -msgid "Waiting for command to complete..." -msgstr "Esperando a que termine el comando..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Aviso" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Red inalámbrica" - -msgid "Wireless Adapter" -msgstr "Adaptador inalámbrico" - -msgid "Wireless Network" -msgstr "Red inalámbrica" - -msgid "Wireless Overview" -msgstr "Redes inalámbricas" - -msgid "Wireless Security" -msgstr "Seguridad inalámbrica" - -msgid "Wireless is disabled" -msgstr "Red inalámbrica desconectada" - -msgid "Wireless is not associated" -msgstr "Red inalámbrica no asociada" - -msgid "Wireless is restarting..." -msgstr "Rearrancando red inalámbrica..." - -msgid "Wireless network is disabled" -msgstr "Red inalámbrica desconectada" - -msgid "Wireless network is enabled" -msgstr "Red inalámbrica conectada" - -msgid "Write received DNS requests to syslog" -msgstr "Escribir las peticiones de DNS recibidas en el registro del sistema" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Gestione los scripts de inicio. Los cambios serán aplicados tras reiniciar " -"el equipo.
    ADVERTENCIA: ¡Si desactiva scripts de inicio " -"esenciales como\"network\", su equipo puede no arrancar o quedar " -"inaccesible!." - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Debe activar JavaScript en su navegador o LuCI no funcionará correctamente." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "cualquiera" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "puenteado" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "crear:" - -msgid "creates a bridge over specified interface(s)" -msgstr "crea un puente sobre la interfaz o interfaces asociadas" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "desabilitar" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "expirado" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"archivo en el que se guardarán las direcciones DHCP cedidas" - -msgid "forward" -msgstr "retransmisión" - -msgid "full-duplex" -msgstr "full dúplex" - -msgid "half-duplex" -msgstr "half dúplex" - -msgid "hidden" -msgstr "oculto" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "si el destino es una red" - -msgid "input" -msgstr "entrada" - -msgid "kB" -msgstr "KB" - -msgid "kB/s" -msgstr "KB/s" - -msgid "kbit/s" -msgstr "Kbit/s" - -msgid "local DNS file" -msgstr "Archvo DNS local" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "no" - -msgid "no link" -msgstr "sin enlace" - -msgid "none" -msgstr "ninguno" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "parado" - -msgid "on" -msgstr "activo" - -msgid "open" -msgstr "abierto" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "enrutado" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "marcado" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "desconocido" - -msgid "unlimited" -msgstr "ilimitado" - -msgid "unspecified" -msgstr "no especificado" - -msgid "unspecified -or- create:" -msgstr "no especificado -o- crear:" - -msgid "untagged" -msgstr "desmarcado" - -msgid "yes" -msgstr "sí" - -msgid "« Back" -msgstr "« Volver" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Activar esta red" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Controlador inalámbrico 802.11b Hermes" - -#~ msgid "Interface is shutting down..." -#~ msgstr "Parando interfaz..." - -#~ msgid "Interface reconnected" -#~ msgstr "Interfaz reconectado" - -#~ msgid "Interface shut down" -#~ msgstr "Interfaz detenido" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Controlador inalámbrico 802.11n Prism2/2.5/3" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "Controlador inalámbrico 802.11%s RaLink" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "¿Está seguro de apagar la interfaz \"%s\"?.\n" -#~ "Puede perder el acceso a este dispositivo si está conectado por interfaz." - -#~ msgid "Reconnecting interface" -#~ msgstr "Reconectando la interfaz" - -#~ msgid "Shutdown this network" -#~ msgstr "Apagar esta red" - -#~ msgid "Wireless restarted" -#~ msgstr "Red inalámbrica rearrancada" - -#~ msgid "Wireless shut down" -#~ msgstr "Apagando red inalámbrica" - -#~ msgid "DHCP Leases" -#~ msgstr "Cesiones DHCP" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "Cesiones DHCPv6" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "¿Está seguro de borrar esta interfaz?. ¡No será posible deshacer el " -#~ "borrado!\n" -#~ "Puede perder el acceso a este dispositivo si está conectado por esta " -#~ "interfaz." - -#, fuzzy -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "¿Está seguro de querer apagar esta red?.\n" -#~ "Puede perder el acceso a este dispositivo si está conectado por esta red." - -#~ msgid "Sort" -#~ msgstr "Ordenar" - -#~ msgid "help" -#~ msgstr "ayuda" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "Estado de la WAN IPv4" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "Estado de la WAN IPv6" - -#~ msgid "Apply" -#~ msgstr "Aplicar" - -#~ msgid "Applying changes" -#~ msgstr "Aplicando cambios" - -#~ msgid "Configuration applied." -#~ msgstr "Configuración establecida." - -#~ msgid "Save & Apply" -#~ msgstr "Guardar y aplicar" - -#~ msgid "The following changes have been committed" -#~ msgstr "Se han hecho los siguientes cambios" - -#~ msgid "There are no pending changes to apply!" -#~ msgstr "¡No hay cambios pendientes!" - -#~ msgid "Action" -#~ msgstr "Acción" - -#~ msgid "Buttons" -#~ msgstr "Botones" - -#~ msgid "Handler" -#~ msgstr "Manejador" - -#~ msgid "Maximum hold time" -#~ msgstr "Pausa máxima de transmisión" - -#~ msgid "Minimum hold time" -#~ msgstr "Pausa mínima de espera" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "Ruta al ejecutable que maneja el evento button" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "Especifica el estado de botón a manejar" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "Configuración de acciones personalizadas para los botones" - -#~ msgid "Leasetime" -#~ msgstr "Tiempo de cesión" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "estático" - -#~ msgid "AR Support" -#~ msgstr "Soporte a AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Controlador inalámbrico 802.11%s Atheros" - -#~ msgid "Background Scan" -#~ msgstr "Exploración en segundo plano" - -#~ msgid "Compression" -#~ msgstr "Compresión" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Desactivar el temporizador de baliza hardware" - -#~ msgid "Do not send probe responses" -#~ msgstr "No enviar respuestas de prueba" - -#~ msgid "Fast Frames" -#~ msgstr "Tramas rápidas" - -#~ msgid "Maximum Rate" -#~ msgstr "Ratio Máximo" - -#~ msgid "Minimum Rate" -#~ msgstr "Ratio mínimo" - -#~ msgid "Multicast Rate" -#~ msgstr "Ratio multicast" - -#~ msgid "Outdoor Channels" -#~ msgstr "Canales al aire libre" - -#~ msgid "Regulatory Domain" -#~ msgstr "Dominio Regulador" - -#~ msgid "Separate WDS" -#~ msgstr "WDS aislado" - -#~ msgid "Static WDS" -#~ msgstr "WDS estático" - -#~ msgid "Turbo Mode" -#~ msgstr "Modo Turbo" - -#~ msgid "XR Support" -#~ msgstr "Soporte de XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Se creará una red adicional si deja esto desmarcado." - -#~ msgid "Join Network: Settings" -#~ msgstr "Unirse a Red: Configuración" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Puerto %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "¡El puerto %d está desmarcado en múltiples VLANs!" - -#~ msgid "VLAN Interface" -#~ msgstr "Interfaz VLAN" diff --git a/luci-base/po/fr/base.po b/luci-base/po/fr/base.po deleted file mode 100644 index 3805627b6..000000000 --- a/luci-base/po/fr/base.po +++ /dev/null @@ -1,4254 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2013-12-22 17:11+0200\n" -"Last-Translator: goofy \n" -"Language-Team: LANGUAGE \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(fenêtre de %d minutes, intervalle de %d secondes)" - -msgid "(%s available)" -msgstr "(%s disponible)" - -msgid "(empty)" -msgstr "(vide)" - -msgid "(no interfaces attached)" -msgstr "(pas d'interface connectée)" - -msgid "-- Additional Field --" -msgstr "-- Champ Supplémentaire --" - -msgid "-- Please choose --" -msgstr "-- Choisir --" - -msgid "-- custom --" -msgstr "-- autre --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Charge sur 1 minute :" - -msgid "15 Minute Load:" -msgstr "Charge sur 15 minutes :" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Charge sur 5 minutes :" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "Port des requêtes DNS" - -msgid "DNS server port" -msgstr "Port du serveur DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Les serveurs DNS seront
    interrogés dans l'ordre du fichier de résolution" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "Adresse IPv4" - -msgid "IPv4-Gateway" -msgstr "Passerelle IPv4" - -msgid "IPv4-Netmask" -msgstr "Masque réseau IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Adresse ou réseau IPv6 " -"(notation CIDR)" - -msgid "IPv6-Gateway" -msgstr "Passerelle IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "" -"Configuration des DELs" - -msgid "LED Name" -msgstr "Nom de la DEL" - -msgid "MAC-Address" -msgstr "Adresse MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Nombre de baux DHCP maximum" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"taille maximum des paquets EDNS0" - -msgid "Max. concurrent queries" -msgstr "Maximum de requêtes concurrentes" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Niveau de ré-essai ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Ponts ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" -"Identifiant de canal virtuel (VCI) ATM" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" -"Identifiant de chemin virtuel (VPI) ATM" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Les ponts ATM présentent l'Ethernet encapsulé dans des connexions AAL5 comme " -"des interfaces réseau virtuelles Linux qui peuvent être utilisées avec DHCP " -"ou PPP pour se connecter au réseau du fournisseur d'accès." - -msgid "ATM device number" -msgstr "Numéro de périphérique ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Concentrateur d'accès" - -msgid "Access Point" -msgstr "Point d'accès" - -msgid "Actions" -msgstr "Actions" - -msgid "Active IPv4-Routes" -msgstr "Routes IPv4 actives" - -msgid "Active IPv6-Routes" -msgstr "Routes IPv6 actives" - -msgid "Active Connections" -msgstr "Connexions actives" - -msgid "Active DHCP Leases" -msgstr "Bails DHCP actifs" - -msgid "Active DHCPv6 Leases" -msgstr "Bails DHCPv6 actifs" - -msgid "Ad-Hoc" -msgstr "Ad-hoc" - -msgid "Add" -msgstr "Ajouter" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Ajouter le suffixe du domaine local aux noms résolus d'après le fichier hosts" - -msgid "Add new interface..." -msgstr "Ajout d'une nouvelle interface..." - -msgid "Additional Hosts files" -msgstr "Fichiers hosts supplémetaires" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresse" - -msgid "Address to access local relay bridge" -msgstr "Adresse pour accéder au pont-relais local" - -msgid "Administration" -msgstr "Administration" - -msgid "Advanced Settings" -msgstr "Paramètres avancés" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alerte" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Autoriser l'authentification SSH par mot " -"de passe" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Autoriser tout sauf ce qui est listé" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Autoriser seulement ce qui est listé" - -msgid "Allow localhost" -msgstr "Autoriser l'hôte local" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Permettre à des hôtes distants de se conecter à des ports SSH locaux " -"correspondants (« forwarded »)" - -msgid "Allow root logins with password" -msgstr "Autoriser les connexions administrateur avec mot de passe" - -msgid "Allow the root user to login with password" -msgstr "" -"Autoriser l'utilisateur root à se connecter avec un mot de passe" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Autorise les réponses de l'amont dans la plage 127.0.0.0/8, par ex. pour les " -"services RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antenne 1" - -msgid "Antenna 2" -msgstr "Antenne 2" - -msgid "Antenna Configuration" -msgstr "Configuration de l'antenne" - -msgid "Any zone" -msgstr "N'importe quelle zone" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Affecte les interfaces…" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Équipements associés" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Authentification" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritaire" - -msgid "Authorization Required" -msgstr "Autorisation requise" - -msgid "Auto Refresh" -msgstr "Rafraîchissement automatique" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Disponible" - -msgid "Available packages" -msgstr "Paquets disponibles" - -msgid "Average:" -msgstr "Moyenne :" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Retour" - -msgid "Back to Overview" -msgstr "Retour à la vue générale" - -msgid "Back to configuration" -msgstr "Retour à la configuration" - -msgid "Back to overview" -msgstr "Retour à la vue générale" - -msgid "Back to scan results" -msgstr "Retour aux résultats de la recherche" - -msgid "Backup" -msgstr "Sauvegarder" - -msgid "Backup / Flash Firmware" -msgstr "Sauvegarde / Mise à jour du micrologiciel" - -msgid "Backup file list" -msgstr "Liste des fichiers de sauvegarde" - -msgid "Bad address specified!" -msgstr "Adresse spécifiée incorrecte!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Voici la liste des fichiers à sauvegarder. Elle est constituée des fichiers " -"de configuration modifiés marqués par opkg, des fichiers de base essentiels, " -"et des motifs de sauvegarde définis par l'utilisateur." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Débit" - -msgid "Bogus NX Domain Override" -msgstr "Contourne les «  NX Domain » bogués" - -msgid "Bridge" -msgstr "Pont" - -msgid "Bridge interfaces" -msgstr "Interfaces en pont" - -msgid "Bridge unit number" -msgstr "Numéro d'unité du pont" - -msgid "Bring up on boot" -msgstr "L'activer au démarrage" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Contrôleur sans fil Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Contrôleur sans fil Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "Temporisé" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Utilisation CPU (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Annuler" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Chaîne" - -msgid "Changes" -msgstr "Changements" - -msgid "Changes applied." -msgstr "Changements appliqués." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Change le mot de passe administrateur pour accéder à l'équipement" - -msgid "Channel" -msgstr "Canal" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Vérification" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Somme de contrôle" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Choisissez la zone de pare-feu à laquelle vous voulez affecter cette " -"interface. Sélectionnez non précisé pour retirer l'interface de la " -"zone associée, ou remplissez le champ créer pour définir une " -"nouvelle zone et y inclure cette interface." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Choisissez le(s) réseau(x) que vous souhaitez attachez a cette interface " -"sans-fil ou remplissez le créer champ pour définir un nouveau " -"réseau. " - -msgid "Cipher" -msgstr "Code de chiffrement" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Cliquer sur \"Construire l'archive\" pour télécharger une archive tar des " -"fichiers de la configuration actuelle." - -msgid "Client" -msgstr "Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "Identifiant client à envoyer dans les requêtes DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Fermer une connexion inactive après le délai donné en secondes, mettre 0 " -"pour garder les connexions" - -msgid "Close list..." -msgstr "Fermer la liste…" - -msgid "Collecting data..." -msgstr "Récupération de données..." - -msgid "Command" -msgstr "Commande" - -msgid "Common Configuration" -msgstr "Configuration commune" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuration" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Les fichiers de configuration seront préservés." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Confirmation" - -msgid "Connect" -msgstr "Se connecter" - -msgid "Connected" -msgstr "Connecté" - -msgid "Connection Limit" -msgstr "Limite de connexion" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Connexions" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "Pays" - -msgid "Country Code" -msgstr "Code pays" - -msgid "Cover the following interface" -msgstr "Couvre l'interface suivante" - -msgid "Cover the following interfaces" -msgstr "Couvre les interfaces suivantes" - -msgid "Create / Assign firewall-zone" -msgstr "Créer / Assigner une zone du pare-feu" - -msgid "Create Interface" -msgstr "Créer une interface" - -msgid "Create a bridge over multiple interfaces" -msgstr "Créer un pont par dessus plusieurs interfaces" - -msgid "Critical" -msgstr "Critique" - -msgid "Cron Log Level" -msgstr "Niveau de journalisation de Cron" - -msgid "Custom Interface" -msgstr "Interface spécifique" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Personnaliser le comportement des DELs si possible." - -msgid "DHCP Server" -msgstr "Serveur DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP et DNS" - -msgid "DHCP client" -msgstr "client DHCP" - -msgid "DHCP-Options" -msgstr "Options DHCP" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "transmissions DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Deboguage" - -msgid "Default %d" -msgstr "%d par défaut" - -msgid "Default gateway" -msgstr "Passerelle par défaut" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "État par défaut" - -msgid "Define a name for this network." -msgstr "Donne un nom à ce réseau." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Définir des options DHCP supplémentaires, par exemple " -"\"6,192.168.2.1,192.168.2.2\" qui publie différents serveurs " -"DNS à ses clients." - -msgid "Delete" -msgstr "Effacer" - -msgid "Delete this network" -msgstr "Supprimer ce réseau" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Description" - -msgid "Design" -msgstr "Apparence" - -msgid "Destination" -msgstr "Destination" - -msgid "Device" -msgstr "Équipement" - -msgid "Device Configuration" -msgstr "Configuration de l'équipement" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnostics" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Répertoire" - -msgid "Disable" -msgstr "Désactiver" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Désactiver DHCP " -"pour cette interface." - -msgid "Disable DNS setup" -msgstr "Désactiver la configuration DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Désactivé" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Jeter les réponses en RFC1918 amont" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "N'afficher que les paquets contenant" - -msgid "Distance Optimization" -msgstr "Optimisation de la distance" - -msgid "Distance to farthest network member in meters." -msgstr "Distance au membre du réseau le plus éloigné, en mètres." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversité" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq est un serveur DHCP combiné à un relais DNS pour les pare-feu NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Ne pas mettre en cache les réponses négatives, par ex. pour des domaines " -"inexistants" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Ne pas transmettre les requêtes qui ne peuvent être résolues par les " -"serveurs de noms publics" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" -"Ne pas transmettre les requêtes de recherche inverse pour les réseaux locaux" - -msgid "Domain required" -msgstr "Domaine nécessaire" - -msgid "Domain whitelist" -msgstr "Liste blanche de domaines" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Ne pas transmettre de requêtes DNS " -"sans nom DNS" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Télécharge et installe le paquet" - -msgid "Download backup" -msgstr "Télécharger la sauvegarde" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Session Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear est un serveur SSH et intègre " -"un serveur SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP dynamique" - -msgid "Dynamic tunnel" -msgstr "Tunnel dynamique" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Alloue dynamiquement des adresses pour les clients du DHCP. Si désactivé, " -"seuls les clients ayant des baux statiques seront gérés." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Méthode EAP" - -msgid "Edit" -msgstr "Éditer" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Éditer cette interface" - -msgid "Edit this network" -msgstr "Éditer ce réseau" - -msgid "Emergency" -msgstr "Urgence" - -msgid "Enable" -msgstr "Activer" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Activer le protocole STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Activer la mise à jour dynamique de l'extrémité du tunnel chez HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Activer la négociation IPv6 sur le lien PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Activer la circulation de très grandes trames (Jumbo)" - -msgid "Enable NTP client" -msgstr "Activer client NTP" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Activer le serveur TFTP" - -msgid "Enable VLAN functionality" -msgstr "Acviter la gestion des VLANs" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Activer l'apprentissage et la péremption" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Activer ce montage" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "Activer cette mémoire d'échange (swap)" - -msgid "Enable/Disable" -msgstr "Activer/Désactiver" - -msgid "Enabled" -msgstr "Activé" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" -"Activer le protocole STP sur " -"ce pont" - -msgid "Encapsulation mode" -msgstr "Mode encapsulé" - -msgid "Encryption" -msgstr "Chiffrement" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Effacement…" - -msgid "Error" -msgstr "Erreur" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Module Ethernet" - -msgid "Ethernet Switch" -msgstr "Commutateur Ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Étendre le nom d'hôte" - -msgid "Expires" -msgstr "Expire" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Délai d'expiration des adresses allouées, le minimum est de 2 minutes " -"(2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Serveur distant de journaux système" - -msgid "External system log server port" -msgstr "Port du serveur distant de journaux système" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Fichier" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nom de fichier d'une image de démarrage publiée aux clients" - -msgid "Filesystem" -msgstr "Système de fichiers" - -msgid "Filter" -msgstr "Filtrer" - -msgid "Filter private" -msgstr "Filtrer les requêtes privées" - -msgid "Filter useless" -msgstr "Filtrer les requêtes inutiles" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Cherche et rejoint un réseau" - -msgid "Find package" -msgstr "Trouver un paquet" - -msgid "Finish" -msgstr "Terminer" - -msgid "Firewall" -msgstr "Pare-feu" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Paramètres du pare-feu" - -msgid "Firewall Status" -msgstr "État du pare-feu" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Version du micrologiciel" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Port source fixe pour les requêtes DNS sortantes" - -msgid "Flash Firmware" -msgstr "Mise à jour du micrologiciel" - -msgid "Flash image..." -msgstr "Écriture de l'image…" - -msgid "Flash new firmware image" -msgstr "Écrire l'image du nouveau micrologiciel" - -msgid "Flash operations" -msgstr "Opérations d'écriture" - -msgid "Flashing..." -msgstr "Écriture…" - -msgid "Force" -msgstr "Forcer" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Forcer CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Force le DHCP sur ce réseau même si un autre serveur est détecté." - -msgid "Force TKIP" -msgstr "Forcer TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forcer TKIP et CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Transmettre le trafic DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Transmettre le trafic de diffusion" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Mode de transmission" - -msgid "Fragmentation Threshold" -msgstr "Seuil de fragmentation" - -msgid "Frame Bursting" -msgstr "Rafale de trames" - -msgid "Free" -msgstr "Libre" - -msgid "Free space" -msgstr "Espace libre" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "Ghz" - -msgid "GPRS only" -msgstr "seulement GPRS" - -msgid "Gateway" -msgstr "Passerelle" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Ports de la passerelle" - -msgid "General Settings" -msgstr "Paramètres généraux" - -msgid "General Setup" -msgstr "Configuration générale" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Construire l'archive" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Contrôleur sans fil générique 802.11%s" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"La confirmation du nouveau mot de passe ne correspond pas, changement " -"annulé !" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Aller à la configuration du mot de passe…" - -msgid "Go to relevant configuration page" -msgstr "Aller à la page de configuration correspondante" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Mot de passe HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Signal (HUP)" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Ici, vous pouvez configurer les aspects basiques de votre routeur comme son " -"nom ou son fuseau horaire." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Vous pouvez copier ici des clés SSH publiques (une par ligne) pour une " -"authentification SSH sur clés publiques." - -msgid "Hide ESSID" -msgstr "Cacher le ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Entrées d'hôtes" - -msgid "Host expiry timeout" -msgstr "Délai d'expiration pour les hôtes" - -msgid "Host-IP or Network" -msgstr "adresse IP ou réseau" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Nom d'hôte" - -msgid "Hostname to send when requesting DHCP" -msgstr "Nom d'hôte à envoyer dans une requête DHCP" - -msgid "Hostnames" -msgstr "Noms d'hôtes" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Adresse IP" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Pare-feu IPv4" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "Adresse IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 et IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Diffusion IPv4" - -msgid "IPv4 gateway" -msgstr "Passerelle IPv4" - -msgid "IPv4 netmask" -msgstr "Masque-réseau IPv4" - -msgid "IPv4 only" -msgstr "IPv4 seulement" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "longueur du préfixe IPv4" - -msgid "IPv4-Address" -msgstr "Adresse IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Pare-feu IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "Adresse IPv6" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Passerelle IPv6" - -msgid "IPv6 only" -msgstr "IPv6 seulement" - -msgid "IPv6 prefix" -msgstr "Préfixe IPv6" - -msgid "IPv6 prefix length" -msgstr "longueur du préfixe IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Adresse IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6 dans IPv4 (RFC 4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6 sur IPv4 (6ème)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6 sur IPv4 (6 vers 4)" - -msgid "Identity" -msgstr "Identité" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Monte le périphérique identifié par cet UUID au lieu d'un nom de " -"périphérique fixe" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Monte le périphérique identifié par cette étiquette au lieu d'un nom de " -"périphérique fixe" - -msgid "If unchecked, no default route is configured" -msgstr "Décoché, aucune route par défaut n'est configurée" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Décoché, les adresses des serveurs DNS publiés sont ignorées" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Si la mémoire physique n'est pas en quantité suffisante, les données " -"inutilisées peuvent être temporairement transférée sur une partition " -"d'échange, relevant la quantité de RAM disponible. Ce processus est lent car " -"la mémoire d'échange ne peut être accédée aux taux de transfert de la RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignorer /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignorer l'interface" - -msgid "Ignore resolve file" -msgstr "Ignorer le fichier de résolution" - -msgid "Image" -msgstr "Image" - -msgid "In" -msgstr "Entrée" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Délai d'inactivité" - -msgid "Inbound:" -msgstr "Intérieur :" - -msgid "Info" -msgstr "Info" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Script d'initialisation" - -msgid "Initscripts" -msgstr "Scripts d'initialisation" - -msgid "Install" -msgstr "Installer" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Installer le paquet %q" - -msgid "Install protocol extensions..." -msgstr "Installation des extensions de protocole…" - -msgid "Installed packages" -msgstr "Paquets installés" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configuration de l'interface" - -msgid "Interface Overview" -msgstr "Vue d'ensemble de l'interface" - -msgid "Interface is reconnecting..." -msgstr "L'interface se reconnecte…" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "L'interface n'est pas présente ou pas encore connectée." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Erreur Serveur Interne" - -msgid "Invalid" -msgstr "Erreur : donnée entrée invalide" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"Identifiant VLAN invalide !Seuls les IDs entre %d et %d sont autorisés." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" -"Identifiant VLAN donné invalide ! Seuls les identifiants uniques sont " -"autorisés" - -msgid "Invalid username and/or password! Please try again." -msgstr "Nom d'utilisateur et/ou mot de passe invalides ! Réessayez !" - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Il semble que vous essayez de programmer votre routeur avec une image qui ne " -"tient pas dans sa mémoire flash, vérifiez s'il vous plait votre fichier-" -"image !" - -msgid "JavaScript required!" -msgstr "Nécessite un Script Java !" - -msgid "Join Network" -msgstr "Rejoindre un réseau" - -msgid "Join Network: Wireless Scan" -msgstr "Rejoindre un réseau : recherche des réseaux sans-fil" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Garder le paramètrage" - -msgid "Kernel Log" -msgstr "Journal du noyau" - -msgid "Kernel Version" -msgstr "Version du noyau" - -msgid "Key" -msgstr "Clé" - -msgid "Key #%d" -msgstr "Clé n° %d" - -msgid "Kill" -msgstr "Tuer" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Serveur L2TP" - -msgid "LCP echo failure threshold" -msgstr "Seuil d'erreur des échos LCP" - -msgid "LCP echo interval" -msgstr "Intervalle entre échos LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Étiquette" - -msgid "Language" -msgstr "Langue" - -msgid "Language and Style" -msgstr "Langue et apparence" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Durée de validité d'un bail" - -msgid "Leasefile" -msgstr "Fichier de baux" - -msgid "Leasetime remaining" -msgstr "Durée de validité" - -msgid "Leave empty to autodetect" -msgstr "Laisser vide pour l'auto-détection" - -msgid "Leave empty to use the current WAN address" -msgstr "Laisser vide pour utiliser l'adresse WAN actuelle" - -msgid "Legend:" -msgstr "Légende :" - -msgid "Limit" -msgstr "Limite" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Lien établi" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Liste des serveurs auquels sont transmis les requêtes DNS" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Liste des domaines où sont permises les réponses de type RFC1918" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" -"Liste des hôtes qui fournissent des résultats avec des « NX domain » bogués" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "Écouter seulement sur l'interface spécifié, sinon sur toutes" - -msgid "Listening port for inbound DNS queries" -msgstr "Port d'écoute des requêtes DNS entrantes" - -msgid "Load" -msgstr "Charger" - -msgid "Load Average" -msgstr "Charge moyenne" - -msgid "Loading" -msgstr "Chargement" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Adresse IPv4 locale" - -msgid "Local IPv6 address" -msgstr "Adresse IPv6 locale" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Démarrage local" - -msgid "Local Time" -msgstr "Heure Locale" - -msgid "Local domain" -msgstr "Domaine local" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Domaine local à préciser. Les noms correspondants à ce domaine ne sont " -"jamais transmis, mais résolus seulement depuis le serveur DHCP ou le fichier " -"Hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Suffixe du domaine local ajouté aux noms du serveur DHCP et du fichier Hosts" - -msgid "Local server" -msgstr "Serveur local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Trouve le nom d'hôte suivant le sous-réseau d'où vient la requête si " -"plusieurs adresses IPs sont possibles" - -msgid "Localise queries" -msgstr "Localiser les requêtes" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Niveau de journalisation" - -msgid "Log queries" -msgstr "Journaliser les requêtes" - -msgid "Logging" -msgstr "Journalisation" - -msgid "Login" -msgstr "Connexion" - -msgid "Logout" -msgstr "Déconnexion" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" -"Adresse allouée la plus basse, spécifiée par un décalage à partir de " -"l'adresse réseau." - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "Adresse MAC" - -msgid "MAC-Address Filter" -msgstr "Filtrage par adresses MAC" - -msgid "MAC-Filter" -msgstr "Filtrage par adresses MAC" - -msgid "MAC-List" -msgstr "Liste des adresses MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Nombre maximum de baux DHCP actifs" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Nombre maximum de requêtes DNS au même moment" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Taille maximum autorisée des paquets UDP EDNS.0" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Délai d'attente maximum que le modem soit prêt" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Nombre maximum d'adresses allouées." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Mémoire" - -msgid "Memory usage (%)" -msgstr "Utilisation Mémoire (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metrique" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Extention de protocole manquante pour le proto %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mode" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Interface Modem" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "Délai max. d'initialisation du modem" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Montage" - -msgid "Mount Point" -msgstr "Point de montage" - -msgid "Mount Points" -msgstr "Point de montage" - -msgid "Mount Points - Mount Entry" -msgstr "Points de montage - élément à monter" - -msgid "Mount Points - Swap Entry" -msgstr "Points de montage - partition d'échange" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Les points de montage définissent l'attachement d'un périphérique au système " -"de fichier" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Options de montage" - -msgid "Mount point" -msgstr "Point de montage" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Systèmes de fichiers montés" - -msgid "Move down" -msgstr "Descendre" - -msgid "Move up" -msgstr "Monter" - -msgid "Multicast address" -msgstr "Adresse multidiffusion" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Serveurs NTP candidats" - -msgid "Name" -msgstr "Nom" - -msgid "Name of the new interface" -msgstr "Nom de la nouvelle interface" - -msgid "Name of the new network" -msgstr "Nom du nouveau réseau" - -msgid "Navigation" -msgstr "Navigation" - -msgid "Netmask" -msgstr "Masque de réseau" - -msgid "Network" -msgstr "Réseau" - -msgid "Network Utilities" -msgstr "Utilitaires réseau" - -msgid "Network boot image" -msgstr "Image de démarrage réseau" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "Réseau sans interfaces." - -msgid "Next »" -msgstr "Prochain »" - -msgid "No DHCP Server configured for this interface" -msgstr "Aucun serveur DHCP configuré sur cette interface" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Aucune chaîne dans cette table" - -msgid "No files found" -msgstr "Aucun fichier trouvé" - -msgid "No information available" -msgstr "Information indisponible" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "Pas de cache négatif" - -msgid "No network configured on this device" -msgstr "Ce périphérique n'a aucune adresse configurée" - -msgid "No network name specified" -msgstr "Aucun nom de réseau donné" - -msgid "No package lists available" -msgstr "Aucune liste de paquets disponible" - -msgid "No password set!" -msgstr "Pas de mot de passe positionné !" - -msgid "No rules in this chain" -msgstr "Aucune règle dans cette chaîne" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Aucune zone attribuée" - -msgid "Noise" -msgstr "Bruit" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Bruit :" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Vide" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Pas trouvé" - -msgid "Not associated" -msgstr "Pas associé" - -msgid "Not connected" -msgstr "Non connecté" - -msgid "Note: Configuration files will be erased." -msgstr "Note : les fichiers de configuration seront effacés." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Note" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Configuration OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "Durée éteinte" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Dans cette page vous pourrez configurer les interfaces réseaux. Vous pouvez " -"bridger différentes interfaces en cochant le champ \"bridger les interfaces" -"\" et en saisissant les noms des interfaces réseau séparées par des espaces. " -"Vous pouvez aussi utiliser la notation VLAN, INTERFACE.VLANNB (ex : eth0.1)." - -msgid "On-State Delay" -msgstr "Durée allumée" - -msgid "One of hostname or mac address must be specified!" -msgstr "Il faut indiquer un nom d'hôte ou une adresse MAC !" - -msgid "One or more fields contain invalid values!" -msgstr "Un ou plusieurs champs contiennent des valeurs incorrectes !" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Un ou plusieurs champs n'ont pas de valeur !" - -msgid "Open list..." -msgstr "Ouvrir la liste…" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Option modifiée" - -msgid "Option removed" -msgstr "Option retirée" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Options" - -msgid "Other:" -msgstr "Autres :" - -msgid "Out" -msgstr "Sortie" - -msgid "Outbound:" -msgstr "Extérieur :" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Modifier l'adresse MAC" - -msgid "Override MTU" -msgstr "Modifier le MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Modifier la passerelle dans les réponses DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Remplacer le masque réseau envoyés aux clients. Il est normalement calculé à " -"partir du sous-réseau géré." - -msgid "Override the table used for internal routes" -msgstr "Modifier la table utilisée pour les routes internes" - -msgid "Overview" -msgstr "Vue d'ensemble" - -msgid "Owner" -msgstr "Propriétaire" - -msgid "PAP/CHAP password" -msgstr "Mot de passe PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Identifiant PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "code PIN" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA Encapsulation" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Nécessite le paquet libiwinfo !" - -msgid "Package lists are older than 24 hours" -msgstr "Les listes de paquets ont plus de 24 heures" - -msgid "Package name" -msgstr "Nom du paquet" - -msgid "Packets" -msgstr "Paquets" - -msgid "Part of zone %q" -msgstr "Fait partie de la zone %q" - -msgid "Password" -msgstr "Mot de passe" - -msgid "Password authentication" -msgstr "Authentification par mot de passe" - -msgid "Password of Private Key" -msgstr "Mot de passe de la clé privée" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Mot de passe changé avec succès !" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Chemin de la CA" - -msgid "Path to Client-Certificate" -msgstr "Chemin du certificat-client" - -msgid "Path to Private Key" -msgstr "Chemin de la clé privée" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Pic :" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Redémarrer" - -msgid "Perform reset" -msgstr "Réinitialiser" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Débit de la puce:" - -msgid "Physical Settings" -msgstr "Paramètres physiques" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pqts." - -msgid "Please enter your username and password." -msgstr "Saisissez votre nom d'utilisateur et mot de passe." - -msgid "Policy" -msgstr "Politique" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Statut du port :" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Suppose que le distant a disparu une fois le nombre donné d'erreurs d'échos " -"LCP ; utiliser 0 pour ignorer ces erreurs" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Empêche la communication directe entre clients" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Continuer" - -msgid "Processes" -msgstr "Processus" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocole" - -msgid "Protocol family" -msgstr "Famille du protocole" - -msgid "Protocol of the new interface" -msgstr "Protocole de la nouvelle interface" - -msgid "Protocol support is not installed" -msgstr "La gestion du protocole n'est pas installée" - -msgid "Provide NTP server" -msgstr "Fournir serveur NTP" - -msgid "Provide new network" -msgstr "Donner un nouveau réseau" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Qualitée" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Seuil RTS/CTS" - -msgid "RX" -msgstr "Reçu" - -msgid "RX Rate" -msgstr "Débit en réception" - -msgid "Radius-Accounting-Port" -msgstr "Port de la comptabilisation Radius" - -msgid "Radius-Accounting-Secret" -msgstr "Secret de la comptabilisation Radius" - -msgid "Radius-Accounting-Server" -msgstr "Serveur de la comptabilisation Radius" - -msgid "Radius-Authentication-Port" -msgstr "Port de l'authentification Radius" - -msgid "Radius-Authentication-Secret" -msgstr "Secret de l'authentification Radius" - -msgid "Radius-Authentication-Server" -msgstr "Serveur de l'authentification Radius" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "Lire /etc/ethers pour configurer le serveur DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Voulez-vous vraiment supprimer ce réseau sans-fil? L'effacement ne peut être " -"annulé!\n" -"Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par ce " -"réseau." - -msgid "Really reset all changes?" -msgstr "Voulez-vous vraiment ré-initialiser toutes les modifications ?" - -msgid "Really switch protocol?" -msgstr "Voulez-vous vraiment changer de protocole ?" - -msgid "Realtime Connections" -msgstr "Connexions temps-réel" - -msgid "Realtime Graphs" -msgstr "Graphiques temps-réel" - -msgid "Realtime Load" -msgstr "Charge temps-réel" - -msgid "Realtime Traffic" -msgstr "Trafic temps-réel" - -msgid "Realtime Wireless" -msgstr "Qualité de réception actuelle" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Protection contre l'attaque « rebind »" - -msgid "Reboot" -msgstr "Redémarrage" - -msgid "Rebooting..." -msgstr "Redémarre…" - -msgid "Reboots the operating system of your device" -msgstr "Redémarrage du système d'exploitation de votre équipement" - -msgid "Receive" -msgstr "Reçoit" - -msgid "Receiver Antenna" -msgstr "Antenne émettrice" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Reconnecter cet interface" - -msgid "References" -msgstr "Références" - -msgid "Relay" -msgstr "Relais" - -msgid "Relay Bridge" -msgstr "Pont-relais" - -msgid "Relay between networks" -msgstr "Relais entre réseaux" - -msgid "Relay bridge" -msgstr "Pont-relais" - -msgid "Remote IPv4 address" -msgstr "Adresse IPv4 distante" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Désinstaller" - -msgid "Repeat scan" -msgstr "Répéter la recherche" - -msgid "Replace entry" -msgstr "Remplacer l'entrée" - -msgid "Replace wireless configuration" -msgstr "Remplacer la configuration sans-fil" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Nécessaire avec certains FAIs, par ex. : Charter avec DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Remise à zéro" - -msgid "Reset Counters" -msgstr "Remise à zéro des compteurs" - -msgid "Reset to defaults" -msgstr "Ré-initialisation" - -msgid "Resolv and Hosts Files" -msgstr "Fichiers Resolv et Hosts" - -msgid "Resolve file" -msgstr "Fichier de résolution des noms" - -msgid "Restart" -msgstr "Redémarrer" - -msgid "Restart Firewall" -msgstr "Redémarrer le pare-feu" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Restaurer" - -msgid "Restore backup" -msgstr "Restaurer une sauvegarde" - -msgid "Reveal/hide password" -msgstr "Montrer/cacher le mot de passe" - -msgid "Revert" -msgstr "Revenir" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Racine" - -msgid "Root directory for files served via TFTP" -msgstr "Répertoire racine des fichiers fournis par TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Mot de passe du routeur" - -msgid "Routes" -msgstr "Routes" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Avec les routes statiques vous pouvez spécifier à travers quelle interface " -"ou passerelle un réseau peut être contacté." - -msgid "Run a filesystem check before mounting the device" -msgstr "" -"Faire un vérification du système de fichiers avant de monter le périphérique" - -msgid "Run filesystem check" -msgstr "Faire une vérification du système de fichiers" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Accès SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Clés SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Sauvegarder" - -msgid "Save & Apply" -msgstr "Sauvegarder et Appliquer" - -msgid "Scan" -msgstr "Scan" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Tâches Régulières" - -msgid "Section added" -msgstr "Section ajoutée" - -msgid "Section removed" -msgstr "Section retirée" - -msgid "See \"mount\" manpage for details" -msgstr "Voir le manuel de « mount » pour les détails" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Envoyer des demandes d'échos LCP à intervalles donnés, en secondes ; utile " -"uniqument associé à un seuil d'erreurs" - -msgid "Separate Clients" -msgstr "Isoler les clients" - -msgid "Server Settings" -msgstr "Paramètres du serveur" - -msgid "Service Name" -msgstr "Nom du service" - -msgid "Service Type" -msgstr "Type du service" - -msgid "Services" -msgstr "Services" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Configurer la synchronisation de l'heure" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "Configurer le serveur DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "Afficher la liste des fichiers de la sauvegarde actuelle" - -msgid "Shutdown this interface" -msgstr "Arrêter cet interface" - -msgid "Signal" -msgstr "Signal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Signal :" - -msgid "Size" -msgstr "Taille" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Passer au suivant" - -msgid "Skip to content" -msgstr "Skip to content" - -msgid "Skip to navigation" -msgstr "Skip to navigation" - -msgid "Slot time" -msgstr "Tranche de temps" - -msgid "Software" -msgstr "Logiciels" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Certains champs sont invalides, ne peut sauvegarder les valeurs !" - -msgid "Sorry, the object you requested was not found." -msgstr "Désolé, l'objet que vous avez demandé n'as pas été trouvé." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Désolé, le serveur à rencontré une erreur inattendue." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Désolé, il n'y a pas de gestion de mise à jour disponible, une nouvelle " -"image du micrologiciel doit être écrite manuellement. Reportez-vous S.V.P. " -"au wiki pour connaître les instructions d'installation spécifiques à votre " -"matériel." - -msgid "Source" -msgstr "Source" - -msgid "Specifies the directory the device is attached to" -msgstr "Indique le répertoire auquel le périphérique est rattaché" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Indique le port d'écoute de cette instance Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Indique le nombre de requêtes ARP ratées au delà duquel les hôtes seront " -"supposés disparus" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "Indique le délai après quoi les hôtes seront supposés disparus" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Spécifiez ici la clé secrète de chiffrage." - -msgid "Start" -msgstr "Démarrer" - -msgid "Start priority" -msgstr "Priorité de démarrage" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Démarrage" - -msgid "Static IPv4 Routes" -msgstr "Routes IPv4 statiques" - -msgid "Static IPv6 Routes" -msgstr "Routes IPv6 statiques" - -msgid "Static Leases" -msgstr "Baux Statiques" - -msgid "Static Routes" -msgstr "Routes statiques" - -msgid "Static address" -msgstr "Adresse statique" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Les baux statiques sont utilisés pour donner des adresses IP fixes et des " -"noms symboliques à des clients DHCP. Il sont également nécessaires pour les " -"interfaces sans configuration dynamique où l'on fournit un bail aux seuls " -"hôtes configurés." - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Arrêter" - -msgid "Strict order" -msgstr "Ordre stricte" - -msgid "Submit" -msgstr "Soumettre" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Élement de partition d'échange" - -msgid "Switch" -msgstr "Commutateur" - -msgid "Switch %q" -msgstr "Commutateur %q" - -msgid "Switch %q (%s)" -msgstr "Commutateur %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Protocole du commutateur" - -msgid "Sync with browser" -msgstr "Synchro avec le navigateur" - -msgid "Synchronizing..." -msgstr "Synchronisation…" - -msgid "System" -msgstr "Système" - -msgid "System Log" -msgstr "Journal système" - -msgid "System Properties" -msgstr "Propriétés système" - -msgid "System log buffer size" -msgstr "Taille du tampon du journal système" - -msgid "TCP:" -msgstr "TCP :" - -msgid "TFTP Settings" -msgstr "Paramètres TFTP" - -msgid "TFTP server root" -msgstr "Racine du serveur TFTP" - -msgid "TX" -msgstr "Transmis" - -msgid "TX Rate" -msgstr "Débit en émission" - -msgid "Table" -msgstr "Table" - -msgid "Target" -msgstr "Cible" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Terminer" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"La section Configuration de l'équipement couvre les paramètres " -"physiques du matériel radio comme le canal, la puissance d'émission ou la " -"sélection de l'antenne, qui sont partagés entre tous les réseaux sans-fil " -"définis (si le matériel radio gère plusieurs réseaux SSID). Les paramètres " -"dépendant de chaque réseau comme le chiffrage ou le mode de fonctionnement " -"sont groupés dans Configuration de l'interface." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Le paquet libiwinfo-lua n'est pas installé. Vous devez l'installer " -"pour une configuration sans-fil fonctionnelle !" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Le préfixe IPv6 attribué par le fournisseur, se termine généralement par " -"::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Les caractères autorisés sont : A-Z, a-z, " -"0-9 et _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "Le périphérique de bloc contenant la partition (ex : /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Le système de fichiers utilisé pour formatter le support de stockage (ex : " -"ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"L'image du micrologiciel a été chargée. Ci-dessous la taille et la somme de " -"contrôle de cette image, comparez-les avec le fichier original pour vous " -"assurer de son intégrité.
    Cliquez sur \"Continuer\" pour lancer la " -"procédure d'écriture." - -msgid "The following changes have been reverted" -msgstr "Les changements suivants ont été annulés" - -msgid "The following rules are currently active on this system." -msgstr "Les règles suivantes sont actuellement actives sur ce système." - -msgid "The given network name is not unique" -msgstr "Le nom de réseau donné n'est pas unique" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Le matériel ne sait pas gérer plusieurs SSID et la configuration existante " -"sera remplacée si vous continuez." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"La longueur du préfixe IPv4 en bits, le reste est utilisé dans les adresses " -"IPv6" - -msgid "The length of the IPv6 prefix in bits" -msgstr "La longueur du préfixe IPv6 en bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Les ports de votre équipement peuvent être configurés pour combiner " -"plusieurs VLANs dans " -"lesquels les machines connectées peuvent dialoguer directement l'une avec " -"l'autre. Les VLANs sont " -"souvent utilisés pour séparer différences sous-réseaux. Bien souvent il y a " -"un port d'uplink pour une connexion vers un réseau plus vaste, comme " -"internet et les autres ports sont réservés au réseau local." - -msgid "The selected protocol needs a device assigned" -msgstr "Le protocole sélectionné nécessite l'attribution d'un périphérique" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Le système est en train d'effacer la partition de configuration et " -"redémarrera tout seul une fois cela fini." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes until you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." - -msgid "There are no active leases." -msgstr "Il n'y a aucun bail actif." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "Il n'y a aucun changement à annuler !" - -msgid "There are no pending changes!" -msgstr "Il n'y a aucun changement en attente !" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Il n'y a aucun périphérique attribué pour l'instant, liez s.v.p. un " -"périphérique réseau dans l'onglet \"Paramètres du matériel\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Ce routeur n'a pas de mot de passe configuré. Veuillez configurer un mot de " -"passe pour l'utilisateur root pour protéger l'accès de votre interface web " -"et activer l'accès par SSH." - -msgid "This IPv4 address of the relay" -msgstr "L'adresse IPv4 du relais" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Voici la liste des motifs de type glob shell utilisés pour sélectionner les " -"fichiers et répertoires à inclure durant la mise à jour système. Les " -"fichiers modifiés dans /etc/config/ et certains autres sont automatiquement " -"conservés." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Voici le contenu de /etc/rc.local. Placez-y vos propres commandes (avant le " -"« exit 0 ») pour qu'ils soient exécutés en fin de démarrage." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" -"Il s'agit de l'adresse de l'extrémité locale attribuée par le fournisseur de " -"tunnels, elle se termine habituellement avec ...:2/64" - -msgid "" -"This is the only DHCP in the local network" -msgstr "C'est le seul serveur DHCP sur le réseau local" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Ceci est le système crontab avec lequel sont définies les tâches récurrentes." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Il s'agit habituellement de l'adresse du plus proche PoP géré par le " -"fournisseur de tunnels" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Cette liste donne une vue d'ensemble des processus en exécution et leur " -"statut." - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Cette page donne une vue d'ensemble des connexions réseaux actuellement " -"actives." - -msgid "This section contains no values yet" -msgstr "Cette section ne contient pas encore de valeur" - -msgid "Time Synchronization" -msgstr "Synchronisation de l'heure" - -msgid "Time Synchronization is not configured yet." -msgstr "La synchronisation de l'heure n'est pas encore configurée." - -msgid "Timezone" -msgstr "Fuseau horaire" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Pour restaurer les fichiers de configuration, vous pouvez charger ici une " -"archive de sauvegarde construite précédemment. Pour réinitialiser le " -"micrologiciel dans son état initial, cliquer sur \"Réinitialiser\" (possible " -"seulement avec les images de type squashfs)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Total disponible" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Trafic" - -msgid "Transfer" -msgstr "Transfert" - -msgid "Transmission Rate" -msgstr "Débit d'émission" - -msgid "Transmit" -msgstr "Transmet" - -msgid "Transmit Power" -msgstr "Puissance d'émission" - -msgid "Transmitter Antenna" -msgstr "Antenne émettrice" - -msgid "Trigger" -msgstr "Déclenchement" - -msgid "Trigger Mode" -msgstr "Mode de déclenchement" - -msgid "Tunnel ID" -msgstr "ID du tunnel" - -msgid "Tunnel Interface" -msgstr "Interface du tunnel" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Puissance d'émission" - -msgid "Type" -msgstr "Type" - -msgid "UDP:" -msgstr "UDP :" - -msgid "UMTS only" -msgstr "seulement UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Périphérique USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "Impossible d'envoyer" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Inconnu" - -msgid "Unknown Error, password not changed!" -msgstr "Erreur inconnue, mot de passe inchangé !" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "non-géré" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Changements non appliqués" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Type de protocole non pris en charge." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Mettre les listes à jour" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Envoyer ici une image compatible avec le système de mise à jour pour " -"remplacer le micrologiciel actuel. Cochez \"Garder la configuration\" pour " -"maintenir la configuration actuelle (nécessite une image de micrologiciel " -"compatible)." - -msgid "Upload archive..." -msgstr "Envoi de l'archive…" - -msgid "Uploaded File" -msgstr "Fichier Uploadé" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Utiliser /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Utiliser la passerelle DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Utiliser les serveurs DNS publiés par le distant" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Utiliser les codes-pays ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "Utiliser le MTU sur l'interface du tunnel" - -msgid "Use TTL on tunnel interface" -msgstr "Utiliser le TTL sur l'interface du tunnel" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Utiliser une marque de diffusion" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Utiliser des serveurs DNS spécifiques" - -msgid "Use default gateway" -msgstr "Utiliser la passerelle par défaut" - -msgid "Use gateway metric" -msgstr "Utiliser la métrique de la passerelle" - -msgid "Use routing table" -msgstr "Utiliser la table de routage" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Utiliser le bouton Ajouter pour créer un nouveau bail. " -"L'adresse MAC identifie l'hôte, l'adresse IPv4 décrit " -"l'adresse fixe à utiliser et le nom d'hôte sera le nom symbolique " -"attribué à l'hôte qui fait la demande." - -msgid "Used" -msgstr "Utilisé" - -msgid "Used Key Slot" -msgstr "Clé utilisée" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Nom d'utilisateur" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs sur %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs sur %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Serveur VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Classe de fournisseur à envoyer dans les requêtes DHCP" - -msgid "Verify" -msgstr "Vérifier" - -msgid "Version" -msgstr "Version" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Système ouvert WEP" - -msgid "WEP Shared Key" -msgstr "Clé partagée WEP" - -msgid "WEP passphrase" -msgstr "Mot de passe WEP" - -msgid "WMM Mode" -msgstr "Mode WMM" - -msgid "WPA passphrase" -msgstr "Mot de passe WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"Le chiffrage WPA nécessite l'installation du paquet wpa_supplicant (en mode " -"client) ou hostapd (en mode Point d'accès ou Ad-hoc)." - -msgid "Waiting for changes to be applied..." -msgstr "En attente de l'application des changements..." - -msgid "Waiting for command to complete..." -msgstr "En attente de la fin de la commande..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Attention" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Sans-fil" - -msgid "Wireless Adapter" -msgstr "Module Wi-Fi" - -msgid "Wireless Network" -msgstr "Réseau sans-fil" - -msgid "Wireless Overview" -msgstr "Présentation des réseaux sans-fil" - -msgid "Wireless Security" -msgstr "Sécurité des réseaux sans-fil" - -msgid "Wireless is disabled" -msgstr "Le Wi-Fi est désactivé" - -msgid "Wireless is not associated" -msgstr "Le Wi-Fi est non associé" - -msgid "Wireless is restarting..." -msgstr "Le Wi-Fi est ré-initialisé…" - -msgid "Wireless network is disabled" -msgstr "Le réseau Wi-Fi est désactivé" - -msgid "Wireless network is enabled" -msgstr "Le réseau Wi-Fi est activé" - -msgid "Write received DNS requests to syslog" -msgstr "Écrire les requêtes DNS reçues dans syslog" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Vous pouvez ici activer ou désactiver les scripts d'initialisation " -"installés. Les changements seront pris en compte après un redémarrage.
    Attention: Si vous désactivez des scripts essentiels comme \"réseau" -"\", votre équipement pourrait ne plus être accessible !" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Vous devez activer JavaScript dans votre navigateur pour que LuCI fonctionne " -"correctement." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "n'importe lequel" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "ponté" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "créer:" - -msgid "creates a bridge over specified interface(s)" -msgstr "créer un bridge entre plusieurs interfaces" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "désactiver" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "expiré" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "fichier dans lequel les baux DHCP seront stockés" - -msgid "forward" -msgstr "transfert" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "half-duplex" - -msgid "hidden" -msgstr "cacher" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "si la destination est un réseau" - -msgid "input" -msgstr "entrée" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "fichier de résolution local" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "non" - -msgid "no link" -msgstr "pas de lien" - -msgid "none" -msgstr "aucun" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "Arrêté" - -msgid "on" -msgstr "Actif" - -msgid "open" -msgstr "ouvrir" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "routé" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "marqué" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "inconnu" - -msgid "unlimited" -msgstr "non limité" - -msgid "unspecified" -msgstr "non précisé" - -msgid "unspecified -or- create:" -msgstr "non précisé -ou- créer :" - -msgid "untagged" -msgstr "non marqué" - -msgid "yes" -msgstr "oui" - -msgid "« Back" -msgstr "« Retour" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Activer ce réseau" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Contrôleur sans fil Hermes 802.11b" - -#~ msgid "Interface is shutting down..." -#~ msgstr "L'interface s'arrête…" - -#~ msgid "Interface reconnected" -#~ msgstr "Interface reconnectée" - -#~ msgid "Interface shut down" -#~ msgstr "Interface arrêtée" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Contrôleur sans fil Prism2/2.5/3 802.11b" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "Contrôleur sans fil RaLink 802.11%s" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "Voulez-vous vraiment arrêter l'interface %s ?\n" -#~ "Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par " -#~ "cette interface." - -#~ msgid "Reconnecting interface" -#~ msgstr "Reconnecte cet interface" - -#~ msgid "Shutdown this network" -#~ msgstr "Arrêter ce réseau" - -#~ msgid "Wireless restarted" -#~ msgstr "Wi-Fi ré-initialisé" - -#~ msgid "Wireless shut down" -#~ msgstr "Wi-Fi arrêté" - -#~ msgid "DHCP Leases" -#~ msgstr "Baux DHCP" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "Bails DHCPv6" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "Voulez-vous vraiment supprimer cette interface? L'effacement ne peut être " -#~ "annulé!\n" -#~ "Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par " -#~ "cette interface." - -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "Voulez-vous vraiment arrêter l'interface %s ?\n" -#~ "Vous pourriez perdre l'accès à l'équipement si vous y êtes connecté par " -#~ "cette interface." - -#~ msgid "Sort" -#~ msgstr "Trier" - -#~ msgid "help" -#~ msgstr "aide" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "État IPv4 du WAN" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "État IPv6 du WAN" - -#~ msgid "Apply" -#~ msgstr "Appliquer" - -#~ msgid "Applying changes" -#~ msgstr "Changements en cours" - -#~ msgid "Configuration applied." -#~ msgstr "Configuration appliquée." - -#~ msgid "Save & Apply" -#~ msgstr "Sauvegarder et appliquer" - -#~ msgid "The following changes have been committed" -#~ msgstr "Les changements suivants ont été appliqués" - -#~ msgid "There are no pending changes to apply!" -#~ msgstr "Il n'y a aucun changement en attente d'être appliqués !" - -#~ msgid "Action" -#~ msgstr "Action" - -#~ msgid "Buttons" -#~ msgstr "Boutons" - -#~ msgid "Handler" -#~ msgstr "Gestionnaire" - -#~ msgid "Maximum hold time" -#~ msgstr "Temps de maintien maximum" - -#~ msgid "Minimum hold time" -#~ msgstr "Temps de maintien mimimum" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "Chemin du programme exécutable gérant les évènements liés au bouton" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "Indique l'état du bouton à gérer" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "" -#~ "Cette page permet la configuration d'actions spécifiques des boutons" - -#~ msgid "Leasetime" -#~ msgstr "Durée du bail" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "statique" - -#~ msgid "AR Support" -#~ msgstr "Gestion du mode AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Contrôleur sans fil Atheros 802.11%s " - -#~ msgid "Background Scan" -#~ msgstr "Recherche en arrière-plan" - -#~ msgid "Compression" -#~ msgstr "Compression" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Désactiver l'émission périodique de balises wifi (« HW-Beacon »)" - -#~ msgid "Do not send probe responses" -#~ msgstr "Ne pas envoyer de réponses de test" - -#~ msgid "Fast Frames" -#~ msgstr "Trames rapides" - -#~ msgid "Maximum Rate" -#~ msgstr "Débit maximum" - -#~ msgid "Minimum Rate" -#~ msgstr "Débit minimum" - -#~ msgid "Multicast Rate" -#~ msgstr "Débit multidiffusion" - -#~ msgid "Outdoor Channels" -#~ msgstr "Canaux en extérieur" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domaine de certification" - -#~ msgid "Separate WDS" -#~ msgstr "WDS séparé" - -#~ msgid "Static WDS" -#~ msgstr "WDS statique" - -#~ msgid "Turbo Mode" -#~ msgstr "Mode Turbo" - -#~ msgid "XR Support" -#~ msgstr "Gestion du mode XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Un réseau supplémentaire sera créé si vous laissé ceci décoché." - -#~ msgid "Join Network: Settings" -#~ msgstr "Rejoindre un réseau : paramètres" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Le port %d n'est pas marqué dans plusieurs VLANs !" - -#~ msgid "VLAN Interface" -#~ msgstr "Interface du VLAN" diff --git a/luci-base/po/he/base.po b/luci-base/po/he/base.po deleted file mode 100644 index 6a5be78fe..000000000 --- a/luci-base/po/he/base.po +++ /dev/null @@ -1,3944 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-02-02 14:32+0200\n" -"Last-Translator: oranav \n" -"Language-Team: none\n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "" - -msgid "(%s available)" -msgstr "(%s פנוי)" - -msgid "(empty)" -msgstr "(ריק)" - -msgid "(no interfaces attached)" -msgstr "(אין ממשק מצורף)" - -msgid "-- Additional Field --" -msgstr "-- שדה נוסף --" - -msgid "-- Please choose --" -msgstr "-- נא לבחור --" - -msgid "-- custom --" -msgstr "-- מותאם אישית --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "עומס במשך דקה:" - -msgid "15 Minute Load:" -msgstr "עומס במשך רבע שעה:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "עומס במשך 5 דקות:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "DNS query port" -msgstr "DNS יציאת שאילתא" - -msgid "DNS server port" -msgstr "DNS יציאת שרת" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "כתובות IPv4" - -msgid "IPv4-Gateway" -msgstr "" - -msgid "IPv4-Netmask" -msgstr "" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"כתובת או רשת (CIDR) IPv6" - -msgid "IPv6-Gateway" -msgstr "" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "הגדרות LED" - -msgid "LED Name" -msgstr "שם LED" - -msgid "MAC-Address" -msgstr "כתובת-MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -#, fuzzy -msgid "ARP retry threshold" -msgstr "סף נסיונות של ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -#, fuzzy -msgid "ATM Bridges" -msgstr "גשרי ATM" - -#, fuzzy -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "מזהה ערוצים ווירטואליים של ATM" - -#, fuzzy -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "מזהה נתיבים ווירטואליים של ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "מס' התקן של ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -#, fuzzy -msgid "Access Concentrator" -msgstr "מרכז גישות" - -msgid "Access Point" -msgstr "נקודת גישה" - -msgid "Actions" -msgstr "פעולות" - -msgid "Active IPv4-Routes" -msgstr "" - -msgid "Active IPv6-Routes" -msgstr "" - -msgid "Active Connections" -msgstr "חיבורים פעילים" - -msgid "Active DHCP Leases" -msgstr "הרשאות DHCP פעילות" - -msgid "Active DHCPv6 Leases" -msgstr "הרשאות DHCPv6 פעילות" - -# צריך אימות של מישהו שמבין יותר במושגים האלו אם צריך בכלל לתרגם את זה או להשאיר כמו שזה -#, fuzzy -msgid "Ad-Hoc" -msgstr "אד-הוק" - -msgid "Add" -msgstr "הוסף" - -#, fuzzy -msgid "Add local domain suffix to names served from hosts files" -msgstr "הוסף דומיין מקומי לשמות המוגשים מהקבצים של המארח" - -msgid "Add new interface..." -msgstr "הוסף ממשק חדש..." - -msgid "Additional Hosts files" -msgstr "קבצי מארח נוספים" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "כתובת" - -msgid "Address to access local relay bridge" -msgstr "" - -#, fuzzy -msgid "Administration" -msgstr "מנהלה" - -msgid "Advanced Settings" -msgstr "הגדרות מתקדמות" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -#, fuzzy -msgid "Alert" -msgstr "אזעקה" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -#, fuzzy -msgid "Allow all except listed" -msgstr "אפשר הכל חוץ מהרשומים" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "אפשר רשומים בלבד" - -#, fuzzy -msgid "Allow localhost" -msgstr "אפשר localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "אנטנה 1" - -msgid "Antenna 2" -msgstr "אנטנה 2" - -msgid "Antenna Configuration" -msgstr "הגדרות אנטנה" - -# אזור? -#, fuzzy -msgid "Any zone" -msgstr "כל תחום" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "הקצה ממשקים" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "תחנות קשורות" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "אימות" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "מוסמך" - -msgid "Authorization Required" -msgstr "דרוש אימות" - -msgid "Auto Refresh" -msgstr "רענון אוטומטי" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "זמין" - -msgid "Available packages" -msgstr "חבילות זמינות" - -msgid "Average:" -msgstr "ממוצע:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "חזרה" - -msgid "Back to Overview" -msgstr "חזרה לסקירה" - -msgid "Back to configuration" -msgstr "חזרה להגדרות" - -msgid "Back to overview" -msgstr "חזרה לסקירה" - -msgid "Back to scan results" -msgstr "חזרה לתוצאות סריקה" - -msgid "Backup" -msgstr "גיבוי" - -msgid "Backup / Flash Firmware" -msgstr "גיבוי / קושחת פלאש" - -msgid "Backup file list" -msgstr "גיבוי רשימת קבצים" - -msgid "Bad address specified!" -msgstr "פורטה כתובת לא תקינה" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"למטה יש את הרשימה הסופית של קבצים לגיבוי. היא מורכבת ע\"י קבצי הגדרות ששונו, " -"המסומנים ב opkg ׁOpen PacKaGe Managementׂ, קבצי בסיס חיוניים ותבניות הגיבוי " -"המוגדרות ע\"י המשתמש." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "גשר" - -msgid "Bridge interfaces" -msgstr "ממשקי גשר" - -msgid "Bridge unit number" -msgstr "מס' יח' גשר" - -#, fuzzy -msgid "Bring up on boot" -msgstr "הבא באיתחול" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "שלט אלחוטי Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "שלט אלחוטי Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "שימוש מעבד (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "בטל" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "שרשרת" - -msgid "Changes" -msgstr "שינויים" - -msgid "Changes applied." -msgstr "השינויים הוחלו" - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "משנה את סיסמת המנהל לגישה למכשיר" - -msgid "Channel" -msgstr "ערוץ" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "לבדוק" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "סגור חיבורים לא פעילים אחרי מספר השניות שהוגדר, הזן 0 על-מנת לא לסגור" - -msgid "Close list..." -msgstr "סגור רשימה..." - -msgid "Collecting data..." -msgstr "אוסף מידע..." - -msgid "Command" -msgstr "פקודה" - -msgid "Common Configuration" -msgstr "הגדרות נפוצות" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "הגדרות" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "קבצי ההגדרות ישמרו." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "אישור" - -msgid "Connect" -msgstr "התחבר" - -msgid "Connected" -msgstr "מחובר" - -msgid "Connection Limit" -msgstr "מגבלת חיבורים" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "חיבורים" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "מדינה" - -msgid "Country Code" -msgstr "קוד מדינה" - -msgid "Cover the following interface" -msgstr "כסה את הממשק הבא" - -msgid "Cover the following interfaces" -msgstr "כסה את הממשקים הבאים" - -msgid "Create / Assign firewall-zone" -msgstr "צור / הקצה תחום-חומת אש" - -msgid "Create Interface" -msgstr "צור ממשק" - -msgid "Create a bridge over multiple interfaces" -msgstr "צור גשר בין מספר ממשקים" - -msgid "Critical" -msgstr "קריטי" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "ממשק מותאם אישית" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"מתאים את הגדרות ה-LED-ים במכשיר " -"(אם אפשרי)." - -msgid "DHCP Server" -msgstr "שרת DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP ו- DNS" - -msgid "DHCP client" -msgstr "לקוח DHCP" - -msgid "DHCP-Options" -msgstr "אפשרויות-DHCP" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "הגדר שם לרשת זו" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"הגדר אפשרויות DHCP נוספות, למשל \"6,192.168.2.1,192.168.2.2\" " -"אשר מציגות שרתי DNS שונים ללקוח" - -msgid "Delete" -msgstr "למחוק" - -msgid "Delete this network" -msgstr "מחק רשת זו" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "תיאור" - -msgid "Design" -msgstr "עיצוב" - -msgid "Destination" -msgstr "יעד" - -msgid "Device" -msgstr "מכשיר" - -msgid "Device Configuration" -msgstr "הגדרות מכשיר" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "אבחון" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "מציג רק חבילות המכילות" - -msgid "Distance Optimization" -msgstr "" - -msgid "Distance to farthest network member in meters." -msgstr "מרחק לנק' הרשת הרחוקה ביותר במטרים" - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "גיוון" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "הורד והתקן חבילות" - -msgid "Download backup" -msgstr "הורד גיבוי" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear מאפשר גישת SSH רשתית ושרת SCP מובנה" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "DHCP דינאמי" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "ערוך" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "ערוך ממשק זה" - -msgid "Edit this network" -msgstr "ערוך רשת זו" - -msgid "Emergency" -msgstr "מצב חרום" - -msgid "Enable" -msgstr "אפשר" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "אפשר STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "אפשר שרת TFTP" - -msgid "Enable VLAN functionality" -msgstr "אפשר תפקוד VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "אפשר למידה והזדקנות" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "" - -msgid "Enabled" -msgstr "אפשר" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "הצפנה" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "מוחק..." - -msgid "Error" -msgstr "שגיאה" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "" - -msgid "Ethernet Switch" -msgstr "" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Filter" -msgstr "" - -msgid "Filter private" -msgstr "" - -msgid "Filter useless" -msgstr "" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "" - -msgid "Firewall Status" -msgstr "" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hide ESSID" -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "כתבות IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 ו-IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "" - -msgid "Ignore resolve file" -msgstr "" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "" - -msgid "Install" -msgstr "" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "מספר VLAN שגוי! רק ערכים בין %d לבין %d הם חוקיים." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "שם משתמש ו/או סיסמה שגויים! אנא נסה שנית." - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "עומס" - -msgid "Load Average" -msgstr "עומס ממוצע" - -msgid "Loading" -msgstr "טוען" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "כתובת IPv4 מקומית" - -msgid "Local IPv6 address" -msgstr "כתובת IPv6 מקומית" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "שרת מקומי" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "" - -msgid "Logout" -msgstr "" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "" - -msgid "MAC-Filter" -msgstr "" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory usage (%)" -msgstr "" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "Name" -msgstr "שם" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "אין רשימת חבילות זמינה" - -msgid "No password set!" -msgstr "לא הוגדרה סיסמה!" - -msgid "No rules in this chain" -msgstr "" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "לא מחובר" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "OPKG-Configuration" -msgstr "" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "ישנם שדות המכילים ערכים בלתי חוקיים!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Owner" -msgstr "" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "שם החבילה" - -msgid "Packets" -msgstr "" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Password authentication" -msgstr "" - -msgid "Password of Private Key" -msgstr "" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "נתיב למפתח הפרטי" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "אנא הזן את שם המשתמש והסיסמה שלך:" - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "קצב קליטה" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "References" -msgstr "" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "" - -msgid "Reset Counters" -msgstr "" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "" - -msgid "Restart Firewall" -msgstr "" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "שחזור" - -msgid "Restore backup" -msgstr "" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "הרץ בדיקת מערכת קבצים" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Save & Apply" -msgstr "" - -msgid "Scan" -msgstr "" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "שירותים" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "סנכרון זמן" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "דלג אל התוכן" - -msgid "Skip to navigation" -msgstr "דלג אל הניווט" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "תוכנה" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "חלק מהשדות אינם תקינים, אין אפשרות לשמור את הערכים!" - -msgid "Sorry, the object you requested was not found." -msgstr "סליחה, אך האובייקט שביקשת אינו נמצא." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "סליחה, השרת נתקל בשגיאה לא צפויה." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"סליחה, אין תמיכה בעדכון מערכת, ולכן קושחה חדשה חייבת להיצרב ידנית. אנא פנה " -"אל ה-wiki של OpenWrt/LEDE עבור הוראות ספציפיות למכשיר שלך." - -msgid "Source" -msgstr "מקור" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start priority" -msgstr "" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "אתחול" - -msgid "Static IPv4 Routes" -msgstr "ניתובי IPv4 סטטיים" - -msgid "Static IPv6 Routes" -msgstr "ניתובי IPv6 סטטיים" - -msgid "Static Leases" -msgstr "הקצאות סטטיות" - -msgid "Static Routes" -msgstr "ניתובים סטטיים" - -msgid "Static address" -msgstr "כתובת סטטית" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"הקצאות סטטיות נועדו להקצות כתובות IP קבועות ואת שם הרשת שלהן ללקוחות DHCP. " -"הן נחוצות גם עבור הגדרות ממשק שאינן דינאמיות, בהן מטופלות רק ישויות בעלות " -"הקצאה מתאימה." - -msgid "Status" -msgstr "מצב" - -msgid "Stop" -msgstr "עצור" - -msgid "Strict order" -msgstr "" - -msgid "Submit" -msgstr "שלח" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "" - -msgid "System Log" -msgstr "" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "הגדרות TFTP" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "שידור" - -msgid "TX Rate" -msgstr "קצב שידור" - -msgid "Table" -msgstr "טבלה" - -msgid "Target" -msgstr "יעד" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "החוקים הבאים מאופשרים כרגע במערכת זו." - -msgid "The given network name is not unique" -msgstr "השם שניתן לרשת איננו ייחודי" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "החומרה אינה תומכת בריבוי SSID ולכן ההגדרות הנוכחיות יוחלפו אם תמשיך." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "רשימה זו מציגה סקירה של תהליכי המערכת הרצים כרגע ואת מצבם." - -msgid "This page gives an overview over currently active network connections." -msgstr "דף זה מציג סקירה של חיבורי הרשת הפעילים כרגע." - -msgid "This section contains no values yet" -msgstr "אזור זה עדיין לא מכיל ערכים." - -msgid "Time Synchronization" -msgstr "סנכרון זמן" - -msgid "Time Synchronization is not configured yet." -msgstr "סנכרון זמן עדיין לא הוגדר." - -msgid "Timezone" -msgstr "אזור זמן" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"על מנת לשחזר את קבצי ההגדרות, באפשרותך להעלות ארכיון גיבוי שנוצר לפני כן." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "סה\"כ פנוי" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "תעבורה" - -msgid "Transfer" -msgstr "העברה" - -msgid "Transmission Rate" -msgstr "קצב שידור" - -msgid "Transmit" -msgstr "שידור" - -msgid "Transmit Power" -msgstr "עוצמת שידור" - -msgid "Transmitter Antenna" -msgstr "אנטנת שידור" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "עוצמת שידור" - -msgid "Type" -msgstr "" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Use /etc/ethers" -msgstr "" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "השתמש בדגל broadcast" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "השתמש בשרתי DNS מותאמים אישית" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "השתמש בטבלת ניתוב" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "שם משתמש" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "שרת VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "גרסה" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "סיסמת WEP" - -msgid "WMM Mode" -msgstr "" - -msgid "WPA passphrase" -msgstr "סיסמת WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "אזהרה" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "" - -msgid "Wireless Network" -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Wireless Security" -msgstr "" - -msgid "Wireless is disabled" -msgstr "" - -msgid "Wireless is not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "רשת אלחוטית מנוטרלת" - -msgid "Wireless network is enabled" -msgstr "רשת אלחוטית מאופשרת" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "אתה חייב להפעיל את JavaScript בדפדפן שלך; אחרת, LuCI לא יפעל כראוי." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "כלשהו" - -msgid "auto" -msgstr "אוטומטי" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "בטל" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "קדימה" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "אם היעד הוא רשת" - -msgid "input" -msgstr "קלט" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "לא" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "ללא" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "כבוי" - -msgid "on" -msgstr "פועל" - -msgid "open" -msgstr "" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "מנותב" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "מתויג" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "ללא הגבלה" - -msgid "unspecified" -msgstr "לא מוגדר" - -msgid "unspecified -or- create:" -msgstr "לא מוגדר -או- יצר" - -msgid "untagged" -msgstr "לא מתויג" - -msgid "yes" -msgstr "כן" - -msgid "« Back" -msgstr "<< אחורה" - -#~ msgid "Activate this network" -#~ msgstr "הפעל רשת זו" - -#~ msgid "DHCP Leases" -#~ msgstr "הרשאות DHCP" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "הרשאות DHCPv6" - -#, fuzzy -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "האם למחוק את הרשת האלחוטית הזו? המחיקה אינה ניתנת לביטול!\n" -#~ "ייתכן ותאבד גישה לנתב הזה אם אתה מחובר דרך השרת הזו." - -#~ msgid "Sort" -#~ msgstr "מיין" - -#~ msgid "help" -#~ msgstr "עזרה" - -#~ msgid "Apply" -#~ msgstr "החל" - -#~ msgid "Applying changes" -#~ msgstr "מחיל הגדרות" - -#~ msgid "Configuration applied." -#~ msgstr "הגדרות הוחלו" - -#~ msgid "Action" -#~ msgstr "פעולה" - -#~ msgid "Buttons" -#~ msgstr "כפתורים" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "דף זה מאפשר להגדיר פעולות מיוחדות עבור הלחצנים." - -#~ msgid "AR Support" -#~ msgstr "תמיכת AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "שלט אלחוטי Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "סריקת רקע" - -#~ msgid "Compression" -#~ msgstr "דחיסה" - -#~ msgid "Static WDS" -#~ msgstr "WDS סטטי" - -#, fuzzy -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "רשת נוספת תווצר אם תשאיר את זה לא מסומן" - -#~ msgid "CPU" -#~ msgstr "מעבד" diff --git a/luci-base/po/hu/base.po b/luci-base/po/hu/base.po deleted file mode 100644 index 4b66806a8..000000000 --- a/luci-base/po/hu/base.po +++ /dev/null @@ -1,4238 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-01-31 09:59+0200\n" -"Last-Translator: Gabor \n" -"Language-Team: none\n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d perces ablak, %d másodperces intervallum)" - -msgid "(%s available)" -msgstr "(%s elérhető)" - -msgid "(empty)" -msgstr "(üres)" - -msgid "(no interfaces attached)" -msgstr "(nincs csatalkoztatott interfész)" - -msgid "-- Additional Field --" -msgstr "-- További mező --" - -msgid "-- Please choose --" -msgstr "-- Kérem válasszon --" - -msgid "-- custom --" -msgstr "-- egyéni --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Terhelés (utolsó 1 perc):" - -msgid "15 Minute Load:" -msgstr "Terhelés (utolsó 15 perc):" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Terhelés (utolsó 5 perc):" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS lekérdezési port" - -msgid "DNS server port" -msgstr "DNS szerver port" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS szerverek a resolv fájl " -"sorrendjében" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-cím" - -msgid "IPv4-Gateway" -msgstr "IPv4-útválasztó" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-cím, vagy hálózat " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-útválasztó" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED konfiguráció" - -msgid "LED Name" -msgstr "LED Név" - -msgid "MAC-Address" -msgstr "MAC-cím" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. DHCP bérlés" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. EDNS0 csomagméret" - -msgid "Max. concurrent queries" -msgstr "Max. párhuzamos lekérdezés" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP újrapróbálkozási küszöbérték" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM Hidak" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM Virtuális Csatorna Azonosító (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM Virtuális Út Azonosító (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Az ATM hidak az AAL5-be ágyazott ethernet kapcsolatokat mint virtuális Linux " -"hálózati interfész mutatják, mely így DHCP-vel vagy PPP-vel összekapcsolva " -"használható a szolgáltatói hálózatba történő betárcsázáshoz." - -msgid "ATM device number" -msgstr "ATM eszközszám" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Elérési központ" - -msgid "Access Point" -msgstr "Hozzáférési pont" - -msgid "Actions" -msgstr "Műveletek" - -msgid "Active IPv4-Routes" -msgstr "" -"Aktív IPv4 útvonalak" - -msgid "Active IPv6-Routes" -msgstr "" -"Aktív IPv6 útvonalak" - -msgid "Active Connections" -msgstr "Aktív kapcsolatok" - -msgid "Active DHCP Leases" -msgstr "Aktív DHCP bérletek" - -msgid "Active DHCPv6 Leases" -msgstr "Aktív DHCPv6 bérletek" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Hozzáadás" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Helyi tartomány utótag hozzáadása a hosts fájlokból kiszolgált nevekhez" - -msgid "Add new interface..." -msgstr "Új interfész hozzáadása..." - -msgid "Additional Hosts files" -msgstr "További 'hosts' fájlok" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Cím" - -msgid "Address to access local relay bridge" -msgstr "Helyi közvetítő híd elérési címe" - -msgid "Administration" -msgstr "Adminisztráció" - -msgid "Advanced Settings" -msgstr "Haladó beállítások" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Riasztás" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"SSH jelszó hitelesítés engedélyezése" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Összes engedélyezése a felsoroltakon kívül" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Csak a felsoroltak engedélyezése" - -msgid "Allow localhost" -msgstr "Lolcalhost engedélyezése" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Távoli hostok csatlakozásának engedélyezése a helyi SSH továbbított " -"portokhoz." - -msgid "Allow root logins with password" -msgstr "root jelszavas bejelentkezésének engedélyezése" - -msgid "Allow the root user to login with password" -msgstr "Engedélyezi a root felhasználó jelszavas bejelentkezését" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"A 127.0.0.0/8-as tartományba eső DNS válaszok engedélyezése (pl. RBL " -"szervizek)" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "1-es antenna" - -msgid "Antenna 2" -msgstr "2-es antenna" - -msgid "Antenna Configuration" -msgstr "Antenna beállítások" - -msgid "Any zone" -msgstr "Bármelyik zóna" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Interfészek összekapcsolása..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Kapcsolódó kliensek" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Hitelesítés" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Hiteles" - -msgid "Authorization Required" -msgstr "Hitelesítés szükséges" - -msgid "Auto Refresh" -msgstr "Automatikus frissítés" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Elérhető" - -msgid "Available packages" -msgstr "Elérhető csomagok" - -msgid "Average:" -msgstr "Átlag:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Vissza" - -msgid "Back to Overview" -msgstr "Vissza az áttekintéshez" - -msgid "Back to configuration" -msgstr "Vissza a beállításokhoz" - -msgid "Back to overview" -msgstr "Vissza az áttekintéshez" - -msgid "Back to scan results" -msgstr "Vissza a felderítési eredményekhez" - -msgid "Backup" -msgstr "Mentés" - -msgid "Backup / Flash Firmware" -msgstr "Mentés / Firmware frissítés" - -msgid "Backup file list" -msgstr "Mentési fájl lista" - -msgid "Bad address specified!" -msgstr "Hibás címet adott meg!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Alább található a biztonsági mentésbe kerülő fájlok listája. A lista az opkg " -"által megjelölt módosított konfigurációs fájlokból, fontos alapvető " -"fájlokból valamint a felhasználó által megadott mintáknak megfelelő " -"fájlokból áll." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitráta" - -msgid "Bogus NX Domain Override" -msgstr "Hamis NX tartomány felülbírálása" - -msgid "Bridge" -msgstr "Híd" - -msgid "Bridge interfaces" -msgstr "Híd interfészek" - -msgid "Bridge unit number" -msgstr "Híd eszközszám" - -msgid "Bring up on boot" -msgstr "Hozza fel a rendszer indításakor" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s vezeték-nélküli vezérlő" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 vezeték-nélküli vezérlő" - -msgid "Buffered" -msgstr "Átmeneti tárban van" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Processzor használat (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Mégsem" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Lánc" - -msgid "Changes" -msgstr "Módosítások" - -msgid "Changes applied." -msgstr "A módosítások alkalmazva." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "" -"Itt módosíthatja az eszköz eléréséhez szükséges adminisztrátori jelszót" - -msgid "Channel" -msgstr "Csatorna" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Ellenőrzés" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Ellenőrző összeg" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Válassza ki a tűzfal zónát amit hozzá akar rendelni ehhez az interfészhez. " -"Válassza a nincs megadva elemet az interfésznek a hozzárendelt " -"zónából történő eltávolításához, vagy töltse ki az új mezőt új zóna " -"megadásához és csatlakoztassa az interfészt ahhoz." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Válassza ki azokat a hálózatokat, amelyeket csatlakoztatni akar ehhez a " -"vezetéknélküli interfészhez, vagy töltse ki az új mezőt egy új " -"hálózat definiálásához." - -msgid "Cipher" -msgstr "Titkosító" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Kattintson az \"Archívum készítése\" gombra a jelenlegi konfiguráció tar " -"archívumként történő letöltéséhez." - -msgid "Client" -msgstr "Ügyfél" - -msgid "Client ID to send when requesting DHCP" -msgstr "DHCP kérés során küldendő kliens azonosító" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Inaktív kapcsolatok bezárása a megadott másodpercek után, használjon 0-t " -"állandó kapcsolathoz" - -msgid "Close list..." -msgstr "Lista bezárása..." - -msgid "Collecting data..." -msgstr "Adatok összegyűjtése..." - -msgid "Command" -msgstr "Parancs" - -msgid "Common Configuration" -msgstr "Álatános beállítás" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Beállítás" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "A konfigurációs fájlok megmaradnak." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Megerősítés" - -msgid "Connect" -msgstr "Kapcsolódás" - -msgid "Connected" -msgstr "Kapcsolódva" - -msgid "Connection Limit" -msgstr "Kapcsolati korlát" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Kapcsolatok" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "Ország" - -msgid "Country Code" -msgstr "Országkód" - -msgid "Cover the following interface" -msgstr "A következő interfészt tartalmazza" - -msgid "Cover the following interfaces" -msgstr "A következő interfészeket tartalmazza" - -msgid "Create / Assign firewall-zone" -msgstr "Tűzfal zóna készítés / hozzárendelés" - -msgid "Create Interface" -msgstr "Új interfész" - -msgid "Create a bridge over multiple interfaces" -msgstr "Híd létrehozása több interfész között" - -msgid "Critical" -msgstr "Kritikus" - -msgid "Cron Log Level" -msgstr "Cron naplózási szint" - -msgid "Custom Interface" -msgstr "Egyéni interfész" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Az eszköz LED-jei működésének " -"testreszabása." - -msgid "DHCP Server" -msgstr "DHCP kiszolgáló" - -msgid "DHCP and DNS" -msgstr "DHCP és DNS" - -msgid "DHCP client" -msgstr "DHCP ügyfél" - -msgid "DHCP-Options" -msgstr "DHCP beállítások" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNS továbbítások" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Hibakeresés" - -msgid "Default %d" -msgstr "Alapértelmezés %d" - -msgid "Default gateway" -msgstr "Alapértelmezett átjáró" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Alapértelmezett állapot" - -msgid "Define a name for this network." -msgstr "Adja meg a hálózat nevét." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Adjon meg további DHCP opciókat, például \"6,192.168.2.1,192.168.2.2\", mely különböző DNS kiszolgálókat hirdet az ügyfelek részére." - -msgid "Delete" -msgstr "Törlés" - -msgid "Delete this network" -msgstr "Hálózat törlése" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Leírás" - -msgid "Design" -msgstr "Megjelenés" - -msgid "Destination" -msgstr "Cél" - -msgid "Device" -msgstr "Eszköz" - -msgid "Device Configuration" -msgstr "Eszköz beállítások" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnosztika" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Könyvtár" - -msgid "Disable" -msgstr "Letiltás" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"DHCP tiltása ezen " -"az interfészen." - -msgid "Disable DNS setup" -msgstr "DNS beállítás letiltása" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Letiltva" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Beérkező RFC1918 DHCP válaszok elvetése. " - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "Csak azon csomagok megjelenítése, amelyek tartalmazzák" - -msgid "Distance Optimization" -msgstr "Távolság optimalizáció" - -msgid "Distance to farthest network member in meters." -msgstr "A hálózat legtávolabbi tagjának távolsága méterben." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diverzitás" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"A Dnsmasq egy kombinált DHCP-kiszolgáló és DNS-" -"továbbító NAT tűzfalak " -"számára" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Ne gyorsítótárazza a negatív válaszokat, pl. nem létező domain-ok esetén" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Ne továbbítsa a publikus név szerverek által nem megválaszolható kéréseket" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Ne továbbítson fordított keresési kéréseket a helyi hálózathoz" - -msgid "Domain required" -msgstr "Tartomány szükséges" - -msgid "Domain whitelist" -msgstr "Tartomány fehérlista" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Ne továbbítsa a DNS-név nélküli " -"DNS-kéréseket " - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Csomag letöltése és telepítése" - -msgid "Download backup" -msgstr "Biztonsági mentés letöltése" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear példány" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"A Dropbear a hálózaton SSH hozzáférést " -"tesz lehetővé, valamint integrált SCP " -"szolgáltatást nyújt." - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Dinamikus DHCP" - -msgid "Dynamic tunnel" -msgstr "Dinamikus alagút" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Az ügyfelek számára kiosztott DHCP címek dinamikus lefoglalása. Letiltása " -"esetén csak a statikus DHCP bérlettel rendelkező kliensek lesznek " -"kiszolgálva." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP metódus" - -msgid "Edit" -msgstr "Szerkesztés" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Interfész szerkesztése" - -msgid "Edit this network" -msgstr "Hálózat szerkesztése" - -msgid "Emergency" -msgstr "Vészhelyzet" - -msgid "Enable" -msgstr "Engedélyezés" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "STP engedélyezése" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "HE.net dinamikus végpont frissítésének engedélyezése" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "IPv6 egyeztetés engedélyezése a PPP linken" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Óriás keretek átengedésének engedélyezése" - -msgid "Enable NTP client" -msgstr "NTP-kliens engedélyezése" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "TFTP kiszolgáló engedélyezése" - -msgid "Enable VLAN functionality" -msgstr "VLAN funkció engedélyezése" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Tanulás és aging engedélyezése" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "A csatolás engedélyezése" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "A lapozó terület engedélyezése" - -msgid "Enable/Disable" -msgstr "Engedélyezés/Letiltás" - -msgid "Enabled" -msgstr "Engedélyezve" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "A Spanning Tree prokoll engedélyezése erre a hídra" - -msgid "Encapsulation mode" -msgstr "Beágyazási mód" - -msgid "Encryption" -msgstr "Titkosítás" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Törlés..." - -msgid "Error" -msgstr "Hiba" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet adapter" - -msgid "Ethernet Switch" -msgstr "Ethernet switch" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Gépek kibontása" - -msgid "Expires" -msgstr "Lejárat" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "A bérelt címek lejárati ideje, a minimális érték 2 perc." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Külső rendszernapló kiszolgáló" - -msgid "External system log server port" -msgstr "Külső rendszernapló kiszolgáló port" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Fájl" - -msgid "Filename of the boot image advertised to clients" -msgstr "A kliensek részére közzétett betöltö kép fájlneve" - -msgid "Filesystem" -msgstr "Fájlrendszer" - -msgid "Filter" -msgstr "Szűrő" - -msgid "Filter private" -msgstr "Privát kérések szűrése" - -msgid "Filter useless" -msgstr "Használhahatlan kérések szűrése" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Hálózatok keresése és csatlakozás" - -msgid "Find package" -msgstr "Csomag keresése" - -msgid "Finish" -msgstr "Befejezés" - -msgid "Firewall" -msgstr "Tűzfal" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Tűzfal Beállítások" - -msgid "Firewall Status" -msgstr "Tűzfal Állapot" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Tűzfal verzió" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Rögzített forrás port a kimenő DNS kérésekhez" - -msgid "Flash Firmware" -msgstr "Firmware flash-elés" - -msgid "Flash image..." -msgstr "Flash image..." - -msgid "Flash new firmware image" -msgstr "Új firmware image flash-elése" - -msgid "Flash operations" -msgstr "Flash műveletek" - -msgid "Flashing..." -msgstr "Flash-elés..." - -msgid "Force" -msgstr "Kényszerítés" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "CCMP (AES) kényszerítése" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"DHCP kényszerítése ezen a hálózaton még akkor is ha van másik szerver " -"észlelve." - -msgid "Force TKIP" -msgstr "TKIP kényszerítése" - -msgid "Force TKIP and CCMP (AES)" -msgstr "TKIP és CCMP (AES) kényszerítése" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "DHCP forgalom továbbítás" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Broadcast forgalom továbbítás" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Továbbítás módja" - -msgid "Fragmentation Threshold" -msgstr "Töredezettségi küszöb" - -msgid "Frame Bursting" -msgstr "Keretfűzés" - -msgid "Free" -msgstr "Szabad" - -msgid "Free space" -msgstr "Szabad hely" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Csak GPRS" - -msgid "Gateway" -msgstr "Átjáró" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Átjáró portok" - -msgid "General Settings" -msgstr "Általános beállítások" - -msgid "General Setup" -msgstr "Általános beállítások" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Archívum készítése" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Általános 802.11%s vezeték-nélküli vezérlő" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "A megadott jelszavak nem egyeznek, a jelszó nem lett megváltoztatva!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Ugrás a jelszó beállításhoz..." - -msgid "Go to relevant configuration page" -msgstr "Ugrás a tárgyhoz tartozó beállításokhoz" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "HE.net jelszó" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Befejezés" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Itt állíthatja be az eszköz alapvető tulajdonságait, mint például a gépnév " -"vagy az időzóna." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Nyilvános kulcs alapú SSH azonosításhoz itt adhat meg nyilvános SSH " -"kulcsokat (soronként egyet)." - -msgid "Hide ESSID" -msgstr "ESSID elrejtése" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Host bejegyzések" - -msgid "Host expiry timeout" -msgstr "Host lejárati idő" - -msgid "Host-IP or Network" -msgstr "Host-IP vagy hálózat" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Gépnév" - -msgid "Hostname to send when requesting DHCP" -msgstr "DHCP kérés során küldendő gépnév" - -msgid "Hostnames" -msgstr "Gépnevek" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP cím" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 tűzfal" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "IPv4 cím" - -msgid "IPv4 and IPv6" -msgstr "IPv4 és IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "IPv4 broadcast" - -msgid "IPv4 gateway" -msgstr "IPv4 átjáró" - -msgid "IPv4 netmask" -msgstr "IPv4 hálózati maszk" - -msgid "IPv4 only" -msgstr "csak IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "IPv4 prefix hossza" - -msgid "IPv4-Address" -msgstr "IPv4-cím" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 tűzfal" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "IPv6 cím" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6 átjáró" - -msgid "IPv6 only" -msgstr "csak IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6 előtag" - -msgid "IPv6 prefix length" -msgstr "IPv6 prefix hossz" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-cím" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6 IPv4-ben (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6 IPv4 felett (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6 IPv4 felett (6to4)" - -msgid "Identity" -msgstr "Identitás" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Megadás esetén az eszköz csomópont helyett UUID alapján történő csatolása" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Megadás esetén az eszköz csomópont helyett címke alapján történő csatolása" - -msgid "If unchecked, no default route is configured" -msgstr "Ha nincs kiválasztva, akkor nincs alapértelmezett útvonal beállítva" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" -"Ha nincs kiválasztva, akkor a hirdetett DNS kiszolgáló címeket nem veszi " -"figyelembe" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Ha a fizikai memória túl kevés a nem használt adatok ideiglenesen áttehetők " -"egy swap-eszközre mely így nagyobb mennyiségű használható RAM-ot eredményez. Az adatok áttétele egy " -"nagyon lassú folyamat mivel a swap-eszköz nem érhető el akkora sebességgel " -"mint a RAM." - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "Interfész figyelmen kívül hagyása" - -msgid "Ignore resolve file" -msgstr "A resolve fájl figyelmen kívül hagyása" - -msgid "Image" -msgstr "Image" - -msgid "In" -msgstr "Be" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Inaktivitási időtúllépés" - -msgid "Inbound:" -msgstr "Bejövő" - -msgid "Info" -msgstr "Információk" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Indítási állomány" - -msgid "Initscripts" -msgstr "Indítási állományok" - -msgid "Install" -msgstr "Telepítés" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "%q csomag telepítése" - -msgid "Install protocol extensions..." -msgstr "Protokoll kiterjesztések telepítése..." - -msgid "Installed packages" -msgstr "Telepített csomagok" - -msgid "Interface" -msgstr "Interfész" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Interfész beállítások" - -msgid "Interface Overview" -msgstr "Interfész áttekintés" - -msgid "Interface is reconnecting..." -msgstr "Interfész újracsatlakoztatása..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Az interfész nincs jelen, vagy még nincs csatlakoztatva." - -msgid "Interfaces" -msgstr "Interfészek" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Belső szerverhiba" - -msgid "Invalid" -msgstr "Érvénytelen" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"A megadott VLAN azonosító érvénytelen. Az azonosítónak %d és %d közé kell " -"esnie." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" -"A megadott VLAN azonosító érvénytelen! Minden VLAN-hoz egyedi azonosító kell." - -msgid "Invalid username and/or password! Please try again." -msgstr "Érvénytelen felhasználói név és/vagy jelszó! Kérem próbálja újra!" - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Úgy tűnik, hogy a flash-elendő kép-file nem fér el a Flash-memóriába. Kérem " -"ellenőrizze a kép fájlt!" - -msgid "JavaScript required!" -msgstr "JavaScript szükséges!" - -msgid "Join Network" -msgstr "Csatlakozás a hálózathoz" - -msgid "Join Network: Wireless Scan" -msgstr "Csatlakozás a hálózathoz: vezetéknélküli hálózatok keresése" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Beállítások megtartása" - -msgid "Kernel Log" -msgstr "Kernel napló" - -msgid "Kernel Version" -msgstr "Kernel verzió" - -msgid "Key" -msgstr "Kulcs" - -msgid "Key #%d" -msgstr "Kulcs #%d" - -msgid "Kill" -msgstr "Kilövés" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP szerver" - -msgid "LCP echo failure threshold" -msgstr "LCP echo hibaküszöb" - -msgid "LCP echo interval" -msgstr "LCP Echo időtartam" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Címke" - -msgid "Language" -msgstr "Nyelv" - -msgid "Language and Style" -msgstr "Nyelv és megjelenés" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Bérlet érvényességi ideje" - -msgid "Leasefile" -msgstr "Bérlet fájl" - -msgid "Leasetime remaining" -msgstr "A bérletből hátralévő idő" - -msgid "Leave empty to autodetect" -msgstr "Automatikus észleléshez hagyja üresen" - -msgid "Leave empty to use the current WAN address" -msgstr "A jelenlegi WAN cím használatához hagyja üresen" - -msgid "Legend:" -msgstr "Jelmagyarázat:" - -msgid "Limit" -msgstr "Korlát" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Kapcsolat létrehozva" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"DNS szerverek listája, ahová a " -"kérések továbbításra kerülnek" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Domain-ok listája, melyeknél az RFC1918 válaszok megengedettek" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "A hamis NX tartomány eredményeket szolgáltató gépek listája" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Csak a megadott interfészen hallgat, vagy az összesen, amennyiben nem adja " -"meg" - -msgid "Listening port for inbound DNS queries" -msgstr "Szerver port a beérkező DNS kérések számára" - -msgid "Load" -msgstr "Terhelés" - -msgid "Load Average" -msgstr "Átlagos terhelés" - -msgid "Loading" -msgstr "Betöltés" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Helyi IPv4 cím" - -msgid "Local IPv6 address" -msgstr "Helyi IPv6 cím" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Helyi indítóscript" - -msgid "Local Time" -msgstr "Helyi idő" - -msgid "Local domain" -msgstr "Helyi tartomány" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Helyi tartomány meghatározása. Az ezzel a tartománnyal egyező nevek soha " -"nincsenek továbbítva és csak DHCP-n vagy host fájlok által kerülnek " -"feloldásra" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"A helyi tartomány utótag csatolása a DHCP nevekhez és hosts fájl " -"bejegyzésekhez" - -msgid "Local server" -msgstr "Helyi kiszolgáló" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Gépnév lokalizációja a lekérdező alhálózattól függően, ha több IP cím is " -"elérhető" - -msgid "Localise queries" -msgstr "Lekérdezések lokalizációja" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Napló kimeneti szintje" - -msgid "Log queries" -msgstr "Kérések naplózása" - -msgid "Logging" -msgstr "Naplózás" - -msgid "Login" -msgstr "Bejelentkezés" - -msgid "Logout" -msgstr "Kijelentkezés" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "A legalacsonyabb bérleti címnek az interfész címétől való távolsága" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-cím" - -msgid "MAC-Address Filter" -msgstr "MAC-cím szűrő" - -msgid "MAC-Filter" -msgstr "MAC-szűrő" - -msgid "MAC-List" -msgstr "MAC-lista" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Aktív DHCP bérletek maximális száma" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Párhuzamos DNS kérések maximális száma" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "EDNS.0 UDP csomagok maximális mérete" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Maximális várakozási idő a modem kész állapotára (másodpercben)" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "DHCP címek maximális száma" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Memória" - -msgid "Memory usage (%)" -msgstr "Memória használat (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metrika" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Hiányzó protokoll kiterjesztés a %q progokoll számára" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mód" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Modemeszköz" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "Modem inicializálás időtúllépés" - -msgid "Monitor" -msgstr "Ellenőrzés" - -msgid "Mount Entry" -msgstr "Csatolási bejegyzés" - -msgid "Mount Point" -msgstr "Csatolási pont" - -msgid "Mount Points" -msgstr "Csatolási pontok" - -msgid "Mount Points - Mount Entry" -msgstr "Csatolási pontok - Csatolási bejegyzés" - -msgid "Mount Points - Swap Entry" -msgstr "Csatolási pontok - Lapozóterület bejegyzés" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"A csatolási pontok határozzák meg, hogy egy memória eszköz hová lesz " -"csatlakoztatva a fájlendszeren belül " - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Csatolási beállítások" - -msgid "Mount point" -msgstr "Csatolási pont" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Csatolt fájlrendszerek" - -msgid "Move down" -msgstr "Mozgatás lefelé" - -msgid "Move up" -msgstr "Mozgatás felfelé" - -msgid "Multicast address" -msgstr "Multicast cím" - -msgid "NAS ID" -msgstr "NAS azonosító" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Kijelölt NTP kiszolgálók" - -msgid "Name" -msgstr "Név" - -msgid "Name of the new interface" -msgstr "Az új interfész neve" - -msgid "Name of the new network" -msgstr "Az új hálózat neve" - -msgid "Navigation" -msgstr "Navigáció" - -msgid "Netmask" -msgstr "Hálózati maszk" - -msgid "Network" -msgstr "Hálózat" - -msgid "Network Utilities" -msgstr "Hálózati eszközök" - -msgid "Network boot image" -msgstr "Hálózati rendszertöltő lemezkép" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "Interfészhez nem rendelt hálózat" - -msgid "Next »" -msgstr "Következő »" - -msgid "No DHCP Server configured for this interface" -msgstr "Ehhez az interfészhez nincs DHCP kiszolgáló beállítva" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Ez a tábla nem tartalmaz láncokat." - -msgid "No files found" -msgstr "Nem találhatók fájlok" - -msgid "No information available" -msgstr "Nincs elérhető információ" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "Nincs negatív gyorsítótár" - -msgid "No network configured on this device" -msgstr "Ehhez az eszközhöz nincs hálózat beállítva" - -msgid "No network name specified" -msgstr "Nincs megadva hálózatnév" - -msgid "No package lists available" -msgstr "Csomaglisták nem állnak rendelkezésre" - -msgid "No password set!" -msgstr "Nincs jelszó!" - -msgid "No rules in this chain" -msgstr "Ez a lánc nem tartalmaz szabályokat" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Nincs hozzárendelt zóna" - -msgid "Noise" -msgstr "Zaj" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Zaj:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Nincs" - -msgid "Normal" -msgstr "Normál" - -msgid "Not Found" -msgstr "Nem található" - -msgid "Not associated" -msgstr "Nincs hozzárendelve" - -msgid "Not connected" -msgstr "Nincs kapcsolódva" - -msgid "Note: Configuration files will be erased." -msgstr "Megjegyzés: konfigurációs fájlok törölve lesznek." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Megjegyzés" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "OPKG-Beállítások" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "Kikapcsolt állapot késleltetés" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Ezen az oldalon a hálózati interfészeket állíthatja be. Több interfész " -"között híd hozható létre a \"híd interfész\" mező bejelölésével és több " -"hálózati interfész nevének szóközzel történő elválasztásával. Lehetőség van " -"VLAN jelölés " -"INTERFÉSZ.VLANSZÁM használatára is, pl. eth0.1)." - -msgid "On-State Delay" -msgstr "Bekapcsolt állapot késleltetés" - -msgid "One of hostname or mac address must be specified!" -msgstr "Legalább gépnevet vagy MAC-címet meg kell adni!" - -msgid "One or more fields contain invalid values!" -msgstr "Egy vagy több mező érvénytelen adatot tartalmaz!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Egy vagy több kötelezően kitöltendő mező üres!" - -msgid "Open list..." -msgstr "Lista megnyitása..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Beállítás módosítva" - -msgid "Option removed" -msgstr "Beállítás eltávolítva" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Lehetőségek" - -msgid "Other:" -msgstr "Egyéb:" - -msgid "Out" -msgstr "Ki" - -msgid "Outbound:" -msgstr "Kimenő:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "MAC cím felülbírálása" - -msgid "Override MTU" -msgstr "MTU felülbíráslás" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Átjáró felülbírálása a DHCP válaszokban" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Az ügyfelek részére küldött hálózati masz felülbírálása. Ez alapesetben a " -"kiszolgált alhálózat alapján kerül meghatározásra." - -msgid "Override the table used for internal routes" -msgstr "A belső útvonalakhoz használt tábla felülbírálása" - -msgid "Overview" -msgstr "Áttekintés" - -msgid "Owner" -msgstr "Tulajdonos" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP jelszó" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP felhasználói név" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA beágyazás" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "A libiwinfo csomag szükséges!" - -msgid "Package lists are older than 24 hours" -msgstr "A csomag listák 24 óránál régebbiek" - -msgid "Package name" -msgstr "Csomagnév" - -msgid "Packets" -msgstr "Csomagok" - -msgid "Part of zone %q" -msgstr "A %q zóna része" - -msgid "Password" -msgstr "Jelszó" - -msgid "Password authentication" -msgstr "Jelszó hitelesítés" - -msgid "Password of Private Key" -msgstr "A privát kulcsh jelszava" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "A jelszó megváltoztatása sikeres!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "CA tanúsítvány elérési útja" - -msgid "Path to Client-Certificate" -msgstr "Kliens tanúsítvány elérési útja" - -msgid "Path to Private Key" -msgstr "A privát kulcs elérési útja" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Csúcs:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Újraindítás végrehajtása" - -msgid "Perform reset" -msgstr "Visszaállítás végrehajtása" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Phy sebesség:" - -msgid "Physical Settings" -msgstr "Fizikai beállítások" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "csom." - -msgid "Please enter your username and password." -msgstr "Adja meg a felhasználónevét és a jelszavát." - -msgid "Policy" -msgstr "Szabály" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Port állapot:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"A peer halottnak tekintése a megadott számú LCP echo hibák után. Használjon " -"0-t a hibák figyelmen kívül hagyásához." - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Ügyfél-ügyfél közötti kommunikáció megakadályozása" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Folytatás" - -msgid "Processes" -msgstr "Folyamatok" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Protocol family" -msgstr "Protokoll család" - -msgid "Protocol of the new interface" -msgstr "Az új interfész protokollja" - -msgid "Protocol support is not installed" -msgstr "Protokoll támogatás nincs telepítve" - -msgid "Provide NTP server" -msgstr "NTP kiszolgáló" - -msgid "Provide new network" -msgstr "Új hálózat nyújtása" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Ál Ad-hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Minőség" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS küszöbérték" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "RX sebesség" - -msgid "Radius-Accounting-Port" -msgstr "Radius-Naplózási-Port" - -msgid "Radius-Accounting-Secret" -msgstr "Radius-Naplózás-Kulcs" - -msgid "Radius-Accounting-Server" -msgstr "Radius-Naplózás-Kiszolgáló" - -msgid "Radius-Authentication-Port" -msgstr "Radius-Hitelesítés-Port" - -msgid "Radius-Authentication-Secret" -msgstr "Radius-Hitelesítés-Kulcs" - -msgid "Radius-Authentication-Server" -msgstr "Radius-Hitelesítés-Kiszolgáló" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Az /etc/ethers fájl olvasása a DHCP kiszolgáló beállításához" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Biztosan törli ezt a vezetéknélküli hálózatot? A törlés nem visszavonható!\n" -"Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen a hálózaton " -"keresztül kapcsolódik." - -msgid "Really reset all changes?" -msgstr "Biztos, hogy visszavonja az összes módosítást?" - -msgid "Really switch protocol?" -msgstr "Biztos, hogy cserélni szeretné a protokollt?" - -msgid "Realtime Connections" -msgstr "Valósidejű kapcsolatok" - -msgid "Realtime Graphs" -msgstr "Valósidejű grafikonok" - -msgid "Realtime Load" -msgstr "Valósidejű terhelés" - -msgid "Realtime Traffic" -msgstr "Valósidejű forgalom" - -msgid "Realtime Wireless" -msgstr "Valósidejű vezetéknélküli adatok" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Rebind elleni védelem" - -msgid "Reboot" -msgstr "Újraindítás" - -msgid "Rebooting..." -msgstr "Újraindítás..." - -msgid "Reboots the operating system of your device" -msgstr "Újraindítja az eszköz operációs rendszerét" - -msgid "Receive" -msgstr "Fogadás" - -msgid "Receiver Antenna" -msgstr "Vevő antenna" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Csatlakoztassa újra az interfészt" - -msgid "References" -msgstr "Hivatkozások" - -msgid "Relay" -msgstr "Átjátszás" - -msgid "Relay Bridge" -msgstr "Átjátszó híd" - -msgid "Relay between networks" -msgstr "Átjátszás hálózatok között" - -msgid "Relay bridge" -msgstr "Átjátszó híd" - -msgid "Remote IPv4 address" -msgstr "Távoli IPv4 cím" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Eltávolítás" - -msgid "Repeat scan" -msgstr "Felderítés ismétlése" - -msgid "Replace entry" -msgstr "Bejegyés lecserélése" - -msgid "Replace wireless configuration" -msgstr "Vezetéknélküli beállítások lecserélése" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" -"Szükséges bizonyos internetszolgáltatók esetén, pl. Charter 'DOCSIS 3'-al" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Visszaállítás" - -msgid "Reset Counters" -msgstr "Számlálók nullázása" - -msgid "Reset to defaults" -msgstr "Alapértelmezések visszaállítása" - -msgid "Resolv and Hosts Files" -msgstr "Resolv és hosts fájlok" - -msgid "Resolve file" -msgstr "Resolv fájl" - -msgid "Restart" -msgstr "Újraindítás" - -msgid "Restart Firewall" -msgstr "Tűzfal újraindítása" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Visszaállítás" - -msgid "Restore backup" -msgstr "Biztonsági mentés visszaállítása" - -msgid "Reveal/hide password" -msgstr "Jelszó mutatása/elrejtése" - -msgid "Revert" -msgstr "Visszavonás" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Gyökérkönyvtár" - -msgid "Root directory for files served via TFTP" -msgstr "TFTP-n keresztül megosztott fájlok gyökérkönyvtára" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Router jelszó" - -msgid "Routes" -msgstr "Útvonalak" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Az útvonalak határozzák meg, hogy bizonyos gépek illetve hálózatok melyik " -"interfészen keresztül érhetők el." - -msgid "Run a filesystem check before mounting the device" -msgstr "Fájlrendszer ellenőrzés futtatása az eszköz csatolása előtt" - -msgid "Run filesystem check" -msgstr "Fájlrendszer ellenőrzés futtatása" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "SSH hozzáférés" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "SSH kulcsok" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Mentés" - -msgid "Save & Apply" -msgstr "Mentés & Alkalmazás" - -msgid "Scan" -msgstr "Felderítés" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Ütemezett feladatok" - -msgid "Section added" -msgstr "Szakasz hozzáadva" - -msgid "Section removed" -msgstr "Szakasz eltávolítva" - -msgid "See \"mount\" manpage for details" -msgstr "Részletekért lásd a 'mount' man oldalát" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"LCP echo kérések küldése a másodpercben megadott időközönként, csak a " -"hibaküszöbbel együtt van hatása." - -msgid "Separate Clients" -msgstr "Kliensek szétválasztása" - -msgid "Server Settings" -msgstr "Kiszolgáló beállításai" - -msgid "Service Name" -msgstr "Szolgáltatás neve" - -msgid "Service Type" -msgstr "Szolgáltatás típusa" - -msgid "Services" -msgstr "Szolgáltatások" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Idő szinkronizálás beállítása" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "DHCP kiszolgáló beállítása" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "Mentendő fájlok aktuális listájának megjelenítése" - -msgid "Shutdown this interface" -msgstr "Interfész leállítása" - -msgid "Signal" -msgstr "Jel" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Jel:" - -msgid "Size" -msgstr "Méret" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Ugrás" - -msgid "Skip to content" -msgstr "Ugrás a tartalomhoz" - -msgid "Skip to navigation" -msgstr "Ugrás a navigációhoz" - -msgid "Slot time" -msgstr "Időrés" - -msgid "Software" -msgstr "Szoftver" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Néhán mező érvénytelen, az értékek nem menthetők!" - -msgid "Sorry, the object you requested was not found." -msgstr "Sajnálom, a kért objektum nem található." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Sajnálom, a szerver váratlan hibát észlelt." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Sajnáljuk, a 'sysupgrade' támogatás nem elérhető, az új firmware fájl " -"telepítését manuálisan kell elvégezni. Az eszközhöz tartozó telepítési " -"utasításokért keresse fel az wiki-t." - -msgid "Source" -msgstr "Forrás" - -msgid "Specifies the directory the device is attached to" -msgstr "Megadja az eszköz csatlakozási könyvtárát." - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Megadja a Dropbear példány portját" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Megadja a maximális sikertelen ARP kérések számát, amik után a host nem " -"elérhetőnek tekinthető" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Megadja a másodpercek számát, amik után a host nem elérhetőnek tekinthető" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Itt adja meg a titkosító kulcsot." - -msgid "Start" -msgstr "Indítás" - -msgid "Start priority" -msgstr "Indítás prioritása" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Rendszerindítás" - -msgid "Static IPv4 Routes" -msgstr "Statikus IPv4 útvonalak" - -msgid "Static IPv6 Routes" -msgstr "Statikus IPv6 útvonalak" - -msgid "Static Leases" -msgstr "Statikus bérletek" - -msgid "Static Routes" -msgstr "Statikus útvonalak" - -msgid "Static address" -msgstr "Statikus cím" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"A statikus bérletekkel a DHCP kliensekhez fix IP-címet és hostnevet " -"rendelhet. Olyan nem dinamikus interfész konfigurációk esetén is " -"szükségesek, ahol a csak a megfelelő bérlettel rendelkező hosztok kerülnek " -"kiszolgálásra." - -msgid "Status" -msgstr "Állapot" - -msgid "Stop" -msgstr "Leállítás" - -msgid "Strict order" -msgstr "Kötött sorrend" - -msgid "Submit" -msgstr "Elküldés" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Lapozóterület" - -msgid "Switch" -msgstr "Kapcsoló" - -msgid "Switch %q" -msgstr "Kapcsoló %q" - -msgid "Switch %q (%s)" -msgstr "Kapcsoló %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Protokoll csere" - -msgid "Sync with browser" -msgstr "Szinkronizálás a böngészővel" - -msgid "Synchronizing..." -msgstr "Szinkronizálás..." - -msgid "System" -msgstr "Rendszer" - -msgid "System Log" -msgstr "Rendszernapló" - -msgid "System Properties" -msgstr "Rendszer tulajdonságok" - -msgid "System log buffer size" -msgstr "Rendszer napló puffer méret" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP beállítások" - -msgid "TFTP server root" -msgstr "TFTP szerver gyökér könyvtár" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "TX sebesség" - -msgid "Table" -msgstr "Tábla" - -msgid "Target" -msgstr "Cél" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Megszakítás" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Az Eszköz beállítások szakasz a rádió hardver fizikai beállításait, " -"úgymint csatorna, adóteljesítmény vagy antenna választás teszi lehetővé, " -"amelyen az összes definiált vezeték nélküli hálózat (ha a rádió hardver " -"multi-SSID képes) osztozik. A hálózatonkénti beállítások, mint az " -"titkosítás, mód az Interfész beállítások alá vannak csoportosítva." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"A libiwinfo-lua nincs telepítve. A vezetéknélküli beállítás " -"működéséhez ezt az összetevőt telepítnei kell." - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"A szolgáltatóhoz rendelt IPv6 előtag, általában így végződik: ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"A következő karakterek használhatók: A-Z, a-z, " -"0-9 and _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"A memória vagy partíció eszköz fájlja (pl. " -"/dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"A memória formázásához használt fájlrendszer típusa (pl. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Az image feltöltve. Alább található a fájl ellenőrző összege és mérete, " -"hasonlítsa össze az eredeti fájllal a feltöltött adatok sértetlenségének " -"ellenőrzéséhez.
    Kattintson az alábbi \"Folytatás\" gombra a flash-elési " -"eljárás elindításához." - -msgid "The following changes have been reverted" -msgstr "A következő módosítások lettek visszavonva" - -msgid "The following rules are currently active on this system." -msgstr "Jelenleg a következő szabályok aktívak a rendszeren." - -msgid "The given network name is not unique" -msgstr "A megadott hálózati név már létezik" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"A hardver nem képes többszörös SSID kezelésre ezért a meglévő beállítások " -"elvesznek ha folytatja." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"Az IPv4 előtag hossza bitekben, a maradék az IPv6 címekben használatos." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Az IPv6 előtag hossza bitekben" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Az eszközön található hálózati portok kombinálhatók több VLAN-ba, amelyekben a számítógépek " -"közvetlenül kommunikálhatnak egmással. A VLAN-ok gyakran a hálózati szegmensek elkülönítésére " -"használják. Gyakran van egy alapértelmezett Uplink port a következő nagyobb " -"hálózathoz (pl. az internet) való kapcsolódásra és a többi port a helyi " -"hálózathoz." - -msgid "The selected protocol needs a device assigned" -msgstr "A kiválasztott protokoll eszköz hozzárendelést igényel" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "A rendszer most törli a konfigurációs partíciót majd újraindul." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"A rendszer frissítése folyamatban.
    NE KAPCSOLJA KI AZ ESZKÖZT!
    " -"Várjon néhány percet, amíg az eszköz ismételten elérhető. Az eszköz " -"eléréséhez a beállításaitól függően szükséges lehet a számítógépe IP-címének " -"megújítása." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"A feltöltött image fájl formátuma nem támogatott. Ügyeljen arra, hogy a " -"platformjának megfelelő általános image formátumot válassza ki." - -msgid "There are no active leases." -msgstr "Nincsenek aktív bérletek." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "Nincsenek visszavonásra váró változtatások!" - -msgid "There are no pending changes!" -msgstr "Nincsenek el nem mentett változtatások!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Nincs hozzárendelt eszköz, kérem csatoljon egy hálózati eszközt a \"Fizikai " -"beállítások\" fülön." - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"A routeren jelenleg nincs jelszó beállítva. Állítsa be a root felhasználó " -"jelszavát a felhasználói felület védelme és az SSH elérés engélyezése " -"érdekében." - -msgid "This IPv4 address of the relay" -msgstr "Az átjátszó IPV4 címe" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Ez egy shell mintákból álló lista a rendszer frissítés során megőrzendő " -"fájlok és könytárak meghatározására. Az /etc/config/ könyvtárban található " -"módosított fájlok és bizonyos további beállítások automatikusan megőrződnek." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Ez a /etc/rc.local fájl tartalma. Ide írhatja be a saját parancsait (az " -"'exit 0' sor elé) a boot folyamat végén történő futtatásukhoz." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" -"Ez az alagút közvetítő (tunnel broker) által megadott helyi végpont címe, " -"általában így végződik: ...:2/64" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Ez az egyetlen DHCP a helyi hálózaton" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Ez a rendszer crontab, amiben időzített feladatok definiálhatók." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Ez általában a legközelebbi alagút közvetítő (tunnel broker) által vezérelt " -"jelenléti pont (PoP) címe" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Ez a lista a rendszerben jelenleg futó folyamatokról és azok állapotáról ad " -"áttekintést." - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Ez a lap a rendszerben jelenleg aktív hálózati kapcsolatokról ad áttekintést." - -msgid "This section contains no values yet" -msgstr "Ez a szakasz még nem tartalmaz értékeket" - -msgid "Time Synchronization" -msgstr "Idő szinkronizálás" - -msgid "Time Synchronization is not configured yet." -msgstr "Idő szinkronizálás még nincs beállítva." - -msgid "Timezone" -msgstr "Időzóna" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Itt tölthet fel egy korábban létrehozott biztonsági mentés archívumot a " -"konfigurációs fájlok visszaállításához. A firmware kezdeti állapotának " -"visszaállításához kattintson a \"Visszaállítás végrehajtása\" gombra (csak " -"squashfs image-ek esetén lehetséges)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Összes elérhető" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Forgalom" - -msgid "Transfer" -msgstr "Átvitel" - -msgid "Transmission Rate" -msgstr "Átviteli sebesség" - -msgid "Transmit" -msgstr "Küldés" - -msgid "Transmit Power" -msgstr "Adóteljesítmény" - -msgid "Transmitter Antenna" -msgstr "Adó antenna" - -msgid "Trigger" -msgstr "Trigger" - -msgid "Trigger Mode" -msgstr "Trigger mód" - -msgid "Tunnel ID" -msgstr "Tunnel azonosító" - -msgid "Tunnel Interface" -msgstr "Tunnel interfész" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Adóteljesítmény" - -msgid "Type" -msgstr "Típus" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Csak UTMS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB eszköz" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "Nem indiítható" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Ismeretlen" - -msgid "Unknown Error, password not changed!" -msgstr "Ismeretlen hiba, a jelszó nem lett megváltoztatva!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "Nem kezelt" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "El nem mentett módosítások" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Nem támogatott protokoll típus." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Listák frissítése" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Itt tölthet fel egy új sysupgrade-kompatibilis képet a futó firmware " -"lecseréléséhez. A jelenlegi beállítások megtartásához jelölje be a " -"\"Beállítások megtartása\" négyzetet (kompatibilis firmware kép szükséges)." - -msgid "Upload archive..." -msgstr "Archívum feltöltése..." - -msgid "Uploaded File" -msgstr "Feltöltött fájl" - -msgid "Uptime" -msgstr "Működési idő" - -msgid "Use /etc/ethers" -msgstr "/etc/ethers használata" - -msgid "Use DHCP gateway" -msgstr "DHCP kiszolgáló használata" - -msgid "Use DNS servers advertised by peer" -msgstr "Másik fél által ajánlott DNS szerverek használata" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "ISO/IEC 3166 alpha2 országkódok használata" - -msgid "Use MTU on tunnel interface" -msgstr "MTU használata az alagút interfészen" - -msgid "Use TTL on tunnel interface" -msgstr "TTL használata az alagút interfészen" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Broadcast flag használata" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Egyedi DNS szerverek használata" - -msgid "Use default gateway" -msgstr "Alapértelmezett átjáró használata" - -msgid "Use gateway metric" -msgstr "Átjáró metrikájának használata" - -msgid "Use routing table" -msgstr "Útválasztó tábla használata" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Használja a Hozzáadás gombot új bérleti bejegyzés hozzáadásához. A " -"MAC-cím azonosítja a gépet. az IPv4-cím adja meg a " -"használandó rögzített IP címet és a Gépnév lesz szimbolikus névként " -"hozzárendelve az igénylő géphez." - -msgid "Used" -msgstr "Használt" - -msgid "Used Key Slot" -msgstr "Használt kulcsindex" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Felhasználónév" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLAN-ok %q-n" - -msgid "VLANs on %q (%s)" -msgstr "VLAN-ok %q-n (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "VPN kiszolgáló" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "DHCP kérés során küldendő 'Vendor Class'" - -msgid "Verify" -msgstr "Ellenőrzés" - -msgid "Version" -msgstr "Verzió" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP nyílt rendszer" - -msgid "WEP Shared Key" -msgstr "WEP megosztott kulcs" - -msgid "WEP passphrase" -msgstr "WEP jelmondat" - -msgid "WMM Mode" -msgstr "WMM mód" - -msgid "WPA passphrase" -msgstr "WPA jelmondat" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA titkosításhoz kliens módnál 'wpa_supplicant', hozzáférési pont illetve " -"ad-hoc módnál 'hostapd' telepítése szükséges." - -msgid "Waiting for changes to be applied..." -msgstr "Várakozás a változtatások alkalmazására..." - -msgid "Waiting for command to complete..." -msgstr "Várakozás a parancs befejezésére..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Figyelmeztetés" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Vezetéknélküli rész" - -msgid "Wireless Adapter" -msgstr "Vezetéknélküli adapter" - -msgid "Wireless Network" -msgstr "Vezetéknélküli hálózat" - -msgid "Wireless Overview" -msgstr "Vezetéknélküli rész áttekintés" - -msgid "Wireless Security" -msgstr "Vezetéknélküli biztonság" - -msgid "Wireless is disabled" -msgstr "Vezetéknélküli hálózat le van tiltva" - -msgid "Wireless is not associated" -msgstr "Vezetéknélküli hálózat nincs kapcsolódva" - -msgid "Wireless is restarting..." -msgstr "Vezetéknélküli rész újraindítása folyamatban..." - -msgid "Wireless network is disabled" -msgstr "Vezetéknélküli hálózat letiltva" - -msgid "Wireless network is enabled" -msgstr "Vezetéknélküli hálózat engedélyezve" - -msgid "Write received DNS requests to syslog" -msgstr "A kapott DNS kéréseket írja a rendszernaplóba" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Itt engedélyezheti vagy tilthatja le a telepített indítási állományokat. A " -"módosítások a rendszer újraindítása után lesznek alakalmazva.
    Figyelem: alapvető indítási állomány pl. \"network\" letiltása " -"esetén, az eszköz elérhetetlenné válhat!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Engélyezze a Java Szkripteket a böngészőjében, mert anélkül a LuCI nem fog " -"megfelelően működni." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "bármelyik" - -msgid "auto" -msgstr "automatikus" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "áthidalt" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "új:" - -msgid "creates a bridge over specified interface(s)" -msgstr "híd létrehozása a megadott interfész(ek) között" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "letiltás" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "lejárt" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"fájl ahová a DHCP " -"bérletek tárolásra kerülnek" - -msgid "forward" -msgstr "továbbítás" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "half-duplex" - -msgid "hidden" -msgstr "rejtett" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "ha a cél hálózat" - -msgid "input" -msgstr "bemenet" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "helyi DNS fájl" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "nem" - -msgid "no link" -msgstr "nincs link" - -msgid "none" -msgstr "nincs" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "ki" - -msgid "on" -msgstr "be" - -msgid "open" -msgstr "nyitás" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "irányított" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "cimkézett" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "ismeretlen" - -msgid "unlimited" -msgstr "korlátlan" - -msgid "unspecified" -msgstr "nincs meghatározva" - -msgid "unspecified -or- create:" -msgstr "nincs magadva -vagy- új:" - -msgid "untagged" -msgstr "cimkézetlen" - -msgid "yes" -msgstr "igen" - -msgid "« Back" -msgstr "« Vissza" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Hálózat aktiválása" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Hermes 802.11b vezeték nélküli vezérlő" - -#~ msgid "Interface is shutting down..." -#~ msgstr "Interfész leállítása..." - -#~ msgid "Interface reconnected" -#~ msgstr "Interfész újracsatlakoztatva" - -#~ msgid "Interface shut down" -#~ msgstr "Interfész leállítás" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Prism2/2.5/3 802.11b vezeték nélküli vezérlő" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "RaLink 802.11%s vezeték nélküli vezérlő" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "Biztos, hogy leállítja a \"%s\" interfészt?\n" -#~ " Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen az " -#~ "interfészen keresztül kapcsolódik." - -#~ msgid "Reconnecting interface" -#~ msgstr "Interfész újracsatlakoztatása" - -#~ msgid "Shutdown this network" -#~ msgstr "Hálózat leállítása" - -#~ msgid "Wireless restarted" -#~ msgstr "Vezetéknélküli rész újraindítva" - -#~ msgid "Wireless shut down" -#~ msgstr "Vezetéknélküli rész leállítása" - -#~ msgid "DHCP Leases" -#~ msgstr "DHCP bérletek" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "DHCPv6 bérletek" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "Biztosan törli az interfészt? A törlés nem visszavonható!\n" -#~ " Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen az " -#~ "interfészen keresztül kapcsolódik." - -#, fuzzy -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "Biztos, hogy leállítja a hálózatot?!\n" -#~ " Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen a " -#~ "hálózaton keresztül kapcsolódik." - -#~ msgid "Sort" -#~ msgstr "Sorbarendezés" - -#~ msgid "help" -#~ msgstr "súgó" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "IPv4 WAN állapot" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "IPv6 WAN állapot" - -#~ msgid "Apply" -#~ msgstr "Alkalmaz" - -#~ msgid "Applying changes" -#~ msgstr "Módosítások alkalmazása" - -#~ msgid "Configuration applied." -#~ msgstr "Beállítások alkalmazva." - -#~ msgid "Save & Apply" -#~ msgstr "Mentés & Alkalmazás" - -#~ msgid "The following changes have been committed" -#~ msgstr "A következő módosítások lettek alkalmazva" - -#~ msgid "There are no pending changes to apply!" -#~ msgstr "Nincsenek alkalmazásra váró módosítások!" - -#~ msgid "Action" -#~ msgstr "Művelet" - -#~ msgid "Buttons" -#~ msgstr "Gombok" - -#~ msgid "Handler" -#~ msgstr "Kezelő" - -#~ msgid "Maximum hold time" -#~ msgstr "Maximális tartási idő" - -#~ msgid "Minimum hold time" -#~ msgstr "Minimális tartási idő" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "A gomb eseményeit kezelő végrehajtható állomány elérési útja" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "Meghatározza a gomb kezelendő állapotát" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "Ez a lap a gombok egyedi működésének beállítását teszi lehetővé" - -#~ msgid "Leasetime" -#~ msgstr "Bérlet időtartama" - -#~ msgid "AR Support" -#~ msgstr "AR Támogatás" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s vezeték-nélküli vezérlő" - -#~ msgid "Background Scan" -#~ msgstr "Felderítés a háttérben" - -#~ msgid "Compression" -#~ msgstr "Tömörítés" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Hardveres beacon időzítő letiltása" - -#~ msgid "Do not send probe responses" -#~ msgstr "Ne válaszoljon a szondázásra" - -#~ msgid "Fast Frames" -#~ msgstr "Gyors keretek" - -#~ msgid "Maximum Rate" -#~ msgstr "Maximális sebesség" - -#~ msgid "Minimum Rate" -#~ msgstr "Minimális sebesség" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicast sebesség" - -#~ msgid "Outdoor Channels" -#~ msgstr "Kültéri csatornák" - -#~ msgid "Regulatory Domain" -#~ msgstr "Szabályozó tartomány" - -#~ msgid "Separate WDS" -#~ msgstr "WDS szétválasztása" - -#~ msgid "Static WDS" -#~ msgstr "Statikus WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbó mód" - -#~ msgid "XR Support" -#~ msgstr "XR támogatás" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Amennyiben ezt jelöletlenül hagyja, egy további hálózat jön létre" - -#~ msgid "Join Network: Settings" -#~ msgstr "Csatlakozás a hálózathoz: Beállítások" - -#~ msgid "CPU" -#~ msgstr "Processzor" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "A %d port egyszerre több VLAN-ban is cimkézetlen!" - -#~ msgid "VLAN Interface" -#~ msgstr "VLAN interfész" diff --git a/luci-base/po/it/base.po b/luci-base/po/it/base.po deleted file mode 100644 index e4769bf01..000000000 --- a/luci-base/po/it/base.po +++ /dev/null @@ -1,4072 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2017-09-05 00:33+0100\n" -"Last-Translator: bubu83 \n" -"Language-Team: LANGUAGE \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.6.10\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d finestra in minuti , %d secondi intervallo)" - -msgid "(%s available)" -msgstr "(%s disponibile)" - -msgid "(empty)" -msgstr "(vuoto)" - -msgid "(no interfaces attached)" -msgstr "(nessuna interfaccia collegata)" - -msgid "-- Additional Field --" -msgstr "-- Campo aggiuntivo --" - -msgid "-- Please choose --" -msgstr "-- Per favore scegli --" - -msgid "-- custom --" -msgstr "-- personalizzato --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Carico in 1 minuto:" - -msgid "15 Minute Load:" -msgstr "Carico in 15 minut:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Carico in 5 minuti:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" -"BSSID" - -msgid "DNS query port" -msgstr "Richiesta porta DNS" - -msgid "DNS server port" -msgstr "Porta Server DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS I server che verranno " -"interrogati nell'ordine del resolv file" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "Indirizzo IPv4" - -msgid "IPv4-Gateway" -msgstr "Gateway IPv4" - -msgid "IPv4-Netmask" -msgstr "" -"Maschera di rete IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Indirizzo IPv6 o rete " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "Gateway IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Configurazione LED" - -msgid "LED Name" -msgstr "LED Nome" - -msgid "MAC-Address" -msgstr "Indirizzo MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. Contratto DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. dimensione pacchetti EDNS0" - -msgid "Max. concurrent queries" -msgstr "Max. Richiesta in uso" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    Nota: devi riavviare manualmente il servizio cron se il file crontab " -"era vuoto prima delle modifiche." - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "riprova soglia ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Ponti ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identificatore Canale Virtuale ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identificatore Percorso Virtuale ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"I ponti ATM incapsulano connessioni in AAL5, in modo che i dispositivi " -"virtuali si possono interfacciare con le reti virtuali Linux in congiunzione " -"con la comunicazione DHCP o PPP dell'ISP." - -msgid "ATM device number" -msgstr "Numero dispositivo ATM " - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Accesso Concentratore" - -msgid "Access Point" -msgstr "Punto di Accesso" - -msgid "Actions" -msgstr "Azioni" - -msgid "Active IPv4-Routes" -msgstr "" -"Instradamento IPv4 " -"attivo" - -msgid "Active IPv6-Routes" -msgstr "" -"Instradamento IPv6 " -"attivo" - -msgid "Active Connections" -msgstr "Connessioni attive" - -msgid "Active DHCP Leases" -msgstr "Contratti attivi DHCP" - -msgid "Active DHCPv6 Leases" -msgstr "Contratti attivi DHCPv6" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Aggiungi" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Aggiungere il suffisso di dominio locale ai nomi serviti dal file hosts" - -msgid "Add new interface..." -msgstr "Aggiungi nuova interfaccia..." - -msgid "Additional Hosts files" -msgstr "File Hosts Aggiuntivo" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Indirizzo" - -msgid "Address to access local relay bridge" -msgstr "Indirizzo per accedere al ponte locale di trasmissione" - -msgid "Administration" -msgstr "Amministrazione" - -msgid "Advanced Settings" -msgstr "Opzioni Avanzate" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Allerta" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Permetti autenticazione SSH tramite " -"password" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Consenti tutti tranne quelli nell'elenco" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Consenti solo quelli nell'elenco" - -msgid "Allow localhost" -msgstr "Permetti localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Permetti agli host remoti di connettersi tramite ssh reindirizzando le porte" - -msgid "Allow root logins with password" -msgstr "Permetti l'accesso a root con password" - -msgid "Allow the root user to login with password" -msgstr "Abilita l'utente root con l'accesso via password" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Permetti le risposte upstream nell'intervallo 127.0.0.0/8, per esempio nei " -"servizi RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antenna 1" - -msgid "Antenna 2" -msgstr "Antenna 2" - -msgid "Antenna Configuration" -msgstr "Configurazione dell'Antenna" - -msgid "Any zone" -msgstr "Qualsiasi Zona" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Assegna Interfacce..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Dispositivi Wi-Fi connessi" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autenticazione PEAP" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritativo" - -msgid "Authorization Required" -msgstr "Autorizzazione richiesta" - -msgid "Auto Refresh" -msgstr "Aggiornamento Automatico" - -msgid "Automatic" -msgstr "Automatico" - -msgid "Automatic Homenet (HNCP)" -msgstr "Homenet (HNCP) automatico" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "Controlla automaticamente il filesystem per errori prima di montare" - -msgid "Automatically mount filesystems on hotplug" -msgstr "Monta automaticamente i filesystem in hotplug" - -msgid "Automatically mount swap on hotplug" -msgstr "Monta automaticamente lo swap in hotplug" - -msgid "Automount Filesystem" -msgstr "Automonta Filesystem" - -msgid "Automount Swap" -msgstr "Automonta Swap" - -msgid "Available" -msgstr "Disponibile" - -msgid "Available packages" -msgstr "Pacchetti disponibili" - -msgid "Average:" -msgstr "Media:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Indietro" - -msgid "Back to Overview" -msgstr "Ritorna alla panoramica" - -msgid "Back to configuration" -msgstr "Indietro alla configurazione" - -msgid "Back to overview" -msgstr "Ritorna alla panoramica" - -msgid "Back to scan results" -msgstr "Ritorno ai risultati della scansione" - -msgid "Backup" -msgstr "Copia di Sicurezza" - -msgid "Backup / Flash Firmware" -msgstr "Copia di Sicurezza / Flash Firmware" - -msgid "Backup file list" -msgstr "Elenco dei file di cui effettuare una copia di sicurezza" - -msgid "Bad address specified!" -msgstr "E' stato specificato un indirizzo errato!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Di seguito l'elenco dei file di cui effettuare la copia di sicurezza. Essa è " -"composta dai file di configurazione modificati installati da opkg, file di " -"base essenziali e i file di backup definiti dall'utente." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Ignora Dominio Bogus NX" - -msgid "Bridge" -msgstr "Ponte" - -msgid "Bridge interfaces" -msgstr "Interfacce Ponte" - -msgid "Bridge unit number" -msgstr "Numero Unità Ponte" - -msgid "Bring up on boot" -msgstr "Attivare all'avvio" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Dispositivo Wireless Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Dispositivo Wireless Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "Buffered" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Uso CPU (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Annulla" - -msgid "Category" -msgstr "Categoria" - -msgid "Chain" -msgstr "Catena" - -msgid "Changes" -msgstr "Modifiche" - -msgid "Changes applied." -msgstr "Modifiche applicate." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Cambia la password di amministratore per accedere al dispositivo" - -msgid "Channel" -msgstr "Canale" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Verifica" - -msgid "Check filesystems before mount" -msgstr "Controlla i filesystem prima di montare" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "Marca questa opzione per cancellare le reti esistenti da questa radio." - -msgid "Checksum" -msgstr "Checksum" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Scegli la zona del firewall che si desidera assegnare a questa interfaccia. " -"Selezionare non specificato per rimuovere l'interfaccia dalla zona " -"associata o compilare il campo crea per definire una nuova zona e " -"collegare l'interfaccia ad esso." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Scegliere la/le rete/reti a cui vuoi collegare questa interfaccia wireless o " -"riempire il campo crea per definire una nuova rete." - -msgid "Cipher" -msgstr "Cifratura" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Premi su \"Genera archivio\" per scaricare un archivio tar di backup dei " -"file di configurazione attuali." - -msgid "Client" -msgstr "Cliente" - -msgid "Client ID to send when requesting DHCP" -msgstr "ID Cliente da inviare all'interno della richiesta DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Chiudi le connessioni inattive dopo x secondi, usa 0 per connessioni " -"persistenti" - -msgid "Close list..." -msgstr "Scegliere dall'elenco..." - -msgid "Collecting data..." -msgstr "Raccolgo i dati..." - -msgid "Command" -msgstr "Comando" - -msgid "Common Configuration" -msgstr "Configurazioni Comuni" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configurazione" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "I file di configurazione verranno mantenuti." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Conferma" - -msgid "Connect" -msgstr "Connetti" - -msgid "Connected" -msgstr "Connesso" - -msgid "Connection Limit" -msgstr "Limite connessioni" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Connessioni" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "Nazione" - -msgid "Country Code" -msgstr "Codice Nazione" - -msgid "Cover the following interface" -msgstr "Coprire la seguente interfaccia" - -msgid "Cover the following interfaces" -msgstr "Coprire le seguenti interfacce" - -msgid "Create / Assign firewall-zone" -msgstr "Crea / Assegna zona firewall" - -msgid "Create Interface" -msgstr "Crea Interfaccia" - -msgid "Create a bridge over multiple interfaces" -msgstr "Crea un ponte tra interfacce multiple" - -msgid "Critical" -msgstr "Critico" - -msgid "Cron Log Level" -msgstr "Livello di log del Cron" - -msgid "Custom Interface" -msgstr "Interfaccia personalizzata" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Personalizza la configurazione dei LED del sistema se possibile." - -msgid "DHCP Server" -msgstr "Server DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP e DNS" - -msgid "DHCP client" -msgstr "Cliente DHCP" - -msgid "DHCP-Options" -msgstr "Opzioni DHCP" - -msgid "DHCPv6 client" -msgstr "Cliente DHCPv6" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Inoltri DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Debug" - -msgid "Default %d" -msgstr "Predefinito %d" - -msgid "Default gateway" -msgstr "Gateway predefinito" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Stato Predefinito" - -msgid "Define a name for this network." -msgstr "Definisci un nome per questa rete." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Definisci opzioni DHCP aggiuntive, per esempio " -"\"6,192.168.2.1,192.168.2.2\" fornisce differenti server DNS ai " -"client." - -msgid "Delete" -msgstr "Elimina" - -msgid "Delete this network" -msgstr "Rimuovi questa rete" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Descrizione" - -msgid "Design" -msgstr "Tema" - -msgid "Destination" -msgstr "Destinazione" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Device Configuration" -msgstr "Configurazione del dispositivo" - -msgid "Device is rebooting..." -msgstr "Dispositivo in riavvio..." - -msgid "Device unreachable!" -msgstr "Dispositivo irraggiungibile" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnostica" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Cartella" - -msgid "Disable" -msgstr "Disabilita" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Disabilita DHCP per questa interfaccia." - -msgid "Disable DNS setup" -msgstr "Disabilita il setup dei DNS" - -msgid "Disable Encryption" -msgstr "Disabilita Crittografia" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Disabilitato" - -msgid "Disabled (default)" -msgstr "Disabilitato (default)" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Ignora risposte RFC1918 upstream" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "Visualizza solo i pacchetti contenenti" - -msgid "Distance Optimization" -msgstr "Ottimizzazione distanza" - -msgid "Distance to farthest network member in meters." -msgstr "Distanza del membro più lontano della rete in metri." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversità" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq è un server DHCP e inoltratore DNS " -"per firewall NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Non memorizzare le repliche negative, es. per domini non esistenti" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Non inoltrare le richieste che non possono essere risolte dai name server " -"pubblici" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Non proseguire con le ricerche inverse per le reti locali." - -msgid "Domain required" -msgstr "Dominio richiesto" - -msgid "Domain whitelist" -msgstr "Elenco Domini consentiti" - -msgid "Don't Fragment" -msgstr "Non Frammentare" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Non inoltrare le richieste DNS " -"senza nome DNS" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Scarica e installa pacchetto" - -msgid "Download backup" -msgstr "Download backup" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instanza di Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear offre accesso SSH e integra un " -"server SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP dinamico" - -msgid "Dynamic tunnel" -msgstr "Dynamic tunnel" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Fornisci dinamicamente gli indirizzi DHCP ai client. Se disabilitato, solo i " -"client con un indirizzo statico saranno serviti." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Metodo EAP" - -msgid "Edit" -msgstr "Modifica" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Modifica questa interfaccia" - -msgid "Edit this network" -msgstr "Modifica questa rete" - -msgid "Emergency" -msgstr "Emergenza" - -msgid "Enable" -msgstr "Abilita" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Abilita STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Abilitazione aggiornamento endpoint dinamico HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "Abilita negoziazione IPv6" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Attiva la negoziazione IPv6 sul collegamento PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Abilita Jumbo Frame passthrough" - -msgid "Enable NTP client" -msgstr "Attiva il cliente NTP" - -msgid "Enable Single DES" -msgstr "Abilita Single DES" - -msgid "Enable TFTP server" -msgstr "Abilita il server TFTP" - -msgid "Enable VLAN functionality" -msgstr "Abilita la funzionalità VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "Abilita pulsante WPS, richiede WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Attivare l'apprendimento e l'invecchiamento" - -msgid "Enable mirroring of incoming packets" -msgstr "Abilita mirroring dei pacchetti in ingresso" - -msgid "Enable mirroring of outgoing packets" -msgstr "Abilita mirroring dei pacchetti in uscita" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "Abilita l'opzione DF (non Frammentare) dei pacchetti incapsulati" - -msgid "Enable this mount" -msgstr "Abilita questo mount" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "Abilita questo swap" - -msgid "Enable/Disable" -msgstr "Abilita/Disabilita" - -msgid "Enabled" -msgstr "Abilitato" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Abilita il protocollo di Spanning Tree su questo bridge" - -msgid "Encapsulation mode" -msgstr "Modalità di incapsulamento" - -msgid "Encryption" -msgstr "Crittografia" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Cancellazione..." - -msgid "Error" -msgstr "Errore" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Scheda di Rete" - -msgid "Ethernet Switch" -msgstr "Switch di Rete" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Espandi gli hosts" - -msgid "Expires" -msgstr "Scadenze" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Tempo di scadenza di indirizzi a contratto, il minimo è di 2 minuti ( " -"2m )." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Server Log di Sistema esterno" - -msgid "External system log server port" -msgstr "Porta Server Log di Sistema esterno" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "File" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nome del file dell'immagine di avvio annunciato ai clienti." - -msgid "Filesystem" -msgstr "Filesystem" - -msgid "Filter" -msgstr "Filtro" - -msgid "Filter private" -msgstr "Filtra privati" - -msgid "Filter useless" -msgstr "Filtra inutili" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Trova e aggiungi una rete" - -msgid "Find package" -msgstr "Cerca pacchetto" - -msgid "Finish" -msgstr "Fine" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Impostazioni Firewall" - -msgid "Firewall Status" -msgstr "Stato del Firewall" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Versione del Firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Porta di origine fissa per le richieste DNS in uscita" - -msgid "Flash Firmware" -msgstr "Flash Firmware" - -msgid "Flash image..." -msgstr "Flash immagine..." - -msgid "Flash new firmware image" -msgstr "Flash immagine nuovo firmware" - -msgid "Flash operations" -msgstr "Operazioni Flash" - -msgid "Flashing..." -msgstr "Flashing..." - -msgid "Force" -msgstr "Forza" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Forza CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Forza DHCP su questa rete, anche se un altro server viene rilevato." - -msgid "Force TKIP" -msgstr "Forza TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forza TKIP e CCMP (AES)" - -msgid "Force link" -msgstr "Forza collegamento" - -msgid "Force use of NAT-T" -msgstr "Forza uso del NAT-T" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Inoltra il traffico DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Inoltra il traffico broadcast" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Modalità di Inoltro" - -msgid "Fragmentation Threshold" -msgstr "Soglia di frammentazione" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Disponibile" - -msgid "Free space" -msgstr "Spazio libero" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Solo GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Porte Gateway" - -msgid "General Settings" -msgstr "Opzioni Generali" - -msgid "General Setup" -msgstr "Impostazioni Generali" - -msgid "General options for opkg" -msgstr "Opzioni generali per opkg" - -msgid "Generate Config" -msgstr "Genera Configurazione" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Genera Archivio" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Dispositivo Wireless 802.11%s Generico" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"La conferma della password assegnata non ha prodotto risultati, la password " -"non è stata cambiata!" - -msgid "Global Settings" -msgstr "Impostazioni Globali" - -msgid "Global network options" -msgstr "Opzioni rete globale" - -msgid "Go to password configuration..." -msgstr "Vai alla configurazione della password..." - -msgid "Go to relevant configuration page" -msgstr "Vai alla pagina di configurazione relativa" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Password HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Hangup" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Qui puoi configurare gli aspetti base del tuo dispositivo come l'" -"hostname o il fuso orario." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Qui è possibile incollare le chiavi pubbliche SSH (uno per riga) per " -"l'autenticazione con chiave pubblica SSH." - -msgid "Hide ESSID" -msgstr "Nascondi ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Campi host" - -msgid "Host expiry timeout" -msgstr "Timeout scadenza Host" - -msgid "Host-IP or Network" -msgstr "" -"IP dell'host o rete" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Hostname to send when requesting DHCP" -msgstr "Nome host da inviare al momento della richiesta DHCP" - -msgid "Hostnames" -msgstr "Hostname" - -msgid "Hybrid" -msgstr "Ibrido" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "Indirizzi IP" - -msgid "IP address" -msgstr "Indirizzo IP" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 Firewall" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "Indirizzi IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "trasmissione IPv4" - -msgid "IPv4 gateway" -msgstr "Gateway IPv4" - -msgid "IPv4 netmask" -msgstr "Maschera rete IPv4" - -msgid "IPv4 only" -msgstr "Solo IPv4" - -msgid "IPv4 prefix" -msgstr "Prefisso IPv4" - -msgid "IPv4 prefix length" -msgstr "Lunghezza prefisso IPv4" - -msgid "IPv4-Address" -msgstr "Indirizzo-IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 Firewall" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "Impostazioni IPv6" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "Indirizzi IPv6" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Gateway IPv6" - -msgid "IPv6 only" -msgstr "Solo IPv6" - -msgid "IPv6 prefix" -msgstr "Prefisso IPv6" - -msgid "IPv6 prefix length" -msgstr "Lunghezza prefisso IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "Suffisso IPv6" - -msgid "IPv6-Address" -msgstr "Indirizzo-IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-su-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-su-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identità PEAP" - -msgid "If checked, 1DES is enabled" -msgstr "Se selezionata, 1DES è abilitata" - -msgid "If checked, encryption is disabled" -msgstr "Se selezionata, crittografia è disabilitata" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Se specificato, montare il dispositivo dal suo UUID invece che dal nodo di " -"dispositivo fisso" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Se specificato, montare il dispositivo dall'etichetta della partizione al " -"posto di un nodo di un dispositivo fisso" - -msgid "If unchecked, no default route is configured" -msgstr "Se deselezionata, alcun percorso predefinito è configurato" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" -"Se deselezionata, gli indirizzi ai Server DNS annunciati saranno ignorati" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Se la tua memoria è insufficiente i dati non usati possono venire " -"temporaneamente spostati in un'area di swap risultando in un più grande " -"quantitativo di RAM usabile. " -"Sappi che spostare dati in swap è un processo molto lento e che il " -"dispositivo di swap non può essere acceduto alle alte velocità della RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignora /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignora interfaccia" - -msgid "Ignore resolve file" -msgstr "Ignora file resolv" - -msgid "Image" -msgstr "Immagine" - -msgid "In" -msgstr "In" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Tempo di Inattività" - -msgid "Inbound:" -msgstr "In entrata:" - -msgid "Info" -msgstr "Informazioni" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Script di avvio" - -msgid "Initscripts" -msgstr "Scripts di avvio" - -msgid "Install" -msgstr "Installa" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Installa il pacchetto %q" - -msgid "Install protocol extensions..." -msgstr "Installa le estensioni del protocollo..." - -msgid "Installed packages" -msgstr "Pacchetti installati" - -msgid "Interface" -msgstr "Interfaccia" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configurazione Interfaccia" - -msgid "Interface Overview" -msgstr "Riassunto Interfaccia" - -msgid "Interface is reconnecting..." -msgstr "L'interfaccia si sta ricollegando..." - -msgid "Interface name" -msgstr "Nome Interfaccia" - -msgid "Interface not present or not connected yet." -msgstr "Interfaccia non presente o non ancora connessa." - -msgid "Interfaces" -msgstr "Interfacce" - -msgid "Internal" -msgstr "Interno" - -msgid "Internal Server Error" -msgstr "Errore del Server Interno" - -msgid "Invalid" -msgstr "Valore immesso non valido" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "ID VLAN non valido! Solo gli ID compresi tra %d e %d sono consentiti." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "ID VLAN non valido! Solo gli ID unici sono consentiti" - -msgid "Invalid username and/or password! Please try again." -msgstr "Username o password non validi! Per favore riprova." - -msgid "Isolate Clients" -msgstr "Isola Clienti" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Sembra tu stia provando a flashare un'immagine più grande delle dimensioni " -"della memoria flash, per favore controlla il file!" - -msgid "JavaScript required!" -msgstr "Richiesto JavaScript!" - -msgid "Join Network" -msgstr "Aggiungi Rete" - -msgid "Join Network: Wireless Scan" -msgstr "Aggiunta Rete: Rilevamento Wireless" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Mantieni le Impostazioni" - -msgid "Kernel Log" -msgstr "Registro del Kernel" - -msgid "Kernel Version" -msgstr "Versione del Kernel" - -msgid "Key" -msgstr "Chiave" - -msgid "Key #%d" -msgstr "Chiave #%d" - -msgid "Kill" -msgstr "Uccidi" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Server L2TP" - -msgid "LCP echo failure threshold" -msgstr "Fallimento soglia echo LCP" - -msgid "LCP echo interval" -msgstr "Intervallo echo LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Etichetta" - -msgid "Language" -msgstr "Lingua" - -msgid "Language and Style" -msgstr "Lingua e Stile" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "Tempo Contratto" - -msgid "Lease validity time" -msgstr "Periodo di Validità del Contratto" - -msgid "Leasefile" -msgstr "File di contratti" - -msgid "Leasetime remaining" -msgstr "Tempo contratto residuo" - -msgid "Leave empty to autodetect" -msgstr "Lasciare vuoto per l'autorilevamento" - -msgid "Leave empty to use the current WAN address" -msgstr "Lasciare vuoto per usare l'indirizzo WAN attuale" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limite" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Collegamento on" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Elenco di Server DNSa cui " -"inoltrare le richieste in" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Elenco di domini da consentire le risposte RFC1918 per" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Elenco degli host che forniscono falsi risultati di dominio NX" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "Ascolta solo l'interfaccia data o, se non specificato, su tutte" - -msgid "Listening port for inbound DNS queries" -msgstr "Porta di ascolto per le richieste DNS in entrata" - -msgid "Load" -msgstr "Carico" - -msgid "Load Average" -msgstr "Carico Medio" - -msgid "Loading" -msgstr "Caricamento" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Indirizzo IPv4 locale" - -msgid "Local IPv6 address" -msgstr "Indirizzo IPv6 locale" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Avvio Locale" - -msgid "Local Time" -msgstr "Ora locale" - -msgid "Local domain" -msgstr "Dominio Locale" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Specifiche dominio locale. I nomi di dominio corrispondenti a questi criteri " -"non sono mai inoltrate e risolti solo da DHCP o file hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Suffisso di dominio locale aggiunto ai nomi dei DHCP e voci del file hosts" - -msgid "Local server" -msgstr "Server Locale" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Localizzare nome host a seconda della sottorete richiedente se sono " -"disponibili IP multipli" - -msgid "Localise queries" -msgstr "Localizza richieste" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Livello di dettaglio registro" - -msgid "Log queries" -msgstr "Logga richieste" - -msgid "Logging" -msgstr "Logging" - -msgid "Login" -msgstr "Login" - -msgid "Logout" -msgstr "Slogga" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "Filtro indirizzo MAC" - -msgid "MAC-Filter" -msgstr "Filtro MAC" - -msgid "MAC-List" -msgstr "Lista MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "Manuale" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Numero massimo indirizzi in contratto" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Memoria" - -msgid "Memory usage (%)" -msgstr "Uso Memoria (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metrica" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Modalità" - -msgid "Model" -msgstr "Modello" - -msgid "Modem device" -msgstr "Dispositivo modem" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Voce di Mount" - -msgid "Mount Point" -msgstr "Punto di Mount" - -msgid "Mount Points" -msgstr "Punti di Mount" - -msgid "Mount Points - Mount Entry" -msgstr "Punti di Mount - Voce di Mount" - -msgid "Mount Points - Swap Entry" -msgstr "Punti di Mount - Voce Swap" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"I punti di mount definiscono in quale punto un dispositivo di memoria verrà " -"attaccato al tuo filesystem" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Opzioni di mount" - -msgid "Mount point" -msgstr "Punto di mount" - -msgid "Mount swap not specifically configured" -msgstr "Monta swap non configurato specificatamente" - -msgid "Mounted file systems" -msgstr "File system montati" - -msgid "Move down" -msgstr "Muovi giù" - -msgid "Move up" -msgstr "Muovi su" - -msgid "Multicast address" -msgstr "Indirizzo Multicast" - -msgid "NAS ID" -msgstr "ID della NAS" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Candidati server NTP" - -msgid "Name" -msgstr "Nome" - -msgid "Name of the new interface" -msgstr "Nome della nuova interfaccia" - -msgid "Name of the new network" -msgstr "Nome della nuova rete" - -msgid "Navigation" -msgstr "Navigazione" - -msgid "Netmask" -msgstr "Maschera di rete" - -msgid "Network" -msgstr "Rete" - -msgid "Network Utilities" -msgstr "Utilità di Rete" - -msgid "Network boot image" -msgstr "" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "Rete senza interfaccia" - -msgid "Next »" -msgstr "Prossimo »" - -msgid "No DHCP Server configured for this interface" -msgstr "Nessun Server DHCP configurato per questa interfaccia" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "Nessun file trovato" - -msgid "No information available" -msgstr "Nessuna informazione disponibile" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "Nessuna rete è configurata su questo dispositivo" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "Nessuna lista pacchetti disponibile" - -msgid "No password set!" -msgstr "Nessuna password immessa!" - -msgid "No rules in this chain" -msgstr "Nessuna regola in questa catena" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Nessuna zona assegnata" - -msgid "Noise" -msgstr "Rumore" - -msgid "Noise Margin (SNR)" -msgstr "Margine di Rumore (SNR)" - -msgid "Noise:" -msgstr "Rumore:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Nessuno" - -msgid "Normal" -msgstr "Normale" - -msgid "Not Found" -msgstr "Non Trovato" - -msgid "Not associated" -msgstr "Non associato" - -msgid "Not connected" -msgstr "Non connesso" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: i files di Configurazione saranno eliminati" - -msgid "Note: interface name length" -msgstr "Nota: lunghezza nome interfaccia" - -msgid "Notice" -msgstr "Notifica" - -msgid "Nslookup" -msgstr "" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Configurazione di OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"In questa pagina puoi configurare le interfacce di rete.Puoi unire più " -"interfacce spuntando la voce \"unisci interfacce\" e inserendo i nomi di più " -"interfacce di rete separate da spazi. Puoi anche usare la notazione VLAN INTERFACCIA.VLANNUM (e.s.: eth0.1)." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "Uno o più campi contengono valori non validi!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Uno o più campi obbligatori sono vuoti!" - -msgid "Open list..." -msgstr "Apri lista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Opzione cambiata" - -msgid "Option removed" -msgstr "Opzione cancellata" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Opzioni" - -msgid "Other:" -msgstr "Altro:" - -msgid "Out" -msgstr "Uscita" - -msgid "Outbound:" -msgstr "In uscita:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Sovrascrivi indirizzo MAC" - -msgid "Override MTU" -msgstr "Sovrascrivi MTU" - -msgid "Override TOS" -msgstr "Sovrascrivi TOS" - -msgid "Override TTL" -msgstr "Sovrascrivi TTL" - -msgid "Override default interface name" -msgstr "Sovrascrivi nome interfaccia di default" - -msgid "Override the gateway in DHCP responses" -msgstr "Sovrascrivi il gateway nelle risposte DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Sovrascrivi la netmask data ai clienti. Normalmente è calcolata dalla subnet " -"servita." - -msgid "Override the table used for internal routes" -msgstr "Sovrascrivi la tabella usata per le route interne" - -msgid "Overview" -msgstr "Riassunto" - -msgid "Owner" -msgstr "Proprietario" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "Incapsulamento PPPoA" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "E' richiesto il pacchetto libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "Nome pacchetto" - -msgid "Packets" -msgstr "Pacchetti" - -msgid "Part of zone %q" -msgstr "Parte della zona %q" - -msgid "Password" -msgstr "Password" - -msgid "Password authentication" -msgstr "Password di authenticazione" - -msgid "Password of Private Key" -msgstr "Password della chiave privata" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Password cambiata con successo!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Percorso al certificato CA" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Percorso alla chiave privata" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Picco:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Esegui un riavvio" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "Per favore inserisci il tuo username e la password." - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "Porta" - -msgid "Port status:" -msgstr "Status porta:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Impedisci la comunicazione fra Client" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Continuare" - -msgid "Processes" -msgstr "Processi" - -msgid "Profile" -msgstr "Profilo" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocollo" - -msgid "Protocol family" -msgstr "Famiglia protocollo" - -msgid "Protocol of the new interface" -msgstr "Protocollo della nuova interfaccia" - -msgid "Protocol support is not installed" -msgstr "Supporto protocollo non installato" - -msgid "Provide NTP server" -msgstr "Fornisci server NTP" - -msgid "Provide new network" -msgstr "Fornisci nuova rete" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "Chiave Pubblica" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Qualità" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Soglia RTS/CTS" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "Velocità RX" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Leggi /etc/ethers per configurare il server DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Vuoi davvero rimuovere questa interfaccia wireless? La rimozione non può " -"essere ripristinata! Potresti perdere l'accesso a questo dispositivo se sei " -"connesso con questa rete." - -msgid "Really reset all changes?" -msgstr "Azzerare veramente tutte le modifiche?" - -msgid "Really switch protocol?" -msgstr "Cambiare veramente il protocollo?" - -msgid "Realtime Connections" -msgstr "Connessioni in Tempo Reale" - -msgid "Realtime Graphs" -msgstr "Grafici in Tempo Reale" - -msgid "Realtime Load" -msgstr "Carico in Tempo Reale" - -msgid "Realtime Traffic" -msgstr "Traffico in Tempo Reale" - -msgid "Realtime Wireless" -msgstr "Wireless in Tempo Reale" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Riavvia" - -msgid "Rebooting..." -msgstr "Riavviando..." - -msgid "Reboots the operating system of your device" -msgstr "Riavvia il sistema operativo del tuo dispositivo" - -msgid "Receive" -msgstr "Ricezione" - -msgid "Receiver Antenna" -msgstr "Antenna Ricevente" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Ricollega questa interfaccia" - -msgid "References" -msgstr "Riferimenti" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Rimuovi" - -msgid "Repeat scan" -msgstr "Ripeti scan" - -msgid "Replace entry" -msgstr "Sostituisci campo" - -msgid "Replace wireless configuration" -msgstr "Sostituisci configurazione wireless" - -msgid "Request IPv6-address" -msgstr "Richiede indirizzo-IPv6" - -msgid "Request IPv6-prefix of length" -msgstr "Richiede prefisso-IPv6 di lunghezza" - -msgid "Required" -msgstr "Richiesto" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Azzera Contatori" - -msgid "Reset to defaults" -msgstr "Azzera a default" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "File Resolve" - -msgid "Restart" -msgstr "Riavvia" - -msgid "Restart Firewall" -msgstr "Riavvia Firewall" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Ripristina" - -msgid "Restore backup" -msgstr "Ripristina backup" - -msgid "Reveal/hide password" -msgstr "Rivela/nascondi password" - -msgid "Revert" -msgstr "Ripristina" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "Route" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Le route specificano attraverso quale interfaccia e gateway un certo host o " -"rete può essere raggiunto." - -msgid "Run a filesystem check before mounting the device" -msgstr "Esegui un controllo del filesystem prima di montare il dispositivo" - -msgid "Run filesystem check" -msgstr "Esegui controllo del filesystem" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "Save" -msgstr "Salva" - -msgid "Save & Apply" -msgstr "Salva & applica" - -msgid "Scan" -msgstr "Scan" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Operazioni programmate" - -msgid "Section added" -msgstr "Sezione aggiunta" - -msgid "Section removed" -msgstr "Sezione rimossa" - -msgid "See \"mount\" manpage for details" -msgstr "Vedi \"mount\" manpage per dettagli" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Isola utenti" - -msgid "Server Settings" -msgstr "Impostazioni Server" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "Servizi" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Signal" -msgstr "Segnale" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "Dimensione" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Salta" - -msgid "Skip to content" -msgstr "Salta a contenuto" - -msgid "Skip to navigation" -msgstr "Salta a navigazione" - -msgid "Slot time" -msgstr "Slot time" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Alcuni campi non sono validi, non è possibile salvare i valori!" - -msgid "Sorry, the object you requested was not found." -msgstr "Siamo spiacenti, l'oggetto che hai richiesto non è stato trovato." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Spiacente, il server ha rilevato un errore imprevisto." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Spiacenti, non è presente alcun supporto sysupgrade, una nuova immagine " -"firmware deve essere memorizzata (Flash) manualmente. Si prega di fare " -"riferimento al wiki per le istruzioni di installazione di dispositivi " -"specifici." - -msgid "Source" -msgstr "Origine" - -msgid "Specifies the directory the device is attached to" -msgstr "Specifica la cartella a cui è collegato il dispositivo in" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Specifica la porta di ascolto di questa istanza Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Consente di specificare la quantità massima di richieste ARP fallite finché " -"gli host si presume siano morti." - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Specifica la quantità massima di secondi dopo di che si presume che gli host " -"siano morti." - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Specificare la chiave di cifratura qui." - -msgid "Start" -msgstr "Inizio" - -msgid "Start priority" -msgstr "Priorità di avvio" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Avvio" - -msgid "Static IPv4 Routes" -msgstr "Instradamento statico IPv4" - -msgid "Static IPv6 Routes" -msgstr "Instradamento statico IPv6" - -msgid "Static Leases" -msgstr "Contratti statici" - -msgid "Static Routes" -msgstr "Instradamenti Statici" - -msgid "Static address" -msgstr "Indirizzo Statico" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"I contratti statici vengono utilizzati per assegnare indirizzi IP fissi e " -"nomi host simbolici ai client DHCP. Essi sono necessari anche per interfacce " -"di configurazione non dinamici, dove solo gli host col contratto " -"corrispondente vengono serviti." - -msgid "Status" -msgstr "Stato" - -msgid "Stop" -msgstr "Ferma" - -msgid "Strict order" -msgstr "Ordine severo" - -msgid "Submit" -msgstr "Invia" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Scambia ingresso" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "Switch %q" - -msgid "Switch %q (%s)" -msgstr "Switch %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Cambia protocollo" - -msgid "Sync with browser" -msgstr "Sincronizza con il browser" - -msgid "Synchronizing..." -msgstr "Sincronizzazione..." - -msgid "System" -msgstr "Sistema" - -msgid "System Log" -msgstr "Registro di Sistema" - -msgid "System Properties" -msgstr "Proprietà di Sistema" - -msgid "System log buffer size" -msgstr "Dimensione Buffer Log di Sistema" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Impostazioni TFTP" - -msgid "TFTP server root" -msgstr "Server TFTP principale" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Velocità TX" - -msgid "Table" -msgstr "Tabella" - -msgid "Target" -msgstr "Destinazione" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Termina" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"La sezione Configurazione del Dispositivo illustra le impostazioni " -"fisiche del hardware radio come canale, la potenza di trasmissione o la " -"selezione dell'antenna che viene condiviso tra tutte le reti wireless " -"definite (se l'hardware radio è multi-SSID compatibilie). Per le " -"impostazioni di rete come la crittografia o la modalità di funzionamento " -"sono raggruppati nella configurazione dell'interfaccia." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Il pacchetto libiwinfo-lua non è installato. È necessario " -"installare questo componente per il lavoro di configurazione wireless!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Il prefisso IPv6 assegnati dal provider, si conclude di solito con ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Il file del dispositivo di memoria o della partizione (e.s. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Il filesystem usato per formattare la memoria (e." -"s. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been reverted" -msgstr "Le seguenti modifiche sono state annullate" - -msgid "The following rules are currently active on this system." -msgstr "Le seguenti regole sono al momento attive su questo sistema." - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes until you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." - -msgid "There are no active leases." -msgstr "Non ci sono contratti attivi." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "Non ci sono cambiamenti pendenti da regredire" - -msgid "There are no pending changes!" -msgstr "Non ci sono cambiamenti pendenti!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Questo è l'unico server DHCP nella tua rete locale" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Questa è la crontab del sistema nella quale possono essere definiti le " -"operazioni da programmare." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Questa lista da un riassunto dei processi correntemente attivi e del loro " -"stato." - -msgid "This page gives an overview over currently active network connections." -msgstr "Questa pagina ti da una riassunto delle connessioni al momento attive." - -msgid "This section contains no values yet" -msgstr "Questa sezione non contiene ancora valori" - -msgid "Time Synchronization" -msgstr "Sincronizzazione Orario" - -msgid "Time Synchronization is not configured yet." -msgstr "Sincronizzazione Orario non ancora configurata" - -msgid "Timezone" -msgstr "Fuso orario" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Per ripristinare i file configurazione, puoi inviare un archivio di backup " -"generato precedentemente qui. Per ripristinare il firmware al suo stato " -"iniziale premi \"Esegui Ripristino\" (solo per firmware basati su squashfs)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Totale" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "Traffico" - -msgid "Transfer" -msgstr "" - -msgid "Transmission Rate" -msgstr "Velocità di transmissione" - -msgid "Transmit" -msgstr "Trasmissione" - -msgid "Transmit Power" -msgstr "Potenza di trasmissione" - -msgid "Transmitter Antenna" -msgstr "Antenna trasmettente" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "Tipo" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "Periferica USB" - -msgid "USB Ports" -msgstr "Porte USB" - -msgid "UUID" -msgstr "" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Sconosciuto" - -msgid "Unknown Error, password not changed!" -msgstr "Errore sconosciuto, password non cambiata!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "Non gestito" - -msgid "Unmount" -msgstr "Smonta" - -msgid "Unsaved Changes" -msgstr "Modifiche non salvate" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Tipo protocollo non supportato." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Aggiorna liste" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Carica un'immagine sysupgrade compatibile quì per sostituire il firmware in " -"esecuzione. Attivare la spunta \"Mantieni Impostazioni\" per mantenere la " -"configurazione corrente (richiede un immagine del firmware compatibile)." - -msgid "Upload archive..." -msgstr "Carica archivio..." - -msgid "Uploaded File" -msgstr "File Inviato" - -msgid "Uptime" -msgstr "Tempo di attività" - -msgid "Use /etc/ethers" -msgstr "Usa /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Usa il DHCP del gateway" - -msgid "Use DNS servers advertised by peer" -msgstr "Usa i server DNS annunciati dal peer" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Usa i codici delle nazioni ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "Usa MTU nel tunnel dell'interfaccia" - -msgid "Use TTL on tunnel interface" -msgstr "Usa TTL nel tunnel dell'interfaccia" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Usa flag broadcast" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Usa server DNS personalizzati" - -msgid "Use default gateway" -msgstr "Usa il gateway predefinito" - -msgid "Use gateway metric" -msgstr "Usa la metrica del gateway" - -msgid "Use routing table" -msgstr "Utilizzare tabella di instradamento" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Utilizzare il pulsante Aggiungi per aggiungere una nuova voce di " -"contratto. L'Indirizzo-MAC identifica l'host, l'Indirizzo-IPv4 specifica l'indirizzo fisso da utilizzare e il Nome Host è " -"assegnato come nome simbolico alla richiesta dell'host. L'opzionale " -"tempo di Contratto può essere usato per impostare un tempo di " -"contratto non-standard a uno specifico host, p.e. 12h, 3d o infinito." - -msgid "Used" -msgstr "Usato" - -msgid "Used Key Slot" -msgstr "Slot Chiave Usata" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Nome Utente" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs su %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs su %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Server VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Classe del Produttore da 'inviare al momento della richiesta DHCP" - -msgid "Verify" -msgstr "Verifica" - -msgid "Version" -msgstr "Versione" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Sistema Aperto WEP" - -msgid "WEP Shared Key" -msgstr "Chiave Condivisa WEP" - -msgid "WEP passphrase" -msgstr "frase di accesso WEP" - -msgid "WMM Mode" -msgstr "Modalità WMM" - -msgid "WPA passphrase" -msgstr "frase di accesso WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"La crittografia WPA richiede wpa_supplicant (per la modalità client) o " -"hostapd (per AP e modalità ad hoc) per essere installato." - -msgid "Waiting for changes to be applied..." -msgstr "In attesa delle modifiche da applicare ..." - -msgid "Waiting for command to complete..." -msgstr "In attesa del comando da completare..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Avviso" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Wireless" - -msgid "Wireless Adapter" -msgstr "Dispositivo Wireless" - -msgid "Wireless Network" -msgstr "Rete Wireless" - -msgid "Wireless Overview" -msgstr "Panoramica Wireless" - -msgid "Wireless Security" -msgstr "Sicurezza Wireless" - -msgid "Wireless is disabled" -msgstr "La rete Wireless è disattivata" - -msgid "Wireless is not associated" -msgstr "La rete Wireless è non associata" - -msgid "Wireless is restarting..." -msgstr "Riavvio della Wireless..." - -msgid "Wireless network is disabled" -msgstr "La rete Wireless è disattivata" - -msgid "Wireless network is enabled" -msgstr "La rete wireless è attivata" - -msgid "Write received DNS requests to syslog" -msgstr "Scrittura delle richiesta DNS ricevute nel syslog" - -msgid "Write system log to file" -msgstr "Scrivi registro di sistema su file" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"È possibile abilitare o disabilitare gli script di inizializzazione " -"installati qui. Le modifiche saranno applicate dopo il riavvio del " -"dispositivo
    Attenzione: Se si disattiva gli script di " -"inizializzazione essenziali come ad esempio la \"rete\", il dispositivo " -"potrebbe diventare inaccessibile!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"È necessario attivare JavaScript nel tuo browser o LuCI non funzionerà " -"correttamente." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "qualsiasi" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "ponte" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "crea:" - -msgid "creates a bridge over specified interface(s)" -msgstr "Crea un ponte sulle interfacce selezionate" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "disabilita" - -msgid "disabled" -msgstr "disabilitato" - -msgid "expired" -msgstr "scaduto" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"file dove vengono salvati i contratti DHCP dati" - -msgid "forward" -msgstr "inoltro" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "half-duplex" - -msgid "hidden" -msgstr "nascosto" - -msgid "hybrid mode" -msgstr "modo ibrido" - -msgid "if target is a network" -msgstr "se la destinazione è una rete" - -msgid "input" -msgstr "ingresso" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "File DNS locale" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "no" - -msgid "no link" -msgstr "Nessun collegamento" - -msgid "none" -msgstr "nessuna" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "spento" - -msgid "on" -msgstr "acceso" - -msgid "open" -msgstr "apri" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "instradato" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "etichettato" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "sconosciuto" - -msgid "unlimited" -msgstr "illimitato" - -msgid "unspecified" -msgstr "non specificato" - -msgid "unspecified -or- create:" -msgstr "non specificato - o - creato:" - -msgid "untagged" -msgstr "non etichettato" - -msgid "yes" -msgstr "Sì" - -msgid "« Back" -msgstr "« Indietro" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Attiva questa rete" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Dispositivo Wireless Hermes 802.11b" - -#~ msgid "Interface is shutting down..." -#~ msgstr "L'intefaccia si sta spegnendo..." - -#~ msgid "Interface reconnected" -#~ msgstr "Interfaccia ricollegata." - -#~ msgid "Interface shut down" -#~ msgstr "Interfaccia spenta" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "Vuoi davvero spegnere questa interfaccia \"%s\"? Potresti perdere " -#~ "l'accesso a questo router se stai usando questa interfaccia." - -#~ msgid "Reconnecting interface" -#~ msgstr "Sto ricollegando l'interfaccia" - -#~ msgid "Wireless restarted" -#~ msgstr "Wireless riavviato" - -#~ msgid "Wireless shut down" -#~ msgstr "Wireless spento" - -#~ msgid "DHCP Leases" -#~ msgstr "Contratti DHCP" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "Contratti DHCPv6" - -#~ msgid "" -#~ "Really shut down network?\\nYou might lose access to this device if you " -#~ "are connected via this interface." -#~ msgstr "" -#~ "Vuoi davvero spegnere questa interfaccia?\\nPotresti perdere l'accesso a " -#~ "questo router se sei connesso usando questa interfaccia." - -#~ msgid "" -#~ "Really shutdown interface \"%s\" ?\\nYou might lose access to this device " -#~ "if you are connected via this interface." -#~ msgstr "" -#~ "Vuoi davvero spegnere questa interfaccia \"%s\" ?\\nPotresti perdere " -#~ "l'accesso a questo router se stai usando questa interfaccia." diff --git a/luci-base/po/ja/base.po b/luci-base/po/ja/base.po deleted file mode 100644 index fd60f84da..000000000 --- a/luci-base/po/ja/base.po +++ /dev/null @@ -1,4134 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2018-07-20 15:27+0900\n" -"Last-Translator: INAGAKI Hiroshi \n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.0.8\n" -"Language-Team: \n" - -msgid "%.1f dB" -msgstr "%.1f dB" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s は複数のVLANにUntaggedしています!" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d 分幅, %d 秒間隔)" - -msgid "(%s available)" -msgstr "(%s 使用可能)" - -msgid "(empty)" -msgstr "(空)" - -msgid "(no interfaces attached)" -msgstr "(インターフェースが接続されていません)" - -msgid "-- Additional Field --" -msgstr "-- 追加項目 --" - -msgid "-- Please choose --" -msgstr "-- 選択してください --" - -msgid "-- custom --" -msgstr "-- 手動設定 --" - -msgid "-- match by device --" -msgstr "-- デバイスを指定 --" - -msgid "-- match by label --" -msgstr "-- ラベルを指定 --" - -msgid "-- match by uuid --" -msgstr "-- UUID を指定 --" - -msgid "-- please select --" -msgstr "-- 選択してください --" - -msgid "1 Minute Load:" -msgstr "過去1分の負荷:" - -msgid "15 Minute Load:" -msgstr "過去15分の負荷:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "464XLAT (CLAT)" - -msgid "5 Minute Load:" -msgstr "過去5分の負荷:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "802.11r 高速ローミング" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "802.11w アソシエーションSAクエリの最大タイムアウト時間です。" - -msgid "802.11w Association SA Query retry timeout" -msgstr "802.11w アソシエーションSAクエリの再試行タイムアウト時間です。" - -msgid "802.11w Management Frame Protection" -msgstr "802.11w 管理フレーム保護" - -msgid "802.11w maximum timeout" -msgstr "802.11w 最大タイムアウト" - -msgid "802.11w retry timeout" -msgstr "802.11w 再試行タイムアウト" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS クエリポート" - -msgid "DNS server port" -msgstr "DNS サーバーポート" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"リゾルバファイルの順番に、DNSサー" -"バーに問い合わせを行います" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-アドレス" - -msgid "IPv4-Gateway" -msgstr "IPv4-ゲートウェイ" - -msgid "IPv4-Netmask" -msgstr "IPv4-ネットマスク" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-アドレス又はネット" -"ワーク (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-ゲートウェイ" - -msgid "IPv6-Suffix (hex)" -msgstr "" -"IPv6-サフィックス (16進数)" - -msgid "LED Configuration" -msgstr "LED 設定" - -msgid "LED Name" -msgstr "LED 名" - -msgid "MAC-Address" -msgstr "MAC-アドレス" - -msgid "DUID" -msgstr "DUID" - -msgid "" -"Max. DHCP leases" -msgstr "" -"最大 DHCP リース" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"最大 EDNS0 パケットサイズ" - -msgid "Max. concurrent queries" -msgstr "最大 並列処理クエリ" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    注意: 編集前の crontab ファイルが空の場合、手動で cron サービスの再起動" -"を行う必要があります。" - -msgid "A43C + J43 + A43" -msgstr "A43C + J43 + A43" - -msgid "A43C + J43 + A43 + V43" -msgstr "A43C + J43 + A43 + V43" - -msgid "ADSL" -msgstr "ADSL" - -msgid "ANSI T1.413" -msgstr "ANSI T1.413" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP再試行しきい値" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATMブリッジ" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM仮想チャネル識別子 (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM仮想パス識別子 (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "ATMデバイス番号" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Access Concentrator" - -msgid "Access Point" -msgstr "アクセスポイント" - -msgid "Actions" -msgstr "動作" - -msgid "Active IPv4-Routes" -msgstr "" -"稼働中の IPv4-経路情報" - -msgid "Active IPv6-Routes" -msgstr "" -"稼働中の IPv6-経路情報" - -msgid "Active Connections" -msgstr "アクティブ コネクション" - -msgid "Active DHCP Leases" -msgstr "アクティブなDHCPリース" - -msgid "Active DHCPv6 Leases" -msgstr "アクティブなDHCPv6リース" - -msgid "Ad-Hoc" -msgstr "アドホック" - -msgid "Add" -msgstr "追加" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"hosts ファイルにより解決される名前にローカルドメイン サフィックスを付加しま" -"す。" - -msgid "Add new interface..." -msgstr "インターフェースの新規作成..." - -msgid "Additional Hosts files" -msgstr "追加のホストファイル" - -msgid "Additional servers file" -msgstr "追加のサーバー ファイル" - -msgid "Address" -msgstr "アドレス" - -msgid "Address to access local relay bridge" -msgstr "ローカル リレーブリッジにアクセスするためのIPアドレス" - -msgid "Administration" -msgstr "管理画面" - -msgid "Advanced Settings" -msgstr "詳細設定" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "警告" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "全てのサーバー" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "SSH パスワード認証を許可します。" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "AP モード動作時に、低 ACK(確認応答)状態の STA の切断を許可します。" - -msgid "Allow all except listed" -msgstr "リスト内の端末からのアクセスを禁止" - -msgid "Allow legacy 802.11b rates" -msgstr "レガシー 802.11b レートを許可" - -msgid "Allow listed only" -msgstr "リスト内の端末からのアクセスを許可" - -msgid "Allow localhost" -msgstr "ローカルホストを許可する" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"リモートホストがSSH転送されたローカルのポートに接続することを許可します。" - -msgid "Allow root logins with password" -msgstr "パスワードでの root ログインを許可" - -msgid "Allow the root user to login with password" -msgstr "パスワードを使用した root 権限でのログインを許可します。" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "許可されるIP" - -msgid "Always announce default router" -msgstr "常にデフォルト ルーターを通知する" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" -"セカンダリ チャンネルの重複にかかわらず、常に 40MHz チャンネルを使用します。" -"このオプションの使用は、 IEEE 802.11n-2009 に準拠しません!" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" -"利用可能なパブリック プレフィクスが無くても、デフォルトのルーターとして通知し" -"ます。" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "アノニマス マウント" - -msgid "Anonymous Swap" -msgstr "アノニマス スワップ" - -msgid "Antenna 1" -msgstr "アンテナ 1" - -msgid "Antenna 2" -msgstr "アンテナ 2" - -msgid "Antenna Configuration" -msgstr "アンテナ設定" - -msgid "Any zone" -msgstr "全てのゾーン" - -msgid "Apply request failed with status %h" -msgstr "適用リクエストはステータス %h により失敗しました" - -msgid "Apply unchecked" -msgstr "チェックなしの適用" - -msgid "Architecture" -msgstr "アーキテクチャ" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "インターフェースの割当て..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "アソシエーション済み端末" - -msgid "Associations" -msgstr "アソシエーション数" - -msgid "Auth Group" -msgstr "認証グループ" - -msgid "Authentication" -msgstr "認証" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Authoritative" - -msgid "Authorization Required" -msgstr "ログイン認証" - -msgid "Auto Refresh" -msgstr "自動更新" - -msgid "Automatic" -msgstr "自動" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "マウント実行前にファイルシステムのエラーを自動的にチェックします。" - -msgid "Automatically mount filesystems on hotplug" -msgstr "ホットプラグによってファイルシステムを自動的にマウントします。" - -msgid "Automatically mount swap on hotplug" -msgstr "ホットプラグによってスワップ パーティションを自動的にマウントします。" - -msgid "Automount Filesystem" -msgstr "ファイルシステム 自動マウント" - -msgid "Automount Swap" -msgstr "スワップ 自動マウント" - -msgid "Available" -msgstr "使用可" - -msgid "Available packages" -msgstr "インストール可能なパッケージ" - -msgid "Average:" -msgstr "平均値:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "戻る" - -msgid "Back to Overview" -msgstr "概要へ戻る" - -msgid "Back to configuration" -msgstr "設定へ戻る" - -msgid "Back to overview" -msgstr "概要へ戻る" - -msgid "Back to scan results" -msgstr "スキャン結果へ戻る" - -msgid "Backup" -msgstr "バックアップ" - -msgid "Backup / Flash Firmware" -msgstr "バックアップ / ファームウェア更新" - -msgid "Backup file list" -msgstr "バックアップファイル リスト" - -msgid "Bad address specified!" -msgstr "無効なアドレスです!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "ビーコン間隔" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"以下は、バックアップの際に含まれるファイルのリストです。このリストは、opkgに" -"よって認識されている設定ファイル、重要なベースファイル、ユーザーが設定したパ" -"ターンに一致したファイルの一覧です。" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" -"ワイルドカード アドレスではなく、特定のインターフェースのみにバインドします。" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "ビットレート" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "ブリッジ" - -msgid "Bridge interfaces" -msgstr "ブリッジ インターフェース" - -msgid "Bridge unit number" -msgstr "ブリッジ ユニット番号" - -msgid "Bring up on boot" -msgstr "デフォルトで起動する" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s 無線LANコントローラ" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 無線LANコントローラ" - -msgid "Buffered" -msgstr "バッファ" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"ビルド / ディストリビューション固有のフィード定義です。このファイルは" -"sysupgradeの際に引き継がれません。" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "CA証明書(空白の場合、初回の接続後に保存されます。)" - -msgid "CPU usage (%)" -msgstr "CPU使用率 (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "キャンセル" - -msgid "Category" -msgstr "カテゴリー" - -msgid "Chain" -msgstr "チェイン" - -msgid "Changes" -msgstr "変更" - -msgid "Changes applied." -msgstr "変更が適用されました。" - -msgid "Changes have been reverted." -msgstr "変更は取り消されました。" - -msgid "Changes the administrator password for accessing the device" -msgstr "デバイスの管理者パスワードを変更します" - -msgid "Channel" -msgstr "チャネル" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" -"チャンネル %d は、 %s 領域内では規制により利用できません。%d へ自動調整されま" -"した。" - -msgid "Check" -msgstr "チェック" - -msgid "Check filesystems before mount" -msgstr "マウント前にファイルシステムをチェックする" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" -"この無線から既存のネットワークを削除する場合、このオプションを有効にします。" - -msgid "Checksum" -msgstr "チェックサム" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"このインターフェースに設定するファイウォール ゾーンを選択してください。設" -"定しないを選択すると、設定済みのゾーンを削除します。また、作成" -"フィールドにゾーン名を入力すると、新しくゾーンを作成し、このインターフェース" -"に設定します。" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"無線インターフェースをアタッチするネットワークを選択してください。または、" -"作成欄を選択すると新しいネットワークを作成します。" - -msgid "Cipher" -msgstr "暗号化方式" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"\"バックアップ アーカイブの作成\"をクリックすると、現在の設定ファイルをtar形" -"式のアーカイブファイルとしてダウンロードします。" - -msgid "Client" -msgstr "クライアント" - -msgid "Client ID to send when requesting DHCP" -msgstr "DHCPリクエスト時に送信するクライアントID" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"設定した秒数後に、使用していない接続を閉じます。0を設定した場合、接続を維持し" -"ます" - -msgid "Close list..." -msgstr "リストを閉じる" - -msgid "Collecting data..." -msgstr "データ収集中です..." - -msgid "Command" -msgstr "コマンド" - -msgid "Common Configuration" -msgstr "一般設定" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" -"キーのインストールに使用される EAPOL キーフレームの再送信を無効にすることによ" -"り、クライアント サイドの Key Reinstallation Attacks (KRACK) を困難にします。" -"この回避策は、相互運用性の問題や、特に高負荷のトラフィック環境下におけるキー " -"ネゴシエーションの信頼性低下の原因となることがあります。" - -msgid "Configuration" -msgstr "設定" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "設定ファイルは保持されます。" - -msgid "Configuration has been applied." -msgstr "設定が適用されました。" - -msgid "Configuration has been rolled back!" -msgstr "設定はロールバックされました!" - -msgid "Confirmation" -msgstr "確認" - -msgid "Connect" -msgstr "接続" - -msgid "Connected" -msgstr "接続中" - -msgid "Connection Limit" -msgstr "接続制限" - -msgid "Connection attempt failed" -msgstr "接続の試行が失敗しました" - -msgid "Connections" -msgstr "ネットワーク接続" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" -"設定の変更を適用後、デバイスへのアクセスを回復できませんでした。もし IP アド" -"レスや無線のセキュリティ認証情報などのネットワーク関連の設定を変更した場合、" -"再接続が必要かもしれません。" - -msgid "Country" -msgstr "国" - -msgid "Country Code" -msgstr "国コード" - -msgid "Cover the following interface" -msgstr "インターフェースの指定" - -msgid "Cover the following interfaces" -msgstr "インターフェースの指定" - -msgid "Create / Assign firewall-zone" -msgstr "ファイアウォール ゾーンの作成 / 割り当て" - -msgid "Create Interface" -msgstr "インターフェースの作成" - -msgid "Create a bridge over multiple interfaces" -msgstr "複数のインタフェースを指定してブリッジを作成します" - -msgid "Critical" -msgstr "重大" - -msgid "Cron Log Level" -msgstr "Cronのログ出力レベル" - -msgid "Custom Interface" -msgstr "新しいインターフェース" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" -"プライベート フィードなどのカスタム フィード定義です。このファイルは" -"sysupgrade時に引き継ぐことができます。" - -msgid "Custom feeds" -msgstr "カスタム フィード" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" -"カスタム ファイル(証明書, スクリプト)がシステムに残るかもしれません。これを" -"防ぐには、まず最初に factory-reset を行います。" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"LED デバイスの挙動をカスタマイズ" -"します。" - -msgid "DHCP Server" -msgstr "DHCPサーバー" - -msgid "DHCP and DNS" -msgstr "DHCP 及び DNS" - -msgid "DHCP client" -msgstr "DHCP クライアント" - -msgid "DHCP-Options" -msgstr "DHCPオプション" - -msgid "DHCPv6 client" -msgstr "DHCPv6 クライアント" - -msgid "DHCPv6-Mode" -msgstr "DHCPv6-モード" - -msgid "DHCPv6-Service" -msgstr "DHCPv6-サービス" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNSフォワーディング" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "DNSSEC" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "DS-Lite AFTR アドレス" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "DSL ステータス" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "DTIM インターバル" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "デバッグ" - -msgid "Default %d" -msgstr "標準設定 %d" - -msgid "Default gateway" -msgstr "デフォルト ゲートウェイ" - -msgid "Default is stateless + stateful" -msgstr "デフォルトは ステートレス + ステートフル です。" - -msgid "Default state" -msgstr "標準状態" - -msgid "Define a name for this network." -msgstr "ネットワーク名を設定してください。" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"追加のDHCPオプションを設定します。(例:\"6,192.168.2.1,192.168.2.2\" と設定することで、クライアントに指定のDNSサーバーを通知します。)" - -msgid "Delete" -msgstr "削除" - -msgid "Delete this network" -msgstr "ネットワークを削除します" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "Delivery Traffic Indication Message インターバル" - -msgid "Description" -msgstr "詳細" - -msgid "Design" -msgstr "デザイン" - -msgid "Destination" -msgstr "宛先" - -msgid "Device" -msgstr "デバイス" - -msgid "Device Configuration" -msgstr "デバイス設定" - -msgid "Device is rebooting..." -msgstr "デバイスを再起動中です..." - -msgid "Device unreachable!" -msgstr "デバイスに到達できません" - -msgid "Device unreachable! Still waiting for device..." -msgstr "デバイスに到達できません!まだデバイスを待っています..." - -msgid "Diagnostics" -msgstr "診断機能" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "ディレクトリ" - -msgid "Disable" -msgstr "無効" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"このインターフェースではDHCP機能を使用しません。" - -msgid "Disable DNS setup" -msgstr "DNSセットアップを無効にする" - -msgid "Disable Encryption" -msgstr "暗号化を無効にする" - -msgid "Disable this network" -msgstr "このネットワークを無効化" - -msgid "Disabled" -msgstr "無効" - -msgid "Disabled (default)" -msgstr "無効(デフォルト)" - -msgid "Disassociate On Low Acknowledgement" -msgstr "低 Acknowledgement 時のアソシエーション解除" - -msgid "Discard upstream RFC1918 responses" -msgstr "RFC1918の応答を破棄します" - -msgid "Disconnection attempt failed" -msgstr "切断の試行が失敗しました" - -msgid "Dismiss" -msgstr "警告の除去" - -msgid "Displaying only packages containing" -msgstr "右記の文字列を含んだパッケージのみを表示中" - -msgid "Distance Optimization" -msgstr "距離の最適化" - -msgid "Distance to farthest network member in meters." -msgstr "最も遠い端末との距離(メートル)を設定してください。" - -msgid "Distribution feeds" -msgstr "ディストリビューション フィード" - -msgid "Diversity" -msgstr "ダイバシティ" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq は DHCP" -"サーバーと NATファイア" -"ウォールの為の DNSフォワーダーを複" -"合したサービスです。" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"無効なリプライをキャッシュしません (例:存在しないドメインからの返答など)" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "パブリック DNSサーバーが返答できなかったリクエストを転送しません" - -msgid "Do not forward reverse lookups for local networks" -msgstr "ローカル ネットワークへの逆引きを転送しません" - -msgid "Domain required" -msgstr "ドメイン必須" - -msgid "Domain whitelist" -msgstr "ドメイン ホワイトリスト" - -msgid "Don't Fragment" -msgstr "非フラグメント化" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"DNS名の無い DNSリクエストを転送しません" - -msgid "Down" -msgstr "下へ" - -msgid "Download and install package" -msgstr "パッケージのダウンロードとインストール" - -msgid "Download backup" -msgstr "バックアップ アーカイブのダウンロード" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear設定" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear は SSH ネットワークへのシェルア" -"クセスと統合された SCP サーバーを提供しま" -"す。" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "Dual-Stack Lite (RFC6333)" - -msgid "Dynamic DHCP" -msgstr "動的 DHCP" - -msgid "Dynamic tunnel" -msgstr "動的トンネル機能" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"クライアントに対して動的にDHCPアドレスを割り振ります。無効に設定した場合、静" -"的リースのみを行います。" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAPメソッド" - -msgid "Edit" -msgstr "編集" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" -"上記の設定データを直接編集してエラーを修正し、 \"保存\" ボタンを押してこの" -"ページをリロードします。" - -msgid "Edit this interface" -msgstr "インターフェースを編集" - -msgid "Edit this network" -msgstr "ネットワークを編集" - -msgid "Emergency" -msgstr "緊急" - -msgid "Enable" -msgstr "有効" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" -"IGMP スヌーピングの" -"有効化" - -msgid "Enable STP" -msgstr "STPを有効にする" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "HE.netの動的endpoint更新を有効にします" - -msgid "Enable IPv6 negotiation" -msgstr "IPv6 ネゴシエーションの有効化" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "PPPリンクのIPv6 ネゴシエーションを有効にする" - -msgid "Enable Jumbo Frame passthrough" -msgstr "ジャンボフレーム パススルーを有効にする" - -msgid "Enable NTP client" -msgstr "NTPクライアント機能を有効にする" - -msgid "Enable Single DES" -msgstr "シングルDESの有効化" - -msgid "Enable TFTP server" -msgstr "TFTPサーバーを有効にする" - -msgid "Enable VLAN functionality" -msgstr "VLAN機能を有効にする" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "WPS プッシュボタンを有効化するには、WPA(2)-PSKが必要です。" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "Key Reinstallation (KRACK) 対策の有効化" - -msgid "Enable learning and aging" -msgstr "ラーニング エイジング機能を有効にする" - -msgid "Enable mirroring of incoming packets" -msgstr "受信パケットのミラーリングを有効化" - -msgid "Enable mirroring of outgoing packets" -msgstr "送信パケットのミラーリングを有効化" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "カプセル化されたパケットの DF (Don't Fragment) フラグを有効にします。" - -msgid "Enable this mount" -msgstr "マウント設定を有効にする" - -msgid "Enable this network" -msgstr "このネットワークを有効化" - -msgid "Enable this swap" -msgstr "スワップ設定を有効にする" - -msgid "Enable/Disable" -msgstr "有効/無効" - -msgid "Enabled" -msgstr "有効" - -msgid "Enables IGMP snooping on this bridge" -msgstr "ブリッジの IGMP スヌーピングを有効にします" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" -"同一のモビリティ ドメイン(モビリティ グループ)に属するアクセスポイント間の" -"高速ローミングを有効にします。" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "スパニングツリー プロトコルを有効にする" - -msgid "Encapsulation mode" -msgstr "カプセル化モード" - -msgid "Encryption" -msgstr "暗号化モード" - -msgid "Endpoint Host" -msgstr "エンドポイント ホスト" - -msgid "Endpoint Port" -msgstr "エンドポイント ポート" - -msgid "Enter custom value" -msgstr "カスタム値を入力" - -msgid "Enter custom values" -msgstr "カスタム値を入力" - -msgid "Erasing..." -msgstr "消去中..." - -msgid "Error" -msgstr "エラー" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "イーサネットアダプタ" - -msgid "Ethernet Switch" -msgstr "イーサネットスイッチ" - -msgid "Exclude interfaces" -msgstr "除外インターフェース" - -msgid "Expand hosts" -msgstr "拡張ホスト設定" - -msgid "Expires" -msgstr "期限切れ" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"リースアドレスの有効時間を入力します。最小設定値は2分です。 (2m)." - -msgid "External" -msgstr "外部" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "外部システムログ サーバー" - -msgid "External system log server port" -msgstr "外部システムログ・サーバー ポート" - -msgid "External system log server protocol" -msgstr "外部システムログ・サーバー プロトコル" - -msgid "Extra SSH command options" -msgstr "拡張 SSHコマンドオプション" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "%d 秒以内の適用を確認できませんでした。ロールバック中です..." - -msgid "File" -msgstr "ファイル" - -msgid "Filename of the boot image advertised to clients" -msgstr "クライアントに通知するブートイメージのファイル名" - -msgid "Filesystem" -msgstr "ファイルシステム" - -msgid "Filter" -msgstr "フィルタ" - -msgid "Filter private" -msgstr "プライベートフィルター" - -msgid "Filter useless" -msgstr "" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" -"現在アタッチされている全てのファイルシステムとスワップを検索し、検出結果に基" -"づいてデフォルト設定を置き換えます。" - -msgid "Find and join network" -msgstr "ネットワークの検索と参加" - -msgid "Find package" -msgstr "パッケージを検索" - -msgid "Finish" -msgstr "終了" - -msgid "Firewall" -msgstr "ファイアウォール" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "ファイアウォール設定" - -msgid "Firewall Status" -msgstr "ファイアウォール ステータス" - -msgid "Firmware File" -msgstr "ファームウェア ファイル" - -msgid "Firmware Version" -msgstr "ファームウェア バージョン" - -msgid "Fixed source port for outbound DNS queries" -msgstr "DNSクエリを送信する送信元ポートを固定します" - -msgid "Flash Firmware" -msgstr "ファームウェアの更新" - -msgid "Flash image..." -msgstr "更新" - -msgid "Flash new firmware image" -msgstr "ファームウェアの更新" - -msgid "Flash operations" -msgstr "更新機能" - -msgid "Flashing..." -msgstr "更新中..." - -msgid "Force" -msgstr "強制" - -msgid "Force 40MHz mode" -msgstr "強制 40MHz モード" - -msgid "Force CCMP (AES)" -msgstr "CCMP (AES) を使用" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"別のDHCPサーバーが検出された場合でも、DHCPサーバー機能を強制的に起動します。" - -msgid "Force TKIP" -msgstr "TKIP を使用" - -msgid "Force TKIP and CCMP (AES)" -msgstr "TKIP 及びCCMP (AES) を使用" - -msgid "Force link" -msgstr "強制リンク" - -msgid "Force use of NAT-T" -msgstr "NAT-Tの強制使用" - -msgid "Form token mismatch" -msgstr "フォーム トークンの不一致" - -msgid "Forward DHCP traffic" -msgstr "DHCPトラフィックを転送する" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "ブロードキャスト トラフィックを転送する" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "転送モード" - -msgid "Fragmentation Threshold" -msgstr "フラグメンテーションしきい値" - -msgid "Frame Bursting" -msgstr "フレームバースト" - -msgid "Free" -msgstr "空き" - -msgid "Free space" -msgstr "ディスクの空き容量" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" -"WireGuard インターフェースとピアについての詳細情報: wireguard.com" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "GPRSのみ" - -msgid "Gateway" -msgstr "ゲートウェイ" - -msgid "Gateway address is invalid" -msgstr "無効なゲートウェイ アドレスです" - -msgid "Gateway ports" -msgstr "ゲートウェイ ポート" - -msgid "General Settings" -msgstr "一般設定" - -msgid "General Setup" -msgstr "一般設定" - -msgid "General options for opkg" -msgstr "opkgの一般設定" - -msgid "Generate Config" -msgstr "コンフィグ生成" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "バックアップ アーカイブの作成" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "802.11%s 無線LANコントローラ" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "入力されたパスワードが一致しません。パスワードは変更されませんでした!" - -msgid "Global Settings" -msgstr "全体設定" - -msgid "Global network options" -msgstr "グローバル ネットワークオプション" - -msgid "Go to password configuration..." -msgstr "パスワード設定へ移動..." - -msgid "Go to relevant configuration page" -msgstr "関連する設定ページへ移動" - -msgid "Group Password" -msgstr "グループ パスワード" - -msgid "Guest" -msgstr "ゲスト" - -msgid "HE.net password" -msgstr "HE.net パスワード" - -msgid "HE.net username" -msgstr "HE.net ユーザー名" - -msgid "HT mode (802.11n)" -msgstr "HT モード (802.11n)" - -msgid "Hang Up" -msgstr "再起動" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"このページではホスト名やタイムゾーンなどの基本的な設定を行うことが出来ます。" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "SSH公開鍵認証で使用するSSH公開鍵を1行づつペーストしてください。" - -msgid "Hide ESSID" -msgstr "ESSIDの隠匿" - -msgid "Host" -msgstr "ホスト" - -msgid "Host entries" -msgstr "ホスト エントリー" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" -"ホストIP または ネットワーク" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "ホスト名" - -msgid "Hostname to send when requesting DHCP" -msgstr "DHCPリクエスト時に送信するホスト名" - -msgid "Hostnames" -msgstr "ホスト名" - -msgid "Hybrid" -msgstr "ハイブリッド" - -msgid "IKE DH Group" -msgstr "IKE DHグループ" - -msgid "IP Addresses" -msgstr "IPアドレス" - -msgid "IP address" -msgstr "IPアドレス" - -msgid "IP address in invalid" -msgstr "無効な IP アドレスです" - -msgid "IP address is missing" -msgstr "IP アドレスがありません" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 ファイアウォール" - -msgid "IPv4 Upstream" -msgstr "IPv4 アップストリーム" - -msgid "IPv4 address" -msgstr "IPv4 アドレス" - -msgid "IPv4 and IPv6" -msgstr "IPv4及びIPv6" - -msgid "IPv4 assignment length" -msgstr "IPv4 割り当て長" - -msgid "IPv4 broadcast" -msgstr "IPv4 ブロードキャスト" - -msgid "IPv4 gateway" -msgstr "IPv4 ゲートウェイ" - -msgid "IPv4 netmask" -msgstr "IPv4 ネットマスク" - -msgid "IPv4 only" -msgstr "IPv4のみ" - -msgid "IPv4 prefix" -msgstr "IPv4 プレフィクス" - -msgid "IPv4 prefix length" -msgstr "IPv4 プレフィクス長" - -msgid "IPv4-Address" -msgstr "IPv4-アドレス" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "IPv4-in-IPv4 (RFC2003)" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 ファイアウォール" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "IPv6 設定" - -msgid "IPv6 ULA-Prefix" -msgstr "IPv6 ULA-プレフィクス" - -msgid "IPv6 Upstream" -msgstr "IPv6 アップストリーム" - -msgid "IPv6 address" -msgstr "IPv6 アドレス" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "IPv6 割り当て長" - -msgid "IPv6 gateway" -msgstr "IPv6 ゲートウェイ" - -msgid "IPv6 only" -msgstr "IPv6のみ" - -msgid "IPv6 prefix" -msgstr "IPv6 プレフィクス" - -msgid "IPv6 prefix length" -msgstr "IPv6 プレフィクス長" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "IPv6 サフィックス" - -msgid "IPv6-Address" -msgstr "IPv6-アドレス" - -msgid "IPv6-PD" -msgstr "IPv6-PD" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-over-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-over-IPv4 (6to4)" - -msgid "Identity" -msgstr "識別子" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "チェックした場合、暗号化は無効になります。" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"固定のデバイス ノード名のかわりに、設定されたUUIDを使用してマウントします" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"固定のデバイス ノード名のかわりに、設定されたパーティション ラベルを使用して" -"マウントします。" - -msgid "If unchecked, no default route is configured" -msgstr "チェックされていない場合、デフォルト ルートを設定しません" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "チェックされていない場合、通知されたDNSサーバー アドレスを無視します" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"物理メモリが不足する場合、使用されていないデータを一時的にスワップ デバイスに" -"スワップし、RAMの使用可能領域を増" -"やすことができます。ただし、スワップ デバイスはRAMから高速にアクセスすることができないため、データのスワップ" -"は非常に遅い処理であることに注意します。" - -msgid "Ignore /etc/hosts" -msgstr "/etc/hostsを無視" - -msgid "Ignore interface" -msgstr "インターフェースを無視する" - -msgid "Ignore resolve file" -msgstr "リゾルバ ファイルを無視する" - -msgid "Image" -msgstr "イメージ" - -msgid "In" -msgstr "イン" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "未使用時タイムアウト" - -msgid "Inbound:" -msgstr "受信:" - -msgid "Info" -msgstr "情報" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "起動スクリプト" - -msgid "Initscripts" -msgstr "起動スクリプト" - -msgid "Install" -msgstr "インストール" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" -"IPv6 の traceroute を使用するには、 iputils-traceroute6 をインストールしま" -"す。" - -msgid "Install package %q" -msgstr "%q パッケージをインストールします" - -msgid "Install protocol extensions..." -msgstr "プロトコル拡張機能をインストールします..." - -msgid "Installed packages" -msgstr "インストール済みパッケージ" - -msgid "Interface" -msgstr "インターフェース" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "インターフェース設定" - -msgid "Interface Overview" -msgstr "インターフェース一覧" - -msgid "Interface is reconnecting..." -msgstr "インターフェース再接続中..." - -msgid "Interface name" -msgstr "インターフェース名" - -msgid "Interface not present or not connected yet." -msgstr "インターフェースが存在しないか、接続していません" - -msgid "Interfaces" -msgstr "インターフェース" - -msgid "Internal" -msgstr "内部" - -msgid "Internal Server Error" -msgstr "内部サーバー エラー" - -msgid "Invalid" -msgstr "入力値が不正です" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "無効なVLAN IDです! IDは%dから%dまでの値のみ入力可能です。" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "無効なVLAN IDです! ユニークなIDを入力してください。" - -msgid "Invalid username and/or password! Please try again." -msgstr "" -"ユーザー名かパスワード、もしくは両方が不正です!もう一度入力してください。" - -msgid "Isolate Clients" -msgstr "クライアント間の分離" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"更新しようとしたイメージファイルはこのフラッシュメモリに適合しません。イメー" -"ジファイルを確認してください!" - -msgid "JavaScript required!" -msgstr "JavaScriptを有効にしてください!" - -msgid "Join Network" -msgstr "ネットワークに接続する" - -msgid "Join Network: Wireless Scan" -msgstr "ネットワークに接続する: 無線LANスキャン" - -msgid "Joining Network: %q" -msgstr "ネットワークに接続: %q" - -msgid "Keep settings" -msgstr "設定を保持する" - -msgid "Kernel Log" -msgstr "カーネル ログ" - -msgid "Kernel Version" -msgstr "カーネル バージョン" - -msgid "Key" -msgstr "暗号キー" - -msgid "Key #%d" -msgstr "キー #%d" - -msgid "Kill" -msgstr "強制終了" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP サーバー" - -msgid "LCP echo failure threshold" -msgstr "LCP echo 失敗数しきい値" - -msgid "LCP echo interval" -msgstr "LCP echo 送信間隔" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "ラベル" - -msgid "Language" -msgstr "言語" - -msgid "Language and Style" -msgstr "言語とスタイル" - -msgid "Latency" -msgstr "レイテンシー" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "リース時間" - -msgid "Lease validity time" -msgstr "リース有効時間" - -msgid "Leasefile" -msgstr "リースファイル" - -msgid "Leasetime remaining" -msgstr "残りリース時間" - -msgid "Leave empty to autodetect" -msgstr "空欄の場合、自動検知を行います" - -msgid "Leave empty to use the current WAN address" -msgstr "空欄の場合、現在のWANアドレスを使用します" - -msgid "Legend:" -msgstr "凡例:" - -msgid "Limit" -msgstr "割り当て数" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" -"DNS サービスを、現在 DNS を提供しているサブネットのインターフェースに限定しま" -"す。" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "待ち受けをこれらのインターフェースとループバックに制限します。" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "リンクオン" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"問い合わせを転送するDNS サーバーの" -"リストを設定します" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "認証用 SSH暗号キー ファイルのリスト" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "RFC1918の応答を許可するリスト" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "待ち受けインターフェース" - -msgid "Listen Port" -msgstr "待ち受けポート" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"指定したインターフェースでのみアクセスを有効にします。設定しない場合はすべて" -"のインタフェースが対象です" - -msgid "Listening port for inbound DNS queries" -msgstr "DNSクエリを受信するポート" - -msgid "Load" -msgstr "負荷" - -msgid "Load Average" -msgstr "システム平均負荷" - -msgid "Loading" -msgstr "ロード中" - -msgid "Local IP address is invalid" -msgstr "無効なローカル IP アドレスです" - -msgid "Local IP address to assign" -msgstr "割り当てるローカル IPアドレス" - -msgid "Local IPv4 address" -msgstr "ローカル IPv4 アドレス" - -msgid "Local IPv6 address" -msgstr "ローカル IPv6 アドレス" - -msgid "Local Service Only" -msgstr "ローカルサービスのみ" - -msgid "Local Startup" -msgstr "ローカル スタートアップ" - -msgid "Local Time" -msgstr "時刻" - -msgid "Local domain" -msgstr "ローカル ドメイン" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"ローカル ドメインの定義です。このドメインに一致する名前は転送が行われず、 " -"DHCP または hosts ファイルのみにより解決されます。" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"DHCP名とhostsファイルのエントリーに付される、ローカルドメイン サフィックスで" -"す。" - -msgid "Local server" -msgstr "ローカル サーバー" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "ローカライズクエリ" - -msgid "Locked to channel %s used by: %s" -msgstr "チャネル %s にロックされています。次で使用されています: %s" - -msgid "Log output level" -msgstr "ログ出力レベル" - -msgid "Log queries" -msgstr "ログ クエリ" - -msgid "Logging" -msgstr "ログ" - -msgid "Login" -msgstr "ログイン" - -msgid "Logout" -msgstr "ログアウト" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" -"ネットワークアドレスをオフセットとして、最小のアドレスを設定してください" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-アドレス" - -msgid "MAC-Address Filter" -msgstr "MAC-アドレス フィルタ" - -msgid "MAC-Filter" -msgstr "MAC-フィルタ" - -msgid "MAC-List" -msgstr "MAC-リスト" - -msgid "MAP / LW4over6" -msgstr "MAP / LW4over6" - -msgid "MAP rule is invalid" -msgstr "無効な MAP ルールです" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "MD5" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" -"以下のようなコマンドを使用して、ルート ファイルシステムを複製してください:" - -msgid "Manual" -msgstr "手動" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "DHCPリースの許可される最大数" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "並列DNSクエリの許可される最大数" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "EDNS.0 UDP パケットサイズの許可される最大数" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "モデムが準備完了状態になるまでの最大待ち時間" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" -"名前の長さは、自動的に含まれるプロトコル/ブリッジ プレフィックス (br-, " -"6in4-, pppoe- など)と合わせて最大15文字です。" - -msgid "Maximum number of leased addresses." -msgstr "リースするアドレスの最大数です" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "メモリー" - -msgid "Memory usage (%)" -msgstr "メモリ使用率 (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "メトリック" - -msgid "Mirror monitor port" -msgstr "ミラー監視ポート" - -msgid "Mirror source port" -msgstr "ミラー元ポート" - -msgid "Missing protocol extension for proto %q" -msgstr "プロトコル %qのプロトコル拡張が見つかりません" - -msgid "Mobility Domain" -msgstr "モビリティ ドメイン" - -msgid "Mode" -msgstr "モード" - -msgid "Model" -msgstr "モデル" - -msgid "Modem device" -msgstr "モデム デバイス" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "モデム初期化タイムアウト" - -msgid "Monitor" -msgstr "モニター" - -msgid "Mount Entry" -msgstr "マウント機能" - -msgid "Mount Point" -msgstr "マウントポイント" - -msgid "Mount Points" -msgstr "マウントポイント" - -msgid "Mount Points - Mount Entry" -msgstr "マウントポイント - マウント" - -msgid "Mount Points - Swap Entry" -msgstr "マウントポイント - スワップ" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"マウントポイントは、記憶デバイスがファイルシステムのどこに接続されているかを" -"表示しています。" - -msgid "Mount filesystems not specifically configured" -msgstr "明確に設定されていないファイルシステムをマウントします。" - -msgid "Mount options" -msgstr "マウントオプション" - -msgid "Mount point" -msgstr "マウントポイント" - -msgid "Mount swap not specifically configured" -msgstr "明確に設定されていないスワップ パーティションをマウントします。" - -msgid "Mounted file systems" -msgstr "マウント中のファイルシステム" - -msgid "Move down" -msgstr "下へ移動" - -msgid "Move up" -msgstr "上へ移動" - -msgid "Multicast address" -msgstr "マルチキャスト アドレス" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "NAT-T モード" - -msgid "NAT64 Prefix" -msgstr "NAT64 プレフィクス" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "NDP-プロキシ" - -msgid "NT Domain" -msgstr "NT ドメイン" - -msgid "NTP server candidates" -msgstr "NTPサーバー候補" - -msgid "Name" -msgstr "名前" - -msgid "Name of the new interface" -msgstr "新しいインターフェースの名前" - -msgid "Name of the new network" -msgstr "新しいネットワークの名前" - -msgid "Navigation" -msgstr "ナビゲーション" - -msgid "Netmask" -msgstr "ネットマスク" - -msgid "Network" -msgstr "ネットワーク" - -msgid "Network Utilities" -msgstr "ネットワーク ユーティリティ" - -msgid "Network boot image" -msgstr "ネットワークブート用イメージ" - -msgid "Network device is not present" -msgstr "ネットワーク デバイスが存在しません" - -msgid "Network without interfaces." -msgstr "インターフェースの無いネットワークです。" - -msgid "Next »" -msgstr "次 »" - -msgid "No DHCP Server configured for this interface" -msgstr "このインターフェースにはDHCPサーバーが設定されていません" - -msgid "No NAT-T" -msgstr "NAT-Tを使用しない" - -msgid "No chains in this table" -msgstr "チェイン内にルールがありません" - -msgid "No files found" -msgstr "ファイルが見つかりませんでした" - -msgid "No information available" -msgstr "情報がありません" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "ネガティブキャッシュを行なわない" - -msgid "No network configured on this device" -msgstr "このデバイスに設定されているネットワークがありません" - -msgid "No network name specified" -msgstr "ネットワーク名が設定されていません" - -msgid "No package lists available" -msgstr "パッケージ リストがありません" - -msgid "No password set!" -msgstr "パスワードが設定されていません!" - -msgid "No rules in this chain" -msgstr "チェイン内にルールがありません" - -msgid "No scan results available yet..." -msgstr "利用可能なスキャン結果はまだありません..." - -msgid "No zone assigned" -msgstr "ゾーンが設定されていません" - -msgid "Noise" -msgstr "ノイズ" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "ノイズ:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "非ワイルドカード" - -msgid "None" -msgstr "なし" - -msgid "Normal" -msgstr "標準" - -msgid "Not Found" -msgstr "見つかりません" - -msgid "Not associated" -msgstr "アソシエーションされていません" - -msgid "Not connected" -msgstr "未接続" - -msgid "Note: Configuration files will be erased." -msgstr "注意: 設定ファイルは消去されます。" - -msgid "Note: interface name length" -msgstr "注意: インターフェース名の長さ" - -msgid "Notice" -msgstr "注意" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" -"キャッシュされる DNS エントリーの数です。(最大 10000 件。 0の場合はキャッ" -"シュしません)" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "OPKG-設定" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "消灯時間" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"このページではネットワーク インターフェースの設定を行うことが出来ます。\"ブ" -"リッジインターフェース\"フィールドにチェックを付け、複数のネットワーク イン" -"ターフェースをリストから選択することで複数のインターフェースをブリッジするこ" -"とが出来ます。また、INTERFACE.VLANNRという表記によりVLANも使用することが出来ます。(: eth0.1)" - -msgid "On-State Delay" -msgstr "点灯時間" - -msgid "One of hostname or mac address must be specified!" -msgstr "1つ以上のホスト名またはMACアドレスを設定してください!" - -msgid "One or more fields contain invalid values!" -msgstr "1つ以上のフィールドに無効な値が設定されています!" - -msgid "One or more invalid/required values on tab" -msgstr "タブに1つ以上の 無効/必須 の値があります。" - -msgid "One or more required fields have no value!" -msgstr "1つ以上のフィールドに値が設定されていません!" - -msgid "Open list..." -msgstr "リストを開く" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "OpenConnect (CISCO AnyConnect)" - -msgid "Operating frequency" -msgstr "動作周波数" - -msgid "Option changed" -msgstr "変更されるオプション" - -msgid "Option removed" -msgstr "削除されるオプション" - -msgid "Optional" -msgstr "オプション" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" -"ピアのホストです。名前はインターフェースの起動前に解決されます。(オプショ" -"ン)" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "トンネル インターフェースのMaximum Transmission Unit(オプション)" - -msgid "Optional. Port of peer." -msgstr "ピアのポート(オプション)" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" -"キープアライブ メッセージの送信間隔(秒)です。既定値: 0。このデバイスがNAT" -"以下に存在する場合の推奨値は25です。(オプション)" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "発信パケットと受信パケットに使用されるUDPポート(オプション)" - -msgid "Options" -msgstr "オプション" - -msgid "Other:" -msgstr "その他:" - -msgid "Out" -msgstr "アウト" - -msgid "Outbound:" -msgstr "送信:" - -msgid "Output Interface" -msgstr "出力インターフェース" - -msgid "Override MAC address" -msgstr "MACアドレスを上書きする" - -msgid "Override MTU" -msgstr "MTUを上書きする" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "デフォルトのインターフェース名を上書きします。" - -msgid "Override the gateway in DHCP responses" -msgstr "DHCPレスポンス内のゲートウェイアドレスを上書きする" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"クライアントへ通知するネットマスクを上書きします。通常は、設定されているサブ" -"ネットから計算されます。" - -msgid "Override the table used for internal routes" -msgstr "内部ルートに使用されるテーブルを上書きします。" - -msgid "Overview" -msgstr "概要" - -msgid "Owner" -msgstr "所有者" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP パスワード" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP ユーザー名" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "PIN コードが拒否されました" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoAカプセル化" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "libiwinfo パッケージをインストールしてください!" - -msgid "Package lists are older than 24 hours" -msgstr "パッケージ リストは24時間以上前のものです" - -msgid "Package name" -msgstr "パッケージ名" - -msgid "Packets" -msgstr "パケット" - -msgid "Part of zone %q" -msgstr "ゾーン %q の一部" - -msgid "Password" -msgstr "パスワード" - -msgid "Password authentication" -msgstr "パスワード認証" - -msgid "Password of Private Key" -msgstr "秘密鍵のパスワード" - -msgid "Password of inner Private Key" -msgstr "秘密鍵のパスワード" - -msgid "Password successfully changed!" -msgstr "パスワードを変更しました" - -msgid "Password2" -msgstr "パスワード2" - -msgid "Path to CA-Certificate" -msgstr "CA証明書のパス" - -msgid "Path to Client-Certificate" -msgstr "クライアント証明書のパス" - -msgid "Path to Private Key" -msgstr "秘密鍵のパス" - -msgid "Path to inner CA-Certificate" -msgstr "CA 証明書のパス" - -msgid "Path to inner Client-Certificate" -msgstr "クライアント証明書のパス" - -msgid "Path to inner Private Key" -msgstr "秘密鍵のパス" - -msgid "Peak:" -msgstr "ピーク:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "ピアのアドレスがありません" - -msgid "Peers" -msgstr "ピア" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "再起動を実行" - -msgid "Perform reset" -msgstr "設定リセットを実行" - -msgid "Persistent Keep Alive" -msgstr "永続的なキープアライブ" - -msgid "Phy Rate:" -msgstr "物理レート:" - -msgid "Physical Settings" -msgstr "デバイス設定" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "パケット" - -msgid "Please enter your username and password." -msgstr "ユーザー名とパスワードを入力してください。" - -msgid "Policy" -msgstr "ポリシー" - -msgid "Port" -msgstr "ポート" - -msgid "Port status:" -msgstr "ポート ステータス:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "委任されたプレフィクス (PD)" - -msgid "Preshared Key" -msgstr "事前共有鍵" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"設定回数のLCP echo 確認失敗後、ピアノードがダウンしているものと見なします。0" -"を設定した場合、失敗しても無視します" - -msgid "Prevent listening on these interfaces." -msgstr "これらのインターフェースでの待ち受けを停止します。" - -msgid "Prevents client-to-client communication" -msgstr "クライアント同士の通信を制限します" - -msgid "Private Key" -msgstr "秘密鍵" - -msgid "Proceed" -msgstr "続行" - -msgid "Processes" -msgstr "プロセス" - -msgid "Profile" -msgstr "プロファイル" - -msgid "Prot." -msgstr "プロトコル" - -msgid "Protocol" -msgstr "プロトコル" - -msgid "Protocol family" -msgstr "プロトコルファミリ" - -msgid "Protocol of the new interface" -msgstr "新しいインターフェースのプロトコル" - -msgid "Protocol support is not installed" -msgstr "プロトコル サポートがインストールされていません" - -msgid "Provide NTP server" -msgstr "NTPサーバー機能を有効にする" - -msgid "Provide new network" -msgstr "新しいネットワークを設定する" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "擬似アドホック (ahdemo)" - -msgid "Public Key" -msgstr "公開鍵" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "クオリティ" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" -"アップストリームの利用可能な全 DNS " -"サーバを問い合わせます" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "RFC3947 NAT-Tモード" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTSしきい値" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "受信レート" - -msgid "Radius-Accounting-Port" -msgstr "Radiusアカウントサーバー ポート番号" - -msgid "Radius-Accounting-Secret" -msgstr "Radiusアカウント秘密鍵" - -msgid "Radius-Accounting-Server" -msgstr "Radiusアカウントサーバー" - -msgid "Radius-Authentication-Port" -msgstr "Radius認証サーバー ポート番号" - -msgid "Radius-Authentication-Secret" -msgstr "Radius認証秘密鍵" - -msgid "Radius-Authentication-Server" -msgstr "Radius認証サーバー" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"DHCPサーバーの設定" -"として/etc/ethers をロードします" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" -"本当にこのインターフェースを削除しますか?一度削除すると、元に戻すことはでき" -"ません!\n" -"もしこのインターフェースを経由して接続している場合、このデバイスにアクセスで" -"きなくなる場合があります" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"本当にこの無線ネットワークを削除しますか?一度削除すると、元に戻すことはできま" -"せん!\n" -"このネットワークを経由して接続している場合、デバイスにアクセスできなくなる場" -"合があります。" - -msgid "Really reset all changes?" -msgstr "本当に全ての変更をリセットしますか?" - -msgid "Really switch protocol?" -msgstr "本当にプロトコルを切り替えますか?" - -msgid "Realtime Connections" -msgstr "リアルタイム・コネクション" - -msgid "Realtime Graphs" -msgstr "リアルタイム グラフ" - -msgid "Realtime Load" -msgstr "リアルタイム・ロード" - -msgid "Realtime Traffic" -msgstr "リアルタイム・トラフィック" - -msgid "Realtime Wireless" -msgstr "リアルタイム・無線LAN" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "DNSリバインディング・プロテクション" - -msgid "Reboot" -msgstr "再起動" - -msgid "Rebooting..." -msgstr "再起動中..." - -msgid "Reboots the operating system of your device" -msgstr "デバイスのオペレーティングシステムを再起動します。" - -msgid "Receive" -msgstr "受信" - -msgid "Receiver Antenna" -msgstr "受信アンテナ" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "WireGuard インターフェースのIPアドレスです。(推奨)" - -msgid "Reconnect this interface" -msgstr "インターフェースの再接続" - -msgid "References" -msgstr "参照カウンタ" - -msgid "Relay" -msgstr "リレー" - -msgid "Relay Bridge" -msgstr "リレーブリッジ" - -msgid "Relay between networks" -msgstr "ネットワーク間のリレー設定" - -msgid "Relay bridge" -msgstr "リレーブリッジ" - -msgid "Remote IPv4 address" -msgstr "リモート IPv4アドレス" - -msgid "Remote IPv4 address or FQDN" -msgstr "リモート IPv4アドレス または FQDN" - -msgid "Remove" -msgstr "削除" - -msgid "Repeat scan" -msgstr "再スキャン" - -msgid "Replace entry" -msgstr "エントリーの置換" - -msgid "Replace wireless configuration" -msgstr "無線設定を置換する" - -msgid "Request IPv6-address" -msgstr "IPv6-アドレスのリクエスト" - -msgid "Request IPv6-prefix of length" -msgstr "リクエストするIPv6-プレフィクス長" - -msgid "Required" -msgstr "必須" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "DOCSIS 3.0を使用するいくつかのISPでは必要になります" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "このインターフェースに使用するBase64-エンコード 秘密鍵(必須)" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" -"'フル' バージョンの wpad/hostapd と、無線LANドライバーによるサポートが必要で" -"す。
    (2017年2月現在: ath9k 及び ath10k、LEDE内では mwlwifi 及び mt76)" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "リセット" - -msgid "Reset Counters" -msgstr "カウンタのリセット" - -msgid "Reset to defaults" -msgstr "標準設定にリセット" - -msgid "Resolv and Hosts Files" -msgstr "名前解決およびホストファイル設定" - -msgid "Resolve file" -msgstr "リゾルバファイル" - -msgid "Restart" -msgstr "再起動" - -msgid "Restart Firewall" -msgstr "ファイアウォールの再起動" - -msgid "Restart radio interface" -msgstr "無線インターフェースの再起動" - -msgid "Restore" -msgstr "復元" - -msgid "Restore backup" -msgstr "バックアップから復元する" - -msgid "Reveal/hide password" -msgstr "パスワードを表示する/隠す" - -msgid "Revert" -msgstr "元に戻す" - -msgid "Revert changes" -msgstr "変更の取り消し" - -msgid "Revert request failed with status %h" -msgstr "取り消しのリクエストはステータス %h により失敗しました" - -msgid "Reverting configuration…" -msgstr "設定を元に戻しています..." - -msgid "Root" -msgstr "ルート" - -msgid "Root directory for files served via TFTP" -msgstr "TFTP経由でファイルを取り扱う際のルートディレクトリ" - -msgid "Root preparation" -msgstr "ルートの準備" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "ルート タイプ" - -msgid "Router Advertisement-Service" -msgstr "ルーター アドバタイズメント-サービス" - -msgid "Router Password" -msgstr "ルーター パスワード" - -msgid "Routes" -msgstr "経路情報" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"特定のホスト又はネットワークに、どのインターフェース及びゲートウェイを通して" -"通信を行うか、経路情報を設定します。" - -msgid "Run a filesystem check before mounting the device" -msgstr "デバイスのマウントを行う前にファイルシステムチェックを行う" - -msgid "Run filesystem check" -msgstr "ファイルシステムチェックを行う" - -msgid "SHA256" -msgstr "SHA256" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "SSHアクセス" - -msgid "SSH server address" -msgstr "SSH サーバーアドレス" - -msgid "SSH server port" -msgstr "SSH サーバーポート" - -msgid "SSH username" -msgstr "SSH ユーザー名" - -msgid "SSH-Keys" -msgstr "SSHキー" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "保存" - -msgid "Save & Apply" -msgstr "保存 & 適用" - -msgid "Scan" -msgstr "スキャン" - -msgid "Scan request failed" -msgstr "スキャン要求が失敗しました" - -msgid "Scheduled Tasks" -msgstr "スケジュールタスク" - -msgid "Section added" -msgstr "追加されるセクション" - -msgid "Section removed" -msgstr "削除されるセクション" - -msgid "See \"mount\" manpage for details" -msgstr "詳細情報は \"mount\" のmanページを参照してください" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"設定された秒間隔でLCP echoリクエストを送信します。失敗数しきい値を設定した場" -"合のみ、機能が有効になります。" - -msgid "Separate Clients" -msgstr "クライアントの分離" - -msgid "Server Settings" -msgstr "サーバー設定" - -msgid "Service Name" -msgstr "サービス名" - -msgid "Service Type" -msgstr "サービスタイプ" - -msgid "Services" -msgstr "サービス" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "時刻同期設定" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "DHCPサーバーを設定" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "Short GI" - -msgid "Short Preamble" -msgstr "Short Preamble" - -msgid "Show current backup file list" -msgstr "現在のバックアップファイルのリストを表示する" - -msgid "Shutdown this interface" -msgstr "インターフェースを終了" - -msgid "Signal" -msgstr "信号強度" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "信号:" - -msgid "Size" -msgstr "サイズ" - -msgid "Size (.ipk)" -msgstr "サイズ (.ipk)" - -msgid "Size of DNS query cache" -msgstr "DNS クエリ キャッシュのサイズ" - -msgid "Skip" -msgstr "スキップ" - -msgid "Skip to content" -msgstr "コンテンツへ移動" - -msgid "Skip to navigation" -msgstr "ナビゲーションへ移動" - -msgid "Slot time" -msgstr "スロット時間" - -msgid "Software" -msgstr "ソフトウェア" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "無効な値が設定されているフィールドがあるため、保存できません。" - -msgid "Sorry, the object you requested was not found." -msgstr "申し訳ありません。リクエストされたオブジェクトは見つかりませんでした。" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "申し訳ありません。サーバーに予期せぬエラーが発生しました。" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"申し訳ありません。現在このボードではsysupgradeがサポートがされていないため、" -"ファームウェア更新は手動で行っていただく必要があります。wikiを参照して、この" -"デバイスのインストール手順を参照してください。" - -msgid "Source" -msgstr "送信元" - -msgid "Specifies the directory the device is attached to" -msgstr "デバイスが接続するディレクトリを設定します" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Dropbearの受信ポートを設定してください" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "暗号鍵を設定します。" - -msgid "Start" -msgstr "開始" - -msgid "Start priority" -msgstr "優先順位" - -msgid "Starting configuration apply…" -msgstr "設定の適用を開始しています..." - -msgid "Starting wireless scan..." -msgstr "無線LANのスキャンを開始しています..." - -msgid "Startup" -msgstr "スタートアップ" - -msgid "Static IPv4 Routes" -msgstr "IPv4 静的ルーティング" - -msgid "Static IPv6 Routes" -msgstr "IPv6 静的ルーティング" - -msgid "Static Leases" -msgstr "静的リース" - -msgid "Static Routes" -msgstr "静的ルーティング" - -msgid "Static address" -msgstr "静的アドレス" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"静的リース機能は、DHCPクライアントに対して固定のIPアドレス及び一時的なホスト" -"名をアサインします。また、クライアントは対応するリースを使用するホストがその1" -"台のみで、かつ静的なインターフェース設定にする必要があります。" - -msgid "Status" -msgstr "ステータス" - -msgid "Stop" -msgstr "停止" - -msgid "Strict order" -msgstr "問い合わせの制限" - -msgid "Submit" -msgstr "送信" - -msgid "Suppress logging" -msgstr "ログの抑制" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "これらのプロトコルのルーチン的操作についてのログを抑制します。" - -msgid "Swap" -msgstr "スワップ" - -msgid "Swap Entry" -msgstr "スワップ機能" - -msgid "Switch" -msgstr "スイッチ" - -msgid "Switch %q" -msgstr "スイッチ %q" - -msgid "Switch %q (%s)" -msgstr "スイッチ %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" -"スイッチ %q は不明なトポロジを持っています - VLAN 設定は正確ではないかもしれ" -"ません。" - -msgid "Switch Port Mask" -msgstr "スイッチポート マスク" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "プロトコルの切り替え" - -msgid "Sync with browser" -msgstr "ブラウザの時刻と同期" - -msgid "Synchronizing..." -msgstr "同期中..." - -msgid "System" -msgstr "システム" - -msgid "System Log" -msgstr "システムログ" - -msgid "System Properties" -msgstr "システム プロパティ" - -msgid "System log buffer size" -msgstr "システムログ バッファサイズ" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP設定" - -msgid "TFTP server root" -msgstr "TFTPサーバー・ルート" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "送信レート" - -msgid "Table" -msgstr "テーブル" - -msgid "Target" -msgstr "ターゲット" - -msgid "Target network" -msgstr "対象ネットワーク" - -msgid "Terminate" -msgstr "停止" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"デバイス設定セクションでは、チャネル、送信出力、アンテナ設定などの無" -"線ハードウェアの設定を行います。また、無線ハードウェアがマルチSSID機能をサ" -"ポートしている場合、これらの設定は全て共通の設定として扱われます。暗号化設定" -"や無線モードなどのネットワーク毎の設定は、インターフェース設定で設定" -"を行います。" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"libiwinfo-lua パッケージがインストールされていません。無線設定機能を" -"正しく動作させるために、このパッケージをインストールする必要があります。" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"使用可能な文字は右記の通りです: A-Z, a-z, " -"0-9, _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "設定ファイルは以下のエラーにより読み込めませんでした:" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" -"未適用の変更を適用後、デバイスは %d 秒以内に完了できなかった可能性がありま" -"す。これは、安全上の理由によりロールバックされる設定に起因するものです。それ" -"でも設定の変更が正しいと思う場合は、チェックなしの変更の適用を行ってくださ" -"い。もしくは、再度適用を試行する前にこの警告を除去して設定内容の編集を行う" -"か、現在動作している設定状況を維持するために未適用の変更を取り消してくださ" -"い。" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"デバイスファイルまたはパーティション( " -"/dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"記憶領域をフォーマットしているファイルシステムを指定します。( ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"更新用イメージがアップロードされました。以下はそのチェックサム及びファイルサ" -"イズです。オリジナルファイルと比較し、整合性を確認してください。
    \"続行" -"\"ボタンをクリックすると、更新処理を開始します。" - -msgid "The following changes have been reverted" -msgstr "以下の変更が取り消されました" - -msgid "The following rules are currently active on this system." -msgstr "このシステムでは、現在以下のルールが有効になっています。" - -msgid "The given network name is not unique" -msgstr "設定されたネットワーク名はユニークなものではありません" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"このハードウェアでは複数のESSIDを設定することができないため、続行した場合、設" -"定は既存の設定と置き換えられます。" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "IPv6 プレフィクスの長さ (bit) です。" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"ネットワーク ポートは、コンピュータが他と直接通信することができる複数の " -"VLAN にまとめることができま" -"す。 VLAN は、異なるネット" -"ワーク セグメントの分離にしばしば用いられます。通常、インターネットなどより上" -"位のネットワークへの接続に使用するアップリンク ポートと、ローカル ネットワー" -"ク用のその他のポートが存在します。" - -msgid "The selected protocol needs a device assigned" -msgstr "選択中のプロトコルを使用する場合、デバイスを設定する必要があります" - -msgid "The submitted security token is invalid or already expired!" -msgstr "送信されたセキュリティ トークンは無効もしくは期限切れです!" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "システムは設定領域を消去中です。完了後、自動的に再起動します。" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"システム更新中です。
    絶対に電源を切らないでください!
    ルーターの再" -"接続まで数分お待ち下さい。システムが更新されることにより、ルーターの設定が変" -"わる可能性があるため、再接続時にあなたのコンピュータのIPアドレスを変更しなけ" -"ればならない場合があります。" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"アップロードされたイメージファイルは、このボードでサポートされているフォー" -"マットではありません。このプラットフォームに適合したイメージファイルかどう" -"か、確認してください。" - -msgid "There are no active leases." -msgstr "リース中のIPアドレスはありません。" - -msgid "There are no changes to apply." -msgstr "適用する変更はありません。" - -msgid "There are no pending changes to revert!" -msgstr "復元が未完了の変更はありません!" - -msgid "There are no pending changes!" -msgstr "未完了の変更はありません!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"デバイスが設定されていません。\"デバイス設定\"タブで、ネットワークデバイスを" -"選択してください。" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"ルーターにパスワードが設定されていません。Webインターフェースの保護及びSSH" -"サービスを有効にするために、管理者パスワードを設定してください。" - -msgid "This IPv4 address of the relay" -msgstr "リレーの IPv4 アドレス" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" -"このファイルは、特定ドメイン用、または上位 DNS サーバーのための 'server=/domain/1.2.3.4' や 'server=1.2.3.4' " -"というような行を含めることができます。" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"以下は、sysupgrade中にバックアップ対象に含めるファイルとディレクトリのパター" -"ンリストです。/etc/config/内の設定ファイル及びその他特定の設定ファイルは自動" -"的に保持されます。" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"/etc/rc.localを表示しています。実行したいコマンドを'exit 0'行より上に入力して" -"ください。これらのコマンドはブートプロセスの最後に実行されます。" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" -"プロバイダからアサインされた、ローカルのエンドポイント アドレスです。通常、" -"...:2/64が終端に設定されます。" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"これはローカル ネットワーク内のみの DHCP です。" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"スケジュールタスク システムを使用することで、定期的に特定のタスクの実行を行う" -"ことが可能です。" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"このリストは現在システムで動作しているプロセスとそのステータスを表示していま" -"す。" - -msgid "This page gives an overview over currently active network connections." -msgstr "このページでは、現在アクティブなネットワーク接続を表示します。" - -msgid "This section contains no values yet" -msgstr "このセクションは未設定です。" - -msgid "Time Synchronization" -msgstr "時刻設定" - -msgid "Time Synchronization is not configured yet." -msgstr "時刻同期機能はまだ設定されていません。" - -msgid "Timezone" -msgstr "タイムゾーン" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"設定を復元するには、作成しておいたバックアップ アーカイブをアップロードしてく" -"ださい。設定のリセットを行う場合、\"設定リセット\"をクリックしてください。(た" -"だし、squashfsをお使いの場合のみ使用可能です)" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "合計" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "トラフィック" - -msgid "Transfer" -msgstr "転送" - -msgid "Transmission Rate" -msgstr "転送レート" - -msgid "Transmit" -msgstr "送信" - -msgid "Transmit Power" -msgstr "電波出力" - -msgid "Transmitter Antenna" -msgstr "送信アンテナ" - -msgid "Trigger" -msgstr "トリガー" - -msgid "Trigger Mode" -msgstr "トリガーモード" - -msgid "Tunnel ID" -msgstr "トンネル ID" - -msgid "Tunnel Interface" -msgstr "トンネルインターフェース" - -msgid "Tunnel Link" -msgstr "トンネルリンク" - -msgid "Tx-Power" -msgstr "送信電力" - -msgid "Type" -msgstr "タイプ" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "UMTSのみ" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USBデバイス" - -msgid "USB Ports" -msgstr "USB ポート" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "デバイス名を確定できません" - -msgid "Unable to determine external IP address" -msgstr "外部 IP アドレスを確定できません" - -msgid "Unable to determine upstream interface" -msgstr "アップストリーム インターフェースを確定できません" - -msgid "Unable to dispatch" -msgstr "ディスパッチできません" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "AFTR ホスト名を解決できません" - -msgid "Unable to resolve peer host name" -msgstr "ピアのホスト名を解決できません" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "不明" - -msgid "Unknown Error, password not changed!" -msgstr "不明なエラーです。パスワードは変更されていません!" - -msgid "Unknown error (%s)" -msgstr "不明なエラー (%s)" - -msgid "Unmanaged" -msgstr "Unmanaged" - -msgid "Unmount" -msgstr "アンマウント" - -msgid "Unsaved Changes" -msgstr "保存されていない変更" - -msgid "Unsupported MAP type" -msgstr "非対応の MAP タイプです" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "サポートされていないプロトコルタイプ" - -msgid "Up" -msgstr "上へ" - -msgid "Update lists" -msgstr "リストの更新" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"システムをアップデートする場合、sysupgrade機能に互換性のあるファームウェア イ" -"メージをここにアップロードしてください。\"設定の保持\"を有効にすると、現在の" -"設定を維持してアップデートを行います(互換性のあるファームウェア イメージが必" -"要)。" - -msgid "Upload archive..." -msgstr "アーカイブをアップロード..." - -msgid "Uploaded File" -msgstr "アップロード完了" - -msgid "Uptime" -msgstr "起動時間" - -msgid "Use /etc/ethers" -msgstr "/etc/ethers を使用する" - -msgid "Use DHCP gateway" -msgstr "DHCPゲートウェイを使用する" - -msgid "Use DNS servers advertised by peer" -msgstr "ピアから通知されたDNSサーバーを使用する" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "ISO/IEC 3166 alpha2の国コードを使用します。" - -msgid "Use MTU on tunnel interface" -msgstr "トンネル インターフェースのMTUを設定" - -msgid "Use TTL on tunnel interface" -msgstr "トンネル インターフェースのTTLを設定" - -msgid "Use as external overlay (/overlay)" -msgstr "外部オーバーレイとして使用する (/overlay)" - -msgid "Use as root filesystem (/)" -msgstr "ルート ファイルシステムとして使用する (/)" - -msgid "Use broadcast flag" -msgstr "ブロードキャスト フラグを使用する" - -msgid "Use builtin IPv6-management" -msgstr "ビルトインのIPv6-マネジメントを使用する" - -msgid "Use custom DNS servers" -msgstr "DNSサーバーを手動で設定" - -msgid "Use default gateway" -msgstr "デフォルト ゲートウェイを使用する" - -msgid "Use gateway metric" -msgstr "ゲートウェイ メトリックを使用する" - -msgid "Use routing table" -msgstr "ルーティング テーブルの使用" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"追加 ボタンを押して、新しくエントリーを作成してください。MAC-ア" -"ドレス はそのホストを識別し, IPv4-アドレス には払いだす固定のア" -"ドレスを設定します。また、ホスト名 はそのホストに対して一時的なホス" -"ト名をアサインします。" - -msgid "Used" -msgstr "使用" - -msgid "Used Key Slot" -msgstr "使用するキースロット" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "ユーザー証明書(PEM エンコード)" - -msgid "User key (PEM encoded)" -msgstr "ユーザー秘密鍵(PEM エンコード)" - -msgid "Username" -msgstr "ユーザー名" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "%q上のVLAN" - -msgid "VLANs on %q (%s)" -msgstr "%q上のVLAN (%s)" - -msgid "VPN Local address" -msgstr "VPN ローカルアドレス" - -msgid "VPN Local port" -msgstr "VPN ローカルポート" - -msgid "VPN Server" -msgstr "VPN サーバー" - -msgid "VPN Server port" -msgstr "VPN サーバーポート" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "VPN サーバー証明書 SHA1ハッシュ" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "VPNC (CISCO 3000 (またはその他の) VPN)" - -msgid "Vendor" -msgstr "ベンダー" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "DHCPリクエスト送信時のベンダークラスを設定" - -msgid "Verify" -msgstr "確認" - -msgid "Version" -msgstr "バージョン" - -msgid "Virtual dynamic interface" -msgstr "仮想ダイナミックインターフェース" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP オープンシステム" - -msgid "WEP Shared Key" -msgstr "WEP 共有キー" - -msgid "WEP passphrase" -msgstr "WEP 暗号フレーズ" - -msgid "WMM Mode" -msgstr "WMM モード" - -msgid "WPA passphrase" -msgstr "WPA 暗号フレーズ" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA暗号化を使用する場合、wpa_supplicant (クライアントモードの場合)又は " -"hostapd (アクセスポイント及びアドホック) がインストールされている必要がありま" -"す。" - -msgid "Waiting for changes to be applied..." -msgstr "変更を適用中です..." - -msgid "Waiting for command to complete..." -msgstr "コマンド実行中です..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "設定を適用中です... %d 秒" - -msgid "Waiting for device..." -msgstr "デバイスを起動中です..." - -msgid "Warning" -msgstr "警告" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "警告: 再起動すると消えてしまう、保存されていない設定があります!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "帯域幅" - -msgid "WireGuard VPN" -msgstr "WireGuard VPN" - -msgid "Wireless" -msgstr "無線" - -msgid "Wireless Adapter" -msgstr "無線アダプタ" - -msgid "Wireless Network" -msgstr "無線ネットワーク" - -msgid "Wireless Overview" -msgstr "無線LANデバイス一覧" - -msgid "Wireless Security" -msgstr "無線LANセキュリティ" - -msgid "Wireless is disabled" -msgstr "無線LAN機能は無効になっています" - -msgid "Wireless is not associated" -msgstr "無線LAN機能がアソシエーションされていません" - -msgid "Wireless is restarting..." -msgstr "無線LAN機能再起動中..." - -msgid "Wireless network is disabled" -msgstr "無線LAN機能は無効になっています" - -msgid "Wireless network is enabled" -msgstr "無線LAN機能は有効になっています" - -msgid "Write received DNS requests to syslog" -msgstr "受信したDNSリクエストをsyslogへ記録します" - -msgid "Write system log to file" -msgstr "システムログをファイルに書き込む" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"ルーターが起動する際のサービスの有効化/無効化を行うことができます。また、変更" -"は再起動後に適用されます。
    警告: \"network\"のような重要なサービ" -"スを無効にすると, ルーターにアクセスできなくなりますので、注意してください。" -"" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "JavaScriptを有効にしない場合、LuCIは正しく動作しません。" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"Internet Explorerが古すぎるため、このページを正しく表示することができません。" -"バージョン 7以上にアップグレードするか、FirefoxやOpera、Safariなど別のブラウ" -"ザーを使用してください。" - -msgid "any" -msgstr "全て" - -msgid "auto" -msgstr "自動" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "ブリッジ" - -msgid "create" -msgstr "作成" - -msgid "create:" -msgstr "作成:" - -msgid "creates a bridge over specified interface(s)" -msgstr "指定したインターフェースでブリッジを作成します" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "無効" - -msgid "disabled" -msgstr "無効" - -msgid "expired" -msgstr "期限切れ" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"DHCPリース情報を記" -"録するファイル" - -msgid "forward" -msgstr "転送" - -msgid "full-duplex" -msgstr "全二重" - -msgid "half-duplex" -msgstr "半二重" - -msgid "hidden" -msgstr "(不明)" - -msgid "hybrid mode" -msgstr "ハイブリッド モード" - -msgid "if target is a network" -msgstr "ターゲットがネットワークの場合" - -msgid "input" -msgstr "入力" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "ローカル DNSファイル" - -msgid "minutes" -msgstr "分" - -msgid "mixed WPA/WPA2" -msgstr "mixed WPA/WPA2" - -msgid "no" -msgstr "いいえ" - -msgid "no link" -msgstr "リンクなし" - -msgid "none" -msgstr "なし" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "オフ" - -msgid "on" -msgstr "オン" - -msgid "open" -msgstr "オープン" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "オーバーレイ" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "リレー モード" - -msgid "routed" -msgstr "routed" - -msgid "server mode" -msgstr "サーバー モード" - -msgid "stateful-only" -msgstr "ステートフルのみ" - -msgid "stateless" -msgstr "ステートレス" - -msgid "stateless + stateful" -msgstr "ステートレス + ステートフル" - -msgid "tagged" -msgstr "tagged" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "不明" - -msgid "unlimited" -msgstr "無期限" - -msgid "unspecified" -msgstr "設定しない" - -msgid "unspecified -or- create:" -msgstr "設定しない -又は- 作成:" - -msgid "untagged" -msgstr "untagged" - -msgid "yes" -msgstr "はい" - -msgid "« Back" -msgstr "« 戻る" - -#~ msgid "Activate this network" -#~ msgstr "このネットワークを有効にする" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Hermes 802.11b 無線LANコントローラ" - -#~ msgid "Interface is shutting down..." -#~ msgstr "インターフェース終了中..." - -#~ msgid "Interface reconnected" -#~ msgstr "インターフェースの再接続" - -#~ msgid "Interface shut down" -#~ msgstr "インターフェースの終了" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Prism2/2.5/3 802.11b 無線LANコントローラ" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "RaLink 802.11%s 無線LANコントローラ" - -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface" -#~ msgstr "" -#~ "本当にネットワークを停止しますか?\n" -#~ "このネットワークを経由して接続している場合、デバイスにアクセスできなくなる" -#~ "場合があります" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "本当にインターフェース \"%s\" を停止しますか?\n" -#~ "このインターフェースを経由して接続している場合、デバイスにアクセスできなく" -#~ "なる場合があります。" - -#~ msgid "Reconnecting interface" -#~ msgstr "インターフェース再接続中" - -#~ msgid "Shutdown this network" -#~ msgstr "ネットワークを終了" - -#~ msgid "Wireless restarted" -#~ msgstr "無線LAN機能の再起動" - -#~ msgid "Wireless shut down" -#~ msgstr "無線LAN機能停止" diff --git a/luci-base/po/ko/base.po b/luci-base/po/ko/base.po deleted file mode 100644 index 2d53437db..000000000 --- a/luci-base/po/ko/base.po +++ /dev/null @@ -1,3986 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:40+0200\n" -"PO-Revision-Date: 2012-04-03 08:44+0200\n" -"Last-Translator: Weongyo Jeong \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.4\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d 분 window, %d 초 간격)" - -msgid "(%s available)" -msgstr "" - -msgid "(empty)" -msgstr "" - -msgid "(no interfaces attached)" -msgstr "" - -msgid "-- Additional Field --" -msgstr "" - -msgid "-- Please choose --" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "1 분 부하:" - -msgid "15 Minute Load:" -msgstr "15 분 부하:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "5 분 부하:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "DNS query port" -msgstr "DNS query 포트" - -msgid "DNS server port" -msgstr "DNS 서버 포트" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-주소" - -msgid "IPv4-Gateway" -msgstr "" - -msgid "IPv4-Netmask" -msgstr "" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" - -msgid "IPv6-Gateway" -msgstr "" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED 설정" - -msgid "LED Name" -msgstr "LED 이름" - -msgid "MAC-Address" -msgstr "MAC-주소" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"최대 DHCP lease 수" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"최대 EDNS0 패킷 크기" - -msgid "Max. concurrent queries" -msgstr "최대 동시 처리 query 수" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "" - -msgid "Actions" -msgstr "관리 도구" - -msgid "Active IPv4-Routes" -msgstr "" -"Active IPv4-Route 경로" - -msgid "Active IPv6-Routes" -msgstr "" -"Active IPv6-Route 경로" - -msgid "Active Connections" -msgstr "Active 연결수" - -msgid "Active DHCP Leases" -msgstr "Active DHCP 임대 목록" - -msgid "Active DHCPv6 Leases" -msgstr "Active DHCPv6 임대 목록" - -msgid "Ad-Hoc" -msgstr "" - -msgid "Add" -msgstr "추가" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "새로운 인터페이스 추가..." - -msgid "Additional Hosts files" -msgstr "추가적인 Hosts 파일들" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "주소" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "관리" - -msgid "Advanced Settings" -msgstr "고급 설정" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "SSH 암호 인증을 허용합니다" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "암호를 이용한 root 접근 허용" - -msgid "Allow the root user to login with password" -msgstr "암호를 이용한 root 사용자 접근을 허용합니다" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "" - -msgid "Antenna 2" -msgstr "" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "연결된 station 들" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "" - -msgid "Authorization Required" -msgstr "인증이 필요합니다" - -msgid "Auto Refresh" -msgstr "자동 Refresh" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "Available packages" -msgstr "이용 가능한 패키지" - -msgid "Average:" -msgstr "평균:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "Back" -msgstr "뒤로" - -msgid "Back to Overview" -msgstr "개요로 이동" - -msgid "Back to configuration" -msgstr "설정으로 돌아가기" - -msgid "Back to overview" -msgstr "" - -msgid "Back to scan results" -msgstr "" - -msgid "Backup" -msgstr "백업" - -msgid "Backup / Flash Firmware" -msgstr "Firmware 백업 / Flash" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"아래는 백업할 파일 목록입니다. 이 목록은 opkg 이 수정되었다고 판단한 파일, " -"필수 기본 파일 그리고 사용자가 패턴 정의로 백업하도록 지정한 것로 이루어져 있" -"습니다." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "" - -msgid "Bridge interfaces" -msgstr "Bridge 인터페이스" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "부팅시 활성화" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "버퍼된 양" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"Build/distribution 지정 feed 목록입니다. 이 파일의 내용은 sysupgrade 시 초기" -"화됩니다." - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU 사용량 (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "Changes" -msgstr "변경 사항" - -msgid "Changes applied." -msgstr "" - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "장비 접근을 위한 관리자 암호를 변경합니다" - -msgid "Channel" -msgstr "" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"이 인터페이스에 할당하고자 하는 firewall zone 을 선택하세요. 연결된 zone 으로" -"부터 인터페이스를 제거하고 싶다면 unspecified 를 선택하세요. 새로" -"운 zone 을 정의하고 인터페이스 연결을 원한다면 create 항목을 입력하" -"세요." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"이 무선랜 인터페이스와 연결하고자 하는 네트워크(들)을 선택하세요. 혹은 새로" -"운 네트워크를 정의할려면 create 을 작성하세요." - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"현재 설정 파일에 대한 tar 아카이브 다운로드를 원한다면 \"아카이브 생성\" 버튼" -"을 클릭하세요." - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "DHCP 요청시 전송할 Client ID" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "목록 닫기..." - -msgid "Collecting data..." -msgstr "Data 를 수집중입니다..." - -msgid "Command" -msgstr "명령어" - -msgid "Common Configuration" -msgstr "공통 설정" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "설정" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "다시 확인" - -msgid "Connect" -msgstr "연결" - -msgid "Connected" -msgstr "연결 시간" - -msgid "Connection Limit" -msgstr "" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "연결" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "Firewall-zone 생성 / 할당" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "임의의 인터페이스" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" -"개인이 운영하는 feed 같은 정보를 입력할 수 있는 custom feed 목록입니다. 이 파" -"일은 sysupgrade 시 입력된 정보가 유지됩니다." - -msgid "Custom feeds" -msgstr "Custom feed 들" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"원한다면 장치에 부착된 LED 들의 " -"행동을 마음대로 변경할 수 있습니다." - -msgid "DHCP Server" -msgstr "DHCP 서버" - -msgid "DHCP and DNS" -msgstr "DHCP 와 DNS" - -msgid "DHCP client" -msgstr "DHCP client" - -msgid "DHCP-Options" -msgstr "DHCP-옵션들" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "기본 상태" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"추가적인 DHCP 옵션을 정의합니다. 예를 들어 " -"\"6,192.168.2.1,192.168.2.2\" 는 client 에게 다른 DNS 서버를 세" -"팅하도록 권고할 수 있습니다." - -msgid "Delete" -msgstr "삭제" - -msgid "Delete this network" -msgstr "이 네트워크를 삭제합니다" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "설명" - -msgid "Design" -msgstr "디자인" - -msgid "Destination" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Device Configuration" -msgstr "장치 설정" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "진단" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "비활성화" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"이 인터페이스에 대해 DHCP 기능을 비활성합니다." - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "" - -msgid "Distance to farthest network member in meters." -msgstr "" - -msgid "Distribution feeds" -msgstr "Distribution feed 들" - -msgid "Diversity" -msgstr "" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq 는 NAT 방화벽을 위" -"한 DHCP-서버와 " -"DNS-Forwarder 기능을 제공합니다." - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "패키지 다운로드 후 설치" - -msgid "Download backup" -msgstr "백업 다운로드" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear 는 SSH network shell 접근과 " -"SCP 서버 기능을 제공합니다" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"동적으로 DHCP 주소를 client 에게 할당합니다. 만약 비활성화시, static lease " -"가 설정된 client 만 주소 제공이 이루어집니다." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "수정" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "이 인터페이스를 수정합니다" - -msgid "Edit this network" -msgstr "이 네트워크를 수정합니다" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "활성화" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "STP 활성화" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "NTP client 활성화" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "TFTP 서버 활성화" - -msgid "Enable VLAN functionality" -msgstr "VLAN 기능 활성화" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "활성/비활성" - -msgid "Enabled" -msgstr "활성화됨" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "이 bridge 에 Spanning Tree Protocol 활성화합니다" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "암호화" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "" - -msgid "Ethernet Switch" -msgstr "Ethernet 스위치" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "만료 시간" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "임대한 주소의 유효 시간. 최소값은 2 분 (2m) 입니다." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "외부 system log 서버" - -msgid "External system log server port" -msgstr "외부 system log 서버 포트" - -msgid "External system log server protocol" -msgstr "외부 system log 서버 프로토콜" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Filter" -msgstr "필터" - -msgid "Filter private" -msgstr "" - -msgid "Filter useless" -msgstr "" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "네트워크 검색 및 연결합니다" - -msgid "Find package" -msgstr "패키지 찾기" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "방화벽" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "방화벽 설정" - -msgid "Firewall Status" -msgstr "방화벽 상태" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Firmware 버전" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "이미지로 Flash..." - -msgid "Flash new firmware image" -msgstr "새로운 firmware 이미지로 flash" - -msgid "Flash operations" -msgstr "Flash 작업" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "강제하기" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "다른 DHCP 서버가 탐지되더라도 이 네트워크에 DHCP 를 강제합니다." - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "이용 가능한 양" - -msgid "Free space" -msgstr "여유 공간" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "기본 설정" - -msgid "General Setup" -msgstr "기본 설정" - -msgid "General options for opkg" -msgstr "opkg 명령의 기본 옵션들" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "아카이브 생성" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "암호 설정 하기" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"여기서 호스트이름이나 시간대와 같은 기본적인 장비 설정을 할 수 있습니다." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"아래에 SSH public-key 인증을 위한 공개 SSH-Key 들 (한 줄당 한개) 를 입력할 " -"수 있습니다." - -msgid "Hide ESSID" -msgstr "ESSID 숨기기" - -msgid "Host" -msgstr "호스트" - -msgid "Host entries" -msgstr "호스트 목록들" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "Host-IP 혹은 Network" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "호스트이름" - -msgid "Hostname to send when requesting DHCP" -msgstr "DHCP 요청시 전달할 호스트이름" - -msgid "Hostnames" -msgstr "호스트이름" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP 주소" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "IPv4 방화벽" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "IPv4 주소" - -msgid "IPv4 and IPv6" -msgstr "IPv4 와 IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-주소" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 방화벽" - -msgid "IPv6 Neighbours" -msgstr "IPv6 Neighbour 들" - -msgid "IPv6 Settings" -msgstr "IPv6 설정" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-주소" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "체크하지 않을 경우, 기본 route 가 설정되지 않습니다" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "체크하지 않을 경우, 사용하도록 권장된 DNS 주소는 무시됩니다" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "/etc/hosts 파일 무시" - -msgid "Ignore interface" -msgstr "인터페이스 무시" - -msgid "Ignore resolve file" -msgstr "resolve 파일 무시" - -msgid "Image" -msgstr "이미지" - -msgid "In" -msgstr "In" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "Initscript 들" - -msgid "Install" -msgstr "설치" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "설치된 패키지" - -msgid "Interface" -msgstr "인터페이스" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "인터페이스 설정" - -msgid "Interface Overview" -msgstr "인터페이스 개요" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface name" -msgstr "인터페이스 이름" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interfaces" -msgstr "인터페이스" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "" - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "네트워크 연결" - -msgid "Join Network: Wireless Scan" -msgstr "네트워크 연결: 무선랜 스캔 결과" - -msgid "Joining Network: %q" -msgstr "네트워크 연결중: %q" - -msgid "Keep settings" -msgstr "설정 유지" - -msgid "Kernel Log" -msgstr "Kernel 로그" - -msgid "Kernel Version" -msgstr "Kernel 버전" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "언어" - -msgid "Language and Style" -msgstr "언어와 스타일" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "임대 시간" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "남아있는 임대 시간" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "제한" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" -"DNS 를 제공하기로한 subnet 인터페이스들에 대해서만 DNS 서비스를 제공합니다." - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"지정한 인터페이스에만 listening 하며 미지정시 모든 인터페이스에 적용됩니다" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "부하" - -msgid "Load Average" -msgstr "부하 평균" - -msgid "Loading" -msgstr "" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Local 시작 프로그램" - -msgid "Local Time" -msgstr "지역 시간" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Log output 레벨" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "로그인" - -msgid "Logout" -msgstr "로그아웃" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "임대되는 주소의 최소 시작점. (네트워크 주소로 부터의 offset)" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-주소" - -msgid "MAC-Address Filter" -msgstr "MAC-주소 필터" - -msgid "MAC-Filter" -msgstr "MAC-필터" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Active DHCP lease 건의 최대 허용 숫자" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "허용되는 최대 동시 DNS query 수" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "허용된 최대 EDNS.0 UDP 패킷 크기" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "임대될 수 있는 주소의 최대 숫자." - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "메모리" - -msgid "Memory usage (%)" -msgstr "메모리 사용량 (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Model" -msgstr "모델" - -msgid "Modem device" -msgstr "" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "NTP 서버 목록" - -msgid "Name" -msgstr "이름" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "네트워크" - -msgid "Network Utilities" -msgstr "네트워크 유틸리티" - -msgid "Network boot image" -msgstr "네트워크 boot 이미지" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "이 table 에는 정의된 chain 이 없음" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "이용 가능한 정보가 없습니다" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "암호 설정을 해주세요!" - -msgid "No rules in this chain" -msgstr "" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "노이즈" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "연결되지 않음" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "OPKG-Configuration" -msgstr "OPKG-설정" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"이 페이지에서는 네트워크 인터페이스를 설정할 수 있습니다. \"Bridge 인터페이스" -"\" 항목을 클릭하고, 공백으로 구분된 네트워크 인터페이스들의 이름을 적는 방식" -"으로 여러 인터페이스들을 bridge 할 수 있습니다. 또한 VLAN 표기법인 INTERFACE.VLANNR " -"(: eth0.1) 를 사용하실 수 " -"있습니다." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "목록 열람..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "동작 주파수" - -msgid "Option changed" -msgstr "변경된 option" - -msgid "Option removed" -msgstr "삭제된 option" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "MAC 주소 덮어쓰기" - -msgid "Override MTU" -msgstr "MTU 덮어쓰기" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "기본 인터페이스 이름을 덮어씁니다" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Client 에 전달될 netmask 를 덮어 쓸 수 있습니다. 보통 해당 값은 제공되는 " -"subnet 에 따라 자동 계산됩니다." - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "개요" - -msgid "Owner" -msgstr "" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "패키지 이름" - -msgid "Packets" -msgstr "" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "암호" - -msgid "Password authentication" -msgstr "암호 인증" - -msgid "Password of Private Key" -msgstr "" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "최고치:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "재부팅하기" - -msgid "Perform reset" -msgstr "Reset 하기" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Physical 설정" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Pkts." - -msgid "Please enter your username and password." -msgstr "사용자이름과 암호를 입력해 주세요." - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "포트" - -msgid "Port status:" -msgstr "포트 상태:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "" - -msgid "Processes" -msgstr "프로세스" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "프로토콜" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "새로운 네트워크를 추가합니다" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"/etc/ethers 파일을 읽어 DHCP-서버를 설정합니다" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "Really switch protocol?" -msgstr "정말 프로토콜 변경을 원하세요?" - -msgid "Realtime Connections" -msgstr "실시간 연결수" - -msgid "Realtime Graphs" -msgstr "실시간 그래프" - -msgid "Realtime Load" -msgstr "실시간 부하" - -msgid "Realtime Traffic" -msgstr "실시간 트래픽" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "재부팅" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "장치의 운영체제를 재부팅합니다" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "이 인터페이스를 재연결합니다" - -msgid "References" -msgstr "" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "제거" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "특정 ISP 들에 요구됨. 예: Charter (DOCSIS 3 기반)" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "초기화" - -msgid "Reset Counters" -msgstr "Counter 초기화" - -msgid "Reset to defaults" -msgstr "초기값으로 reset" - -msgid "Resolv and Hosts Files" -msgstr "Resolv 와 Hosts 파일" - -msgid "Resolve file" -msgstr "Resolve 파일" - -msgid "Restart" -msgstr "재시작" - -msgid "Restart Firewall" -msgstr "방화벽 재시작" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "복구" - -msgid "Restore backup" -msgstr "백업 복구" - -msgid "Reveal/hide password" -msgstr "암호 보이기/숨기기" - -msgid "Revert" -msgstr "변경 취소" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "TFTP 를 통해 제공되는 파일들의 root 디렉토리" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "라우터 암호" - -msgid "Routes" -msgstr "Route 경로" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Route 경로는 특정 호스트 혹은 네트워크가 사용해야 할 인터페이스와 gateway 정" -"보를 나타냅니다." - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "저장" - -msgid "Save & Apply" -msgstr "저장 & 적용" - -msgid "Scan" -msgstr "Scan 하기" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "작업 관리" - -msgid "Section added" -msgstr "추가된 section" - -msgid "Section removed" -msgstr "삭제된 section" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "서버 설정" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "서비스" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "현재 백업 파일 목록 보기" - -msgid "Shutdown this interface" -msgstr "이 인터페이스를 정지합니다" - -msgid "Signal" -msgstr "신호" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "Size" - -msgid "Size (.ipk)" -msgstr "크기 (.ipk)" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "" - -msgid "Skip to navigation" -msgstr "" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "소프트웨어" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Dropbear instance 의 listening 포트를 지정합니다" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "시작" - -msgid "Start priority" -msgstr "시작 우선순위" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "시작 프로그램" - -msgid "Static IPv4 Routes" -msgstr "Static IPv4 Route 경로" - -msgid "Static IPv6 Routes" -msgstr "Static IPv6 Route 경로" - -msgid "Static Leases" -msgstr "Static Lease 들" - -msgid "Static Routes" -msgstr "Static Route 경로" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Static Lease 는 DHCP client 에게 고정된 IP 주소와 symbolic hostname 을 할당" -"할 때 사용됩니다. 이 기능은 또한 지정된 host 에 대해서만 주소 임대를 하도록 " -"하는 non-dynamic 인터페이스 설정에도 사용됩니다." - -msgid "Status" -msgstr "상태" - -msgid "Stop" -msgstr "정지" - -msgid "Strict order" -msgstr "Strict order" - -msgid "Submit" -msgstr "제출하기" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "스위치" - -msgid "Switch %q" -msgstr "스위치 %q" - -msgid "Switch %q (%s)" -msgstr "스위치 %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "스위치 VLAN" - -msgid "Switch protocol" -msgstr "프로토콜 변경" - -msgid "Sync with browser" -msgstr "브라우저 시간대로 동기화" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "시스템" - -msgid "System Log" -msgstr "시스템 로그" - -msgid "System Properties" -msgstr "시스템 등록 정보" - -msgid "System log buffer size" -msgstr "System log 버퍼 크기" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "TFTP 설정" - -msgid "TFTP server root" -msgstr "TFTP 서버 root" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"장치 설정 섹션은 channel, transmit power 혹은 antenna 선택과 같은 물" -"리적인 설정 내용을 다룹니다. 이 설정은 (만약 radio 하드웨어가 multi-SSID 지" -"원이 가능하다면) 정의된 모든 무선 네트워크에 공통적으로 적용됩니다. 암호화 혹" -"은 operation mode 와 같은 각 네트워크 설정들은 인터페이스 설정에서 " -"다루어집니다." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been reverted" -msgstr "다음의 변경 사항들이 취소되었습니다" - -msgid "The following rules are currently active on this system." -msgstr "다음의 rule 들이 현재 이 시스템에 적용 중입니다." - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"이 장치의 네트워크 포트들은 컴퓨터끼리 직접 통신을 할 수 있도록 여러 VLAN 으로 구성될 수 있습니다. " -"VLAN은 종종 다른 네트워크 " -"segment 들을 분리하는데 사용되기도 합니다. 한 개의 uplink 포트가 인터넷에 연" -"결되어 있고 나머지 포트들은 local 네트워크로 연결되는 구성에 자주 사용됩니다." - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"이 공유기에 암호 설정이 되지 않았습니다. 웹 UI 와 SSH 부분을 보호하기 위해서 " -"꼭 root 암호를 설정해 주세요." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"이것은 sysupgrade 시 유지되어야 하는 파일과 디렉토리 목록에 대한 shell glob " -"패턴들입니다. /etc/config/ 하위의 수정된 파일이나 특정 다른 설정들은 자동적" -"으로 변경 사항이 보존됩니다." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"이것은 /etc/rc.local 파일의 내용입니다. 여기에 ('exit 0' 앞에) 부팅 절차가 " -"끝날 때 실행하고자 하는 명령들을 삽입하세요." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "아래는 예정된 작업들이 정의된 시스템 crontab 내용입니다." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"이 목록은 현재 실행중인 시스템 프로세스와 해당 상태에 대한 개요를 보여줍니다." - -msgid "This page gives an overview over currently active network connections." -msgstr "이 페이지는 현재 active 상태인 네트워크 연결을 보여줍니다." - -msgid "This section contains no values yet" -msgstr "이 section 은 아직 입력된 값이 없습니다" - -msgid "Time Synchronization" -msgstr "시간 동기화" - -msgid "Time Synchronization is not configured yet." -msgstr "시간 동기화가 아직 설정되지 않았습니다." - -msgid "Timezone" -msgstr "시간대" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"설정 파일을 복구하고자 한다면 이전에 백업하신 아카이브 파일을 여기로 업로드" -"할 수 있습니다. Firmware 의 초기 설정 reset 을 원한다면 \"Reset 하기\" 를 클" -"릭하세요. (squashfs 이미지들만 가능)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "총 이용 가능한 양" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "트래픽" - -msgid "Transfer" -msgstr "전송량" - -msgid "Transmission Rate" -msgstr "" - -msgid "Transmit" -msgstr "" - -msgid "Transmit Power" -msgstr "" - -msgid "Transmitter Antenna" -msgstr "" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "유형" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "알수없음" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "적용 안된 변경 사항" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"실행중인 firmware 변경을 하고자 한다면 여기에 sysupgrade 호환성이 유지되는 이" -"미지를 업로드하세요. 현재의 설정을 유지하고자 한다면 \"설정 유지\" 를 체크하" -"세요. (이를 지원하는 firmware 이미지 필요)" - -msgid "Upload archive..." -msgstr "아카이브 업로드..." - -msgid "Uploaded File" -msgstr "Uploaded File" - -msgid "Uptime" -msgstr "가동 시간" - -msgid "Use /etc/ethers" -msgstr "/etc/ethers 사용" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "Peer 가 권장한 DNS 서버 사용" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Broadcast flag 사용" - -msgid "Use builtin IPv6-management" -msgstr "자체 내장 IPv6-관리 기능 사용" - -msgid "Use custom DNS servers" -msgstr "임의의 DNS 서버 사용" - -msgid "Use default gateway" -msgstr "Default gateway 사용" - -msgid "Use gateway metric" -msgstr "Gateway metric 사용" - -msgid "Use routing table" -msgstr "Routing table 사용" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"새로운 항목을 추가하기 위해서는 추가 버튼을 사용하세요. MAC-주소" -"는 host 를 나타내며, IPv4-주소는 사용할 고정 주소를 나타내고, " -"요청하는 host 에 대해 hostname 이 symbolic name 으로 부여됩니다. 선" -"택 사항인 임대 시간은 해당 host 에만 해당되는 시각을 설정하는데 사용" -"될 수 있습니다. 예를 들어 12h, 3d 혹은 infinite 값들이 가능합니다." - -msgid "Used" -msgstr "" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "사용자이름" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "VLAN 설정: %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "DHCP 요청시 전송할 Vendor Class" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "버전" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "WMM Mode" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "변경 사항이 적용되기를 기다리는 중입니다..." - -msgid "Waiting for command to complete..." -msgstr "실행한 명령이 끝나기를 기다리는 중입니다..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "무선" - -msgid "Wireless Adapter" -msgstr "" - -msgid "Wireless Network" -msgstr "무선랜 네트워크" - -msgid "Wireless Overview" -msgstr "무선랜 개요" - -msgid "Wireless Security" -msgstr "무선랜 보안" - -msgid "Wireless is disabled" -msgstr "무선이 비활성화되어" - -msgid "Wireless is not associated" -msgstr "무선이 연결되어 있지 않습니다" - -msgid "Wireless is restarting..." -msgstr "무선랜이 재시작중입니다..." - -msgid "Wireless network is disabled" -msgstr "무선 네트워크가 꺼져 있음" - -msgid "Wireless network is enabled" -msgstr "무선 네트워크가 켜져 있음" - -msgid "Write received DNS requests to syslog" -msgstr "받은 DNS 요청 내용을 systlog 에 기록합니다" - -msgid "Write system log to file" -msgstr "System log 출력 파일 경로" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"이 메뉴에서 설치된 init script 를 활성화/비활성화 할 수 있습니다. 변경 사항" -"은 장치가 재부팅 될 때 적용되게 됩니다.
    경고: 만약 \"network\" " -"와 같은 중요 init script 를 비활성화 할 경우, 장치에 접속을 못하실 수 있습니" -"다!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "지정한 인터페이스(들)로 구성된 bridge 를 생성합니다" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "만료됨" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"할당된 DHCP-lease " -"정보가 저장되는 파일" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "Target 이 네트워크일 경우" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "local DNS 파일" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "link 없음" - -msgid "none" -msgstr "" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "unspecified -혹은- create:" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "" - -#~ msgid "Activate this network" -#~ msgstr "이 네트워를 활성화합니다" - -#~ msgid "Reconnecting interface" -#~ msgstr "인터페이스 재연결중입니다" - -#~ msgid "Shutdown this network" -#~ msgstr "이 네트워크를 shutdown 합니다" - -#~ msgid "Wireless restarted" -#~ msgstr "무선랜이 재시작되었습니다" - -#~ msgid "Wireless shut down" -#~ msgstr "무선랜이 shutdown 되었습니다" - -#~ msgid "DHCP Leases" -#~ msgstr "DHCP 임대 정보" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "DHCPv6 임대 정보" - -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "정말로 네트워크를 shutdown 하시겠습니까?\\n이 인터페이스를 통해 연결하였다" -#~ "면 접속이 끊어질 수 있습니다." - -#~ msgid "Sort" -#~ msgstr "순서" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "IPv4 WAN 상태" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "IPv6 WAN 상태" - -#~ msgid "Apply" -#~ msgstr "적용" - -#~ msgid "Save & Apply" -#~ msgstr "저장 & 적용" - -#~ msgid "Leasetime" -#~ msgstr "임대 시간" diff --git a/luci-base/po/ms/base.po b/luci-base/po/ms/base.po deleted file mode 100644 index 891db2e41..000000000 --- a/luci-base/po/ms/base.po +++ /dev/null @@ -1,3985 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-05-07 17:57+1000\n" -"PO-Revision-Date: 2010-05-07 17:57+1000\n" -"Last-Translator: Wai Chet Teow \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 1.1.1\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "" - -msgid "(%s available)" -msgstr "(%s sedia)" - -msgid "(empty)" -msgstr "" - -msgid "(no interfaces attached)" -msgstr "(tiada interface dipasang)" - -msgid "-- Additional Field --" -msgstr "-- Gelanggang Tambahan --" - -msgid "-- Please choose --" -msgstr "-- Sila pilih --" - -msgid "-- custom --" -msgstr "-- memperibadi --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "" - -msgid "15 Minute Load:" -msgstr "" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "" - -msgid "DNS server port" -msgstr "" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Alamat" - -msgid "IPv4-Gateway" -msgstr "IPv4-Pintu gerbang" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "IPv6 Host-Alamat atau Rangkaian (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Pintu gerbang" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Konfigurasi lampu LED" - -msgid "LED Name" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-Alamat" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "Pusat akses" - -msgid "Actions" -msgstr "Aksi" - -msgid "Active IPv4-Routes" -msgstr "Aktive IPv4-Routen" - -msgid "Active IPv6-Routes" -msgstr "Aktif IPv6-Laluan" - -msgid "Active Connections" -msgstr "Sambungan Aktif" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Tambah" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "" - -msgid "Additional Hosts files" -msgstr "" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "Pentadbiran" - -msgid "Advanced Settings" -msgstr "Tetapan Lanjutan" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Membenarkan pengesahan kata laluan SSH" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Izinkan semua kecualian yang disenaraikan" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Izinkan senarai saja" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Associated Stesen" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Authentifizierung" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Pengesahan" - -msgid "Authorization Required" -msgstr "Otorisasi Diperlukan" - -msgid "Auto Refresh" -msgstr "" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Boleh didapati" - -msgid "Available packages" -msgstr "" - -msgid "Average:" -msgstr "" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "Back" -msgstr "" - -msgid "Back to Overview" -msgstr "" - -msgid "Back to configuration" -msgstr "" - -msgid "Back to overview" -msgstr "Kembali ke ikhtisar" - -msgid "Back to scan results" -msgstr "Kembali ke keputusan scan" - -msgid "Backup" -msgstr "Sandaran" - -msgid "Backup / Flash Firmware" -msgstr "" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "Bridge" - -msgid "Bridge interfaces" -msgstr "Antara Muka Bridge" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Penggunaan CPU (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Batal" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Rantai" - -msgid "Changes" -msgstr "Laman" - -msgid "Changes applied." -msgstr "Laman diterapkan." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "" - -msgid "Channel" -msgstr "Saluran" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Jumlah disemak " - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "Pilih zon firewall yang anda ingin tetapkan untuk antar muka ini." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" - -#, fuzzy -msgid "Client" -msgstr "Pelanggan" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "Perintah" - -msgid "Common Configuration" -msgstr "" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Konfigurasi" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Pengesahan" - -msgid "Connect" -msgstr "" - -msgid "Connected" -msgstr "" - -msgid "Connection Limit" -msgstr "Sambungan Batas" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "Kod negara" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "Buat / Menetapkan dinding api-zon" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "Mengkustomisasi perilaku peranti LED jika mungkin." - -msgid "DHCP Server" -msgstr "" - -msgid "DHCP and DNS" -msgstr "" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "DHCP-Pilihan" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "Padam" - -msgid "Delete this network" -msgstr "" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Keterangan" - -msgid "Design" -msgstr "Disain" - -msgid "Destination" -msgstr "Tempat tujuan" - -msgid "Device" -msgstr "Alat" - -msgid "Device Configuration" -msgstr "" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "Jarak Optimasi" - -msgid "Distance to farthest network member in meters." -msgstr "Jarak ke rangkaian terjauh ahli dalam meter." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Keanekaragaman" - -# Nur für NAT-Firewalls? -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq adalah gabungan DHCP-Pelayan danDNS-" -"Forwarder untuk NAT " -"firewall" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Domain diperlukan" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "Jangan hantar permintaan DNS tanpa nama DNS" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Turun dan memasang pakej" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear menawarkan SSH kulit rangkaian aksesdan pelayan yang terintegrasi." - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "Dinamik DHCP" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-Kaedah" - -msgid "Edit" -msgstr "Sunting" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Mengaktifkan STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Aktifkan spanning Tree Protokol di jambatan ini" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "Enkripsi" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "Kesalahan" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet Adapter" - -msgid "Ethernet Switch" -msgstr "Ethernet Beralih" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "Fail Sistem" - -msgid "Filter" -msgstr "Penapis" - -msgid "Filter private" -msgstr "Penapis swasta" - -msgid "Filter useless" -msgstr "Penapis tak berguna" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "Cari pakej" - -msgid "Finish" -msgstr "Selesai" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Tetapan Firewall" - -msgid "Firewall Status" -msgstr "Status Firewall" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "Firmware Flash" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "Paksa" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "Fragmentasi Ambang" - -msgid "Frame Bursting" -msgstr "Bingkai Meletup" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "Setup Umum" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "Menuju ke halaman konfigurasi yang relevan" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Menutup" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Di sini anda boleh mengkonfigurasi aspek asas peranti anda seperti nama host " -"atau zon." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hide ESSID" -msgstr "Menyembunyikan ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Entri host" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "IP host atau rangkaian" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Nama Host" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Nama Host" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Alamat IP" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "Konfigurasi IPv6" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "Identiti" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Jika memori fizikal anda tidak cukup data yang boleh digunakan sementara " -"menukar ke peranti-penukar yang dihasilkan dalam jumlah RAM berguna yang " -"lebih tinggi. Berhati-hatilah bahawa penukaran data adalah proses yang " -"sangat lambat kerana peranti-penukar tidak boleh diakses dengan datarates " -"yang tinggi pada RAM." - -msgid "Ignore /etc/hosts" -msgstr "Mengabaikan /etc/hosts" - -msgid "Ignore interface" -msgstr "Abaikan antara muka" - -msgid "Ignore resolve file" -msgstr "Abaikan fail yang selesai" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "Masuk" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "" - -msgid "Install" -msgstr "Memasang" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interfaces" -msgstr "Interface" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "Tak Sah" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Username dan / atau password tak sah! Sila cuba lagi." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Tampak bahawa anda cuba untuk flash fail gambar yang tidak sesuai dengan " -"memori flash, sila buat pengesahan pada fail gambar!" - -msgid "JavaScript required!" -msgstr "" - -#, fuzzy -msgid "Join Network" -msgstr "Gabung Rangkaian" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "Log Kernel" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "Kunci" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "Tamatkan" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "Bahasa" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "Sewa fail" - -msgid "Leasetime remaining" -msgstr "Sisa masa penyewaan" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "Batas" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Link Pada" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Load" - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "Masa Tempatan" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Soalan tempatan" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "Log soalan" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Login" - -msgid "Logout" -msgstr "Logout" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "Penapis alamat MAC" - -msgid "MAC-Filter" -msgstr "Penapis MAC" - -msgid "MAC-List" -msgstr "Senarai MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Memori" - -msgid "Memory usage (%)" -msgstr "Penggunaan Memori (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metrik" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mode" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Alat modem" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "Mount Point" - -msgid "Mount Points" -msgstr "Mount Points" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Mount Points menentukan di mana titik peranti memori akan melekat pada fail " -"sistem" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Mounted fail sistems" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "Name" -msgstr "Nama" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "Nama rangkaian baru" - -msgid "Navigation" -msgstr "Navigation" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "Rangkaian" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "Kemudian »" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Tiada rantai dalam jadual ini" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "Tidak ada peraturan dalam rantai ini" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "Kebisingan" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "Baik" - -msgid "OPKG-Configuration" -msgstr "OPKG-Konfigurasi" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Pada halaman ini anda boleh mengkonfigurasi antara muka rangkaian. Anda " -"boleh menjembatani beberapa antara muka dengan menanda jambatan antara muka " -"gelanggang dan masukkan beberapa nama antara muka rangkaian dipisahkan " -"dengan ruang. Anda juga boleh menggunakan antara muka VLAN notasi. Seperti " -"eth0.1." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Pilihan" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "Keluar" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Keseluruhan" - -msgid "Owner" -msgstr "Pemilik" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "Pengkapsulan PPPoA" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "Nama pakej" - -msgid "Packets" -msgstr "Paket" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "Kata laluan" - -msgid "Password authentication" -msgstr "Kata laluan pengesahan" - -msgid "Password of Private Key" -msgstr "Kata Laluan Kunci Swasta" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Path ke CA-Sijil" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Path ke Kunci Swasta" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Lakukan reboot" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Tetapan Fizikal" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Pkts." - -msgid "Please enter your username and password." -msgstr "Sila masukkan username dan kata laluan anda." - -msgid "Policy" -msgstr "Dasar" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Mencegah komunikasi sesama Pelanggan" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Teruskan" - -msgid "Processes" -msgstr "Proses" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokol" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS-Ambang" - -# Ein / Aus, eingehend / ausgehend? -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "Baca /etc/ethers untuk mengkonfigurasikan DHCP-Server" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Reboot" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "Reboot sistem operasi peranti anda" - -msgid "Receive" -msgstr "Menerima" - -msgid "Receiver Antenna" -msgstr "Antena Penerima" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "References" -msgstr "Rujukan" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Menghapuskan" - -msgid "Repeat scan" -msgstr "Ulangi scan" - -msgid "Replace entry" -msgstr "Tukar entri" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Reset Loket" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "" - -msgid "Restart Firewall" -msgstr "Restart Firewall" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Mengembalikan" - -msgid "Restore backup" -msgstr "Kembalikan sandaran" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "Kembali" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "Laluan" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Laluan menentukan di mana interface dan gateway host atau rangkaian tertentu " -"yang boleh dicapai." - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Simpan" - -msgid "Save & Apply" -msgstr "Simpan & Melaksanakan" - -msgid "Scan" -msgstr "Scan" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Tugas Jadual" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "Rujuk \"mount\" laman manual untuk detail" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Pisahkan Pelanggan" - -msgid "Server Settings" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "Perkhidmatan" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Signal" -msgstr "Isyarat" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "Saiz" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Skip" - -msgid "Skip to content" -msgstr "Skip ke kadar" - -msgid "Skip to navigation" -msgstr "Skip ke navigation" - -msgid "Slot time" -msgstr "Slot masa" - -msgid "Software" -msgstr "Perisian" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "Sumber" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Mula" - -msgid "Start priority" -msgstr "" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "Laluan IPv4 Statik" - -msgid "Static IPv6 Routes" -msgstr "Laluan IPv6 Statik" - -msgid "Static Leases" -msgstr "Statische Einträge" - -msgid "Static Routes" -msgstr "Laluan Statik" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "Order Ketat" - -msgid "Submit" -msgstr "Menyerahkan" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "Beralih" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "Sistem" - -msgid "System Log" -msgstr "Log Sistem" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -# same as RX -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Meja" - -msgid "Target" -msgstr "Sasaran" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Menamatkan" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Karakter yang diizinkan adalah: A-Z, a-z, " -"0-9 dan _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "Fail peranti memori atau partisyen, (contohnya: /dev/sda)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "Failsistem yang digunakan untuk memformat memori (contohnya: ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Fail gambar flash telah di-upload. Berikut ini adalah checksum dan saiz fail " -"yang berdaftar, membandingkannya dengan fail gambar asli untuk memastikan " -"integriti data.
    Klik butang terus di bawah untuk memulakan prosedur " -"flash." - -msgid "The following changes have been reverted" -msgstr "Laman berikut telah kembali" - -msgid "The following rules are currently active on this system." -msgstr "Peraturan berikut sedang aktif pada sistem ini." - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Sistem ini sekarang mula flash.
    JANGAN TUTUP KUASA UNTUK PERANTI!
    Tunggu beberapa minit sehingga anda cuba untuk menyambung kembali. Mungkin " -"anda perlu mengemas kini alamat komputer anda untuk mencapai peranti lagi, " -"bergantung pada tetapan anda." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Format Fail gambar yang diupload tidak disokongkan. Pastikan anda memilih " -"fail format gambar yang generik untuk platform anda." - -msgid "There are no active leases." -msgstr "" - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "Ini adalah DHCP hanya dalam rangkaian tempatan." - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Ini adalah crontab sistem di mana tugas-tugas yang dijadualkan boleh " -"ditakrifkan." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Senarai ini memberikan gambaran lebih pada proses sistem yang sedang " -"berjalan dan statusnya." - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Laman ini memberikan gambaran lebih dari saat ini sambungan rangkaian yang " -"aktif." - -msgid "This section contains no values yet" -msgstr "Bahagian ini belum mengandungi nilai-nilai lagi" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "Zon masa" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "Lalu lintas" - -msgid "Transfer" -msgstr "Pemindahan" - -msgid "Transmission Rate" -msgstr "Kelajuan Penghantaran" - -msgid "Transmit" -msgstr "Pancar" - -msgid "Transmit Power" -msgstr "Daya Pancar" - -msgid "Transmitter Antenna" -msgstr "Antena Pemancar" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "Jenis" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Perubahan yang belum disimpan" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Uploaded Fail" - -msgid "Uptime" -msgstr "Masa Aktif" - -msgid "Use /etc/ethers" -msgstr "Guna /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Diguna" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Username" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "Versi" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "WMM Mod" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-Enkripsi memerlukan pemohan wpa (untuk mod pelanggan) atau hostapd " -"(untuk AP dan mod ad-hoc) yang akan dipasangkan." - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "Adapter Wayarles" - -msgid "Wireless Network" -msgstr "Rangkaian Wayarles" - -msgid "Wireless Overview" -msgstr "Gambaran keseluruhan Wayarles" - -msgid "Wireless Security" -msgstr "Keselamatan WLAN" - -msgid "Wireless is disabled" -msgstr "" - -msgid "Wireless is not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "mencipta jambatan di antara muka tertentu" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "mematikan" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "fail dimana DHCP-sewa akan disimpan" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "jika target itu ialah rangkaian" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "Fail DNS tempatan" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "tidak ada" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "Tidak dirinci -atau- buat:" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "« Kembali" - -#~ msgid "help" -#~ msgstr "Membantu" - -#~ msgid "Apply" -#~ msgstr "Melaksanakan" - -#~ msgid "Applying changes" -#~ msgstr "Melaksanakan perubahan" - -#~ msgid "Action" -#~ msgstr "Aksi" - -#~ msgid "Buttons" -#~ msgstr "Butang" - -#~ msgid "Handler" -#~ msgstr "Kawalan" - -#, fuzzy -#~ msgid "Maximum hold time" -#~ msgstr "Memegang masa maksimum" - -#, fuzzy -#~ msgid "Minimum hold time" -#~ msgstr "Memegang masa minimum" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "Path ke eksekusi yang mengendalikan acara butang" - -#, fuzzy -#~ msgid "Specifies the button state to handle" -#~ msgstr "Menentukan state butang untuk melaku" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "Laman ini membolehkan konfigurasi butang tindakan peribadi" - -#~ msgid "Leasetime" -#~ msgstr "Masa penyewaan" - -#~ msgid "automatic" -#~ msgstr "automatik" - -#~ msgid "AR Support" -#~ msgstr "AR-Penyokong" - -#~ msgid "Background Scan" -#~ msgstr "Latar Belakang Scan" - -#~ msgid "Compression" -#~ msgstr "Mampatan" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Mematikan pemasa HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Jangan menghantar jawapan penyelidikan" - -#~ msgid "Fast Frames" -#~ msgstr "Frame Cepat" - -#~ msgid "Maximum Rate" -#~ msgstr "Rate Maksimum" - -#~ msgid "Minimum Rate" -#~ msgstr "Rate Minimum" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicast Rate" - -#~ msgid "Outdoor Channels" -#~ msgstr "Saluran Outdoor" - -#~ msgid "Regulatory Domain" -#~ msgstr "Peraturan Domain" - -#~ msgid "Separate WDS" -#~ msgstr "Pisahkan WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Mod Turbo" - -#~ msgid "XR Support" -#~ msgstr "Sokongan XR" diff --git a/luci-base/po/no/base.po b/luci-base/po/no/base.po deleted file mode 100644 index d5c65659e..000000000 --- a/luci-base/po/no/base.po +++ /dev/null @@ -1,4205 +0,0 @@ -msgid "" -msgstr "" -"PO-Revision-Date: 2013-03-25 23:36+0200\n" -"Last-Translator: protx \n" -"Language: no\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d minutters vindu, %d sekunds intervall)" - -msgid "(%s available)" -msgstr "(%s Tilgjengelig)" - -msgid "(empty)" -msgstr "(tom)" - -msgid "(no interfaces attached)" -msgstr "(ingen grensesnitt tilknyttet)" - -msgid "-- Additional Field --" -msgstr "-- Tilleggs Felt --" - -msgid "-- Please choose --" -msgstr "-- Vennligst velg --" - -msgid "-- custom --" -msgstr "-- egendefinert --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "1 minutts belastning:" - -msgid "15 Minute Load:" -msgstr "15 minutters belastning:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "5 minutters belastning:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS spørre port" - -msgid "DNS server port" -msgstr "DNS server port" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS servere skal følge rekkefølgen " -"i oppslagsfilen ved spørringer" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Adresse" - -msgid "IPv4-Gateway" -msgstr "IPv4-Gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-Nettmaske" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Adresse eller " -"Nettverk (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Konfigurasjon" - -msgid "LED Name" -msgstr "LED Navn" - -msgid "MAC-Address" -msgstr "MAC-Adresse" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Maksimalt antall DHCP leier" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Maks. EDNS0 pakke størrelse" - -msgid "Max. concurrent queries" -msgstr "Maks. samtidige spørringer" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "APR terskel for nytt forsøk" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM Broer" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" -"ATM Virtuell kanal " -"identifikator (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" -"ATM Virtuell plasserings " -"identifikator (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM broer viser innkapslede ethernet i AAL5 forbindelser som virtuelle Linux-" -"nettverk grensesnitt, dette kan brukes sammen med DHCP eller PPP for å koble " -"seg mot en leverandørs nettverk." - -msgid "ATM device number" -msgstr "ATM enhetsnummer" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Tilgangskonsentrator" - -msgid "Access Point" -msgstr "Aksesspunkt" - -msgid "Actions" -msgstr "Handlinger" - -msgid "Active IPv4-Routes" -msgstr "Aktive IPv4-Ruter" - -msgid "Active IPv6-Routes" -msgstr "Aktive IPv6-Ruter" - -msgid "Active Connections" -msgstr "Aktive Tilkoblinger" - -msgid "Active DHCP Leases" -msgstr "Aktive DHCP Leier" - -msgid "Active DHCPv6 Leases" -msgstr "Aktive DHCPv6 Leier" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc (Uavhengig)" - -msgid "Add" -msgstr "Legg til" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Legg det lokale domenesuffikset til navn utgitt fra vertsfiler" - -msgid "Add new interface..." -msgstr "Legg til grensesnitt..." - -msgid "Additional Hosts files" -msgstr "Tilleggs vertsfiler" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresse" - -msgid "Address to access local relay bridge" -msgstr "Adresse for tilgang til lokal relébro" - -msgid "Administration" -msgstr "Administrasjon" - -msgid "Advanced Settings" -msgstr "Avanserte Innstillinger" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Varsle" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Tillat SSH passord godkjenning" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Tillat alle unntatt oppførte" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Tillat kun oppførte" - -msgid "Allow localhost" -msgstr "Tillat lokalvert" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Tillat eksterne verter å koble til lokale SSH videresendt porter" - -msgid "Allow root logins with password" -msgstr "Tillat root pålogginger med passord" - -msgid "Allow the root user to login with password" -msgstr "Tillat bruker root å logge inn med passord" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "Tillat oppstrøms svar i 127.0.0.0/8 nettet, f.eks for RBL tjenester" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antenne 1" - -msgid "Antenna 2" -msgstr "Antenne 2" - -msgid "Antenna Configuration" -msgstr "Antennekonfigurasjon" - -msgid "Any zone" -msgstr "Alle soner" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Tilknytt grensesnitt..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Tilkoblede Klienter" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Godkjenning" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritativ" - -msgid "Authorization Required" -msgstr "Autorisasjon er nødvendig" - -msgid "Auto Refresh" -msgstr "Automatisk oppdatering" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Tilgjengelig" - -msgid "Available packages" -msgstr "Tilgjengelige pakker" - -msgid "Average:" -msgstr "Gjennomsnitt:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Tilbake" - -msgid "Back to Overview" -msgstr "Tilbake til oversikt" - -msgid "Back to configuration" -msgstr "Tilbake til konfigurasjon" - -msgid "Back to overview" -msgstr "Tilbake til oversikt" - -msgid "Back to scan results" -msgstr "Tilbake til skanne resultat" - -msgid "Backup" -msgstr "Sikkerhetskopi" - -msgid "Backup / Flash Firmware" -msgstr "Sikkerhetskopiering/Firmware oppgradering" - -msgid "Backup file list" -msgstr "Sikkerhetskopier filliste" - -msgid "Bad address specified!" -msgstr "Ugyldig adresse oppgitt!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Nedenfor er listen med filer som blir sikkerthetskopiert. Listen består av " -"konfigurasjonsfiler som er merket av opkg, essensielle enhets filer og andre " -"filer valgt av bruker." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Overstyr falske NX Domener" - -msgid "Bridge" -msgstr "Bro" - -msgid "Bridge interfaces" -msgstr "Sammenkoble grensesnitt" - -msgid "Bridge unit number" -msgstr "Bro enhetsnummer" - -msgid "Bring up on boot" -msgstr "Slå på ved oppstart" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s Trådløs Kontroller" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 Trådløs Kontroller" - -msgid "Buffered" -msgstr "Bufret" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU forbruk (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Avbryt" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Lenke" - -msgid "Changes" -msgstr "Endringer" - -msgid "Changes applied." -msgstr "Endringer utført." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Endrer administrator passordet for tilgang til enheten" - -msgid "Channel" -msgstr "Kanal" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Kontroller" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Kontrollsum" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Velg brannmur sonen du ønsker å knytte til dette grensesnittet. Velg " -"uspesifisert for å fjerne grensesnittet fra den tilknyttede sonen. " -"Eller fyll ut Opprett feltet for å definere en ny sone og tilknytte " -"grensesnittet til det." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Velg det eller de nettverk du vil legge til dette trådløse grensesnittet, " -"eller fyll ut Opprett feltet for å definere et nytt nettverk." - -msgid "Cipher" -msgstr "Krypteringsmetode" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Klikk \"Opprett arkiv\" for å laste ned et tar arkiv av de gjeldende " -"konfigurasjons filer." - -msgid "Client" -msgstr "Klient" - -msgid "Client ID to send when requesting DHCP" -msgstr "Klient ID som sendes ved DHCP spørring" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Lukk inaktiver tilkoblinger etter angitt antall sekunder, bruk 0 for en " -"kontinuerlig tilkobling" - -msgid "Close list..." -msgstr "Lukk liste..." - -msgid "Collecting data..." -msgstr "Henter data..." - -msgid "Command" -msgstr "Kommando" - -msgid "Common Configuration" -msgstr "Vanlige Innstillinger" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Konfigurasjon" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Konfigurasjonsfiler vil bli bevart." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Bekreftelse" - -msgid "Connect" -msgstr "Koble til" - -msgid "Connected" -msgstr "Tilkoblet" - -msgid "Connection Limit" -msgstr "Tilkoblingsgrense (antall)" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Tilkoblinger" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "Land" - -msgid "Country Code" -msgstr "Landskode" - -msgid "Cover the following interface" -msgstr "Gjelder det følgende grensesnitt" - -msgid "Cover the following interfaces" -msgstr "Gjelder de følgende grensesnitt" - -msgid "Create / Assign firewall-zone" -msgstr "Opprett/Tildel brannmur sone" - -msgid "Create Interface" -msgstr "Opprett Grensesnitt" - -msgid "Create a bridge over multiple interfaces" -msgstr "Opprett en bro over flere grensesnitt" - -msgid "Critical" -msgstr "Kritisk" - -msgid "Cron Log Level" -msgstr "Cron logg nivå" - -msgid "Custom Interface" -msgstr "Egendefinerte Grensesnitt" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Tilpasser oppførselen til enhetens LEDs om mulig." - -msgid "DHCP Server" -msgstr "DHCP Server" - -msgid "DHCP and DNS" -msgstr "DHCP og DNS" - -msgid "DHCP client" -msgstr "DHCP klient" - -msgid "DHCP-Options" -msgstr "DHCP-Alternativer" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNS videresendinger" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Feilsøking" - -msgid "Default %d" -msgstr "Standard %d" - -msgid "Default gateway" -msgstr "Standard gateway" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Standard tilstand" - -msgid "Define a name for this network." -msgstr "Definer et navn for dette nettverket." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Definer flere DHCP valg, f.eks \"192.168.2.1,192.168.2.2\" som " -"annonserer forskjellige DNS servere til klientene." - -msgid "Delete" -msgstr "Fjern" - -msgid "Delete this network" -msgstr "Fjern dette nettverket" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Beskrivelse" - -msgid "Design" -msgstr "Design" - -msgid "Destination" -msgstr "Destinasjon" - -msgid "Device" -msgstr "Enhet" - -msgid "Device Configuration" -msgstr "Enhet Konfigurasjon" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Nettverksdiagnostikk" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Katalog" - -msgid "Disable" -msgstr "Deaktiver" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Deaktiver DHCP " -"for dette nettverket." - -msgid "Disable DNS setup" -msgstr "Deaktiver DNS oppsett" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Deaktivert" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Forkast oppstrøms RFC1918 svar" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "Viser bare pakker som inneholder" - -msgid "Distance Optimization" -msgstr "Avstand Optimalisering" - -msgid "Distance to farthest network member in meters." -msgstr "Avstand i meter til det medlem av nettverket som er lengst unna." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Antennevariasjon" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq er en kombinert DHCP-Server og DNS-" -"Fremsender for NAT " -"brannmurer" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Ikke cache negative svar, f.eks for ikke eksisterende domener" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Ikke videresend forespørsler som ikke kan besvares med offentlige " -"navneservere" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Ikke videresend reverserte oppslag for lokale nettverk" - -msgid "Domain required" -msgstr "Domene kreves" - -msgid "Domain whitelist" -msgstr "Domene hviteliste" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Ikke videresend DNS-Forespørsler " -"uten DNS-Navn" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Last ned og installer pakken" - -msgid "Download backup" -msgstr "Last ned sikkerhetskopi" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear Instans" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear tilbyr SSH-nettverks shell " -"tilgang og en integrert SCP server" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Dynamisk DHCP" - -msgid "Dynamic tunnel" -msgstr "Dynamisk tunnel" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Dynamisk tildeling av DHCP adresser til klienter. Om deaktivert, kan en kun " -"bruke klienter med statisk leie." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-metode" - -msgid "Edit" -msgstr "Endre" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Endre dette grensesnittet" - -msgid "Edit this network" -msgstr "Endre dette nettverket" - -msgid "Emergency" -msgstr "Krisesituasjon" - -msgid "Enable" -msgstr "Aktiver" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Aktiver STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Aktiver HE,net dynamisk endepunkt oppdatering" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Aktiver IPv6 på PPP lenke" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Aktiver Jumbo Frames gjennomgang" - -msgid "Enable NTP client" -msgstr "Aktiver NTP klient" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Aktiver TFTP server" - -msgid "Enable VLAN functionality" -msgstr "Aktiver VLAN funksjonalitet" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Aktiver 'læring' og 'aldring'" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Aktiver dette monteringspunktet" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "Aktiver denne swapenhet" - -msgid "Enable/Disable" -msgstr "Aktiver/Deaktiver" - -msgid "Enabled" -msgstr "Aktivert" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Aktiverer Spanning Tree Protocol på denne broen" - -msgid "Encapsulation mode" -msgstr "Innkapsling modus" - -msgid "Encryption" -msgstr "Kryptering" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Sletter..." - -msgid "Error" -msgstr "Feil" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet Tilslutning" - -msgid "Ethernet Switch" -msgstr "Ethernet Svitsj" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Utvid vertsliste" - -msgid "Expires" -msgstr "Utgår" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "Utløpstid på leide adresser, minimum er 2 minutter (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Ekstern systemlogg server" - -msgid "External system log server port" -msgstr "Ekstern systemlogg server port" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Fil" - -msgid "Filename of the boot image advertised to clients" -msgstr "Filnavn fra boot image annonsert til klienter" - -msgid "Filesystem" -msgstr "Filsystem" - -msgid "Filter" -msgstr "Filter" - -msgid "Filter private" -msgstr "Filtrer private" - -msgid "Filter useless" -msgstr "Filtrer ubrukelige" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Finn og koble til nettverk" - -msgid "Find package" -msgstr "Finn pakke" - -msgid "Finish" -msgstr "Fullfør" - -msgid "Firewall" -msgstr "Brannmur" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Brannmur Innstillinger" - -msgid "Firewall Status" -msgstr "Brannmur Status" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Firmware Versjon" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Fast kilde port for utgående DNS-spørringer" - -msgid "Flash Firmware" -msgstr "Firmware Oppradering" - -msgid "Flash image..." -msgstr "Flash firmware..." - -msgid "Flash new firmware image" -msgstr "Flash nytt firmware image" - -msgid "Flash operations" -msgstr "Flash operasjoner" - -msgid "Flashing..." -msgstr "Flasher..." - -msgid "Force" -msgstr "Bruk" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Bruk CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"Bruk DHCP i dette nettverket, selv om en annen DHCP server er oppdaget." - -msgid "Force TKIP" -msgstr "Bruk TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Bruk TKIP og CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Videresend DHCP trafikk" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Videresend kringkastingstrafikk" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Videresending modus" - -msgid "Fragmentation Threshold" -msgstr "Fragmenterings Terskel" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Ledig" - -msgid "Free space" -msgstr "Ledig plass" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Kun GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Gateway porter" - -msgid "General Settings" -msgstr "Generelle Innstillinger" - -msgid "General Setup" -msgstr "Generelt Oppsett" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Opprett arkiv" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Generell 802.11%s Trådløs Kontroller" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Det oppgitte passordet var ikke korrekt, passord ble ikke endret!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Gå til passord konfigurasjon..." - -msgid "Go to relevant configuration page" -msgstr "Gå til relevant konfigurasjonen side" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "HE.net passord" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Slå av" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Her kan du konfigurere grunnleggende aspekter av enheten som f.eks. dens " -"vertsnavn eller tidssone." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Her kan du lime inn felles SSH-nøkler(en per linje), for SSH godkjenning." - -msgid "Hide ESSID" -msgstr "Skjul ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Vertsoppføringer" - -msgid "Host expiry timeout" -msgstr "Verts utløpstid" - -msgid "Host-IP or Network" -msgstr "" -"Verts-IP eller Nettverk" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Vertsnavn" - -msgid "Hostname to send when requesting DHCP" -msgstr "Vertsnavn som sendes ved DHCP forespørsel" - -msgid "Hostnames" -msgstr "Vertsnavn" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP adresse" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 Brannmur" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "IPv4 adresse" - -msgid "IPv4 and IPv6" -msgstr "IPv4 og IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "IPv4 kringkasting" - -msgid "IPv4 gateway" -msgstr "IPv4 gateway" - -msgid "IPv4 netmask" -msgstr "IPv4 nettmaske" - -msgid "IPv4 only" -msgstr "Kun IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "IPv4 prefikslengde" - -msgid "IPv4-Address" -msgstr "IPv4-Adresse" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 Brannmur" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "IPv6 adresse" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6 gateway" - -msgid "IPv6 only" -msgstr "Kun IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6 prefiks" - -msgid "IPv6 prefix length" -msgstr "IPv6 prefikslengde" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-Adresse" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-i-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-over-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-over-IPv4 (6til4)" - -msgid "Identity" -msgstr "Identitet" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "Hvis oppgitt vil denne enhet monteres ut fra dens UUID" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "Hvis oppgitt vil denne enheten bli montert utfra dens Volumnavn" - -msgid "If unchecked, no default route is configured" -msgstr "Dersom ikke avmerket blir ingen standard rute konfigurert" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Dersom ikke avmerket blir de annonserte DNS server adresser ignorert" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Om ruterens fysiske minne er utilstrekkelig, ubrukte data kan midlertidig " -"gjøres om til en swap-enhet som gir deg mere tilgjengelig RAM. Vær oppmerksom på at bruk av swap er " -"mye langsommere en RAM." - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "Ignorer grensesnitt" - -msgid "Ignore resolve file" -msgstr "Ignorer oppslagsfil" - -msgid "Image" -msgstr "Firmware" - -msgid "In" -msgstr "i" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Tidsavbrudd etter innaktivitet" - -msgid "Inbound:" -msgstr "Innkommende:" - -msgid "Info" -msgstr "Informasjon" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Oppstartskript" - -msgid "Initscripts" -msgstr "Oppstartsskript" - -msgid "Install" -msgstr "Installer" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Installer pakken %q" - -msgid "Install protocol extensions..." -msgstr "Installer protokoll utvidelser..." - -msgid "Installed packages" -msgstr "Installerte pakker" - -msgid "Interface" -msgstr "Grensesnitt" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Grensesnitt Konfigurasjon" - -msgid "Interface Overview" -msgstr "Grensesnitt Oversikt" - -msgid "Interface is reconnecting..." -msgstr "Grensesnittet kobler til igjen..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Grensesnittet er ikke tilgjengelig eller er ikke tilknyttet." - -msgid "Interfaces" -msgstr "Grensesnitt" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Intern server feil" - -msgid "Invalid" -msgstr "Ugyldig" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "Ugyldig VLAN ID gitt! Bare IDer mellom %d og %d er tillatt." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Ugyldig VLAN ID gitt! Bare unike ID'er er tillatt" - -msgid "Invalid username and/or password! Please try again." -msgstr "Ugyldig brukernavn og/eller passord! Vennligst prøv igjen." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Det virker som du prøver å flashe med en firmware som ikke passer inn i " -"flash-minnet, vennligst kontroller firmware filen!" - -msgid "JavaScript required!" -msgstr "JavaScript kreves!" - -msgid "Join Network" -msgstr "Koble til nettverket" - -msgid "Join Network: Wireless Scan" -msgstr "Koble til nettverk: Trådløs Skanning" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Behold innstillinger" - -msgid "Kernel Log" -msgstr "Kjerne Logg" - -msgid "Kernel Version" -msgstr "Kjerne Versjon" - -msgid "Key" -msgstr "Nøkkel" - -msgid "Key #%d" -msgstr "Nøkkel #%d" - -msgid "Kill" -msgstr "Drep" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP Server" - -msgid "LCP echo failure threshold" -msgstr "LCP ekko feil terskel" - -msgid "LCP echo interval" -msgstr "LCP ekko intervall" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Volumnavn" - -msgid "Language" -msgstr "Språk" - -msgid "Language and Style" -msgstr "Språk og Utseende" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Gyldig leietid" - -msgid "Leasefile" -msgstr "Leie-fil" - -msgid "Leasetime remaining" -msgstr "Gjenværende leietid" - -msgid "Leave empty to autodetect" -msgstr "La stå tomt for automatisk oppdagelse" - -msgid "Leave empty to use the current WAN address" -msgstr "La stå tomt for å bruke gjeldene WAN adresse" - -msgid "Legend:" -msgstr "Forklaring:" - -msgid "Limit" -msgstr "Grense" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Forbindelse" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Liste med DNS servere som " -"forespørsler blir videresendt til" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Liste over domener hvor en tillater RFC1918 svar" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Liste over verter som returneren falske NX domene resultater" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Lytt kun på det angitte grensesnitt, om ingen er angitt lyttes det på alle" - -msgid "Listening port for inbound DNS queries" -msgstr "Lytte-port for innkommende DNS-spørring" - -msgid "Load" -msgstr "Belastning" - -msgid "Load Average" -msgstr "Belastning Gjennomsnitt" - -msgid "Loading" -msgstr "Laster" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Lokal IPv4 adresse" - -msgid "Local IPv6 address" -msgstr "Lokal IPv6 adresse" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Lokal Oppstart" - -msgid "Local Time" -msgstr "Lokal tid" - -msgid "Local domain" -msgstr "Lokalt domene" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Lokalt domene spesifikasjon. Navn som passer dette domenet blir aldri " -"videresendt, de blir kun løst av DHCP eller vertsfiler" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "Lokalt domenesuffiks lagt til DHCP navn og vertsfil oppføringer" - -msgid "Local server" -msgstr "Lokal server" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Lokaliser vertsnavn avhengig av subnett hvis flere IP-adresser er " -"tilgjengelig" - -msgid "Localise queries" -msgstr "Lokalisere søk" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Logg nivå" - -msgid "Log queries" -msgstr "Logg spørringer" - -msgid "Logging" -msgstr "Logging" - -msgid "Login" -msgstr "Logg inn" - -msgid "Logout" -msgstr "Logg ut" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Laveste leide adresse, forskjøvet fra nettverks adressen." - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-Adresse" - -msgid "MAC-Address Filter" -msgstr "MAC-Addresse Filter" - -msgid "MAC-Filter" -msgstr "MAC-Filter" - -msgid "MAC-List" -msgstr "MAC-Liste" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Maksimalt antall aktive DHCP leieavtaler" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Maksimalt antall samtidige DNS spørringer" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Maksimal tillatt størrelse på EDNS.0 UDP-pakker" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Maksimalt antall sekunder å vente på at modemet skal bli klart" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Maksimalt antall utleide adresser." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Minne" - -msgid "Memory usage (%)" -msgstr "Minne forbruk (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metrisk" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Mangler protokoll utvidelse for proto %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Modus" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Modem" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "Modem initiering tidsavbrudd" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Monterings Enhet" - -msgid "Mount Point" -msgstr "Monterings Punkt" - -msgid "Mount Points" -msgstr "Monterings Punkter" - -msgid "Mount Points - Mount Entry" -msgstr "Monterings Punkter - Monterings Enhet" - -msgid "Mount Points - Swap Entry" -msgstr "Monterings Punkter - Swap Enhet" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Monterings punkter definerer hvor lagrings enheter blir tilsluttet " -"filsystemet" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Monterings alternativer" - -msgid "Mount point" -msgstr "Monterings punkt" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Monterte Filsystemer" - -msgid "Move down" -msgstr "Flytt ned" - -msgid "Move up" -msgstr "Flytt opp" - -msgid "Multicast address" -msgstr "Multicast adresse" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "NTP server kandidater" - -msgid "Name" -msgstr "Navn" - -msgid "Name of the new interface" -msgstr "Navnet til det nye grensesnittet" - -msgid "Name of the new network" -msgstr "Navnet til det nye nettverket" - -msgid "Navigation" -msgstr "Navigasjon" - -msgid "Netmask" -msgstr "Nettmaske" - -msgid "Network" -msgstr "Nettverk" - -msgid "Network Utilities" -msgstr "Nettverks Verktøy" - -msgid "Network boot image" -msgstr "Nettverks boot image" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "Nettverk uten grensesnitt." - -msgid "Next »" -msgstr "Neste »" - -msgid "No DHCP Server configured for this interface" -msgstr "Ingen DHCP server er konfigurert for dette grensesnittet" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Ingen lenker i denne tabellen" - -msgid "No files found" -msgstr "Ingen filer funnet" - -msgid "No information available" -msgstr "Ingen informasjon tilgjengelig" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "Ingen negative cache" - -msgid "No network configured on this device" -msgstr "Ingen nettverk er konfigurert på denne enheten" - -msgid "No network name specified" -msgstr "Ingen nettverksnavn spesifisert" - -msgid "No package lists available" -msgstr "Ingen pakkelister tilgjengelig" - -msgid "No password set!" -msgstr "Ruteren er ikke passordbeskyttet!" - -msgid "No rules in this chain" -msgstr "Ingen regler i denne tabellen" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Ingen sone tilknyttet" - -msgid "Noise" -msgstr "Støy" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Støy:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Ingen" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Ikke funnet" - -msgid "Not associated" -msgstr "Ikke tilknyttet" - -msgid "Not connected" -msgstr "Ikke tilkoblet" - -msgid "Note: Configuration files will be erased." -msgstr "Merk: Konfigurasjonsfiler vil bli slettet" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Merk" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "OPKG-Konfigurasjon" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "Forsinkelse ved tilstand Av" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"På denne siden kan du konfigurere nettverks grensesnittet. Du kan " -"sammenkoble flere grensesnitt ved å hake av \"Sammekoble grensesnitt\" " -"feltet og skrive inn navn på grensesnittene atskilt med mellomrom. Du kan " -"også bruke VLAN betegnelse " -"INTERFACE.VLANNR (f.eks: " -"eth0.1)." - -msgid "On-State Delay" -msgstr "Forsinkelse ved tilstand -På-" - -msgid "One of hostname or mac address must be specified!" -msgstr "Enten Vertsnavn eller Mac-adresse må oppgis!" - -msgid "One or more fields contain invalid values!" -msgstr "Ett eller flere felt inneholder ugyldige verdier!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Ett eller flere obligatoriske felter har ingen verdi!" - -msgid "Open list..." -msgstr "Åpne liste..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Innstilling endret" - -msgid "Option removed" -msgstr "Innstilling fjernet" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Alternativer" - -msgid "Other:" -msgstr "Andre:" - -msgid "Out" -msgstr "Ut" - -msgid "Outbound:" -msgstr "Ugående:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Overstyr MAC adresse" - -msgid "Override MTU" -msgstr "Overstyr MTU" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "Overstyr gatewayen mottatt av DHCP respons" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Overstyr nettmaske sendt til klienter. Normalt er nettmasken beregnet ut fra " -"subnettet som blir tildelt." - -msgid "Override the table used for internal routes" -msgstr "Overstyr tabellen som brukes for interne ruter" - -msgid "Overview" -msgstr "Oversikt" - -msgid "Owner" -msgstr "Eier" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP passord" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP brukernavn" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA Innkapsling" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Pakken libiwinfo er nødvendig!" - -msgid "Package lists are older than 24 hours" -msgstr "Pakkelistene er eldre enn 24 timer" - -msgid "Package name" -msgstr "Pakkenavn" - -msgid "Packets" -msgstr "Pakker" - -msgid "Part of zone %q" -msgstr "En del av sone %q" - -msgid "Password" -msgstr "Passord" - -msgid "Password authentication" -msgstr "Passord godkjenning" - -msgid "Password of Private Key" -msgstr "Passord for privatnøkkel" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Passordet er endret!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Sti til CA-sertifikat" - -msgid "Path to Client-Certificate" -msgstr "Sti til klient-sertifikat" - -msgid "Path to Private Key" -msgstr "Sti til privatnøkkel" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Maksimalt:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Omstart nå" - -msgid "Perform reset" -msgstr "Foreta nullstilling" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Phy Hastighet:" - -msgid "Physical Settings" -msgstr "Fysiske Innstillinger" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pakker." - -msgid "Please enter your username and password." -msgstr "Skriv inn ditt brukernavn og passord." - -msgid "Policy" -msgstr "Policy" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Port status:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Annta at peer er uten forbindelse om angitt LCP ekko feiler, bruk verdi 0 " -"for å overse feil" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Hindrer klient-til-klient kommunikasjon" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Fortsett" - -msgid "Processes" -msgstr "Prosesser" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Protocol family" -msgstr "Protokoll familie" - -msgid "Protocol of the new interface" -msgstr "Protokoll til det nye grensesnittet" - -msgid "Protocol support is not installed" -msgstr "Protokoll støtte er ikke installert" - -msgid "Provide NTP server" -msgstr "Funger som NTP Server" - -msgid "Provide new network" -msgstr "Lag nytt nettverk" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Kvalitet" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS Terskel" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "RX Rate" - -msgid "Radius-Accounting-Port" -msgstr "Radius-Accounting-Port" - -msgid "Radius-Accounting-Secret" -msgstr "Radius-Accounting-Secret" - -msgid "Radius-Accounting-Server" -msgstr "Radius-Accounting-Server" - -msgid "Radius-Authentication-Port" -msgstr "Radius-Authentication-Port" - -msgid "Radius-Authentication-Secret" -msgstr "Radius-Authentication-Secret" - -msgid "Radius-Authentication-Server" -msgstr "Radius-Authentication-Server" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Benytt /etc/ethers for å konfigurere DHCP-Server" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Fjerne dette trådløse nettverket? Slettingen kan ikke omgjøres!\n" -"Du kan miste kontakten med ruteren om du er tilkoblet via dette nettverket." - -msgid "Really reset all changes?" -msgstr "Vil du nullstille alle endringer?" - -msgid "Really switch protocol?" -msgstr "Vil du endre protokoll?" - -msgid "Realtime Connections" -msgstr "Tilkoblinger Sanntid" - -msgid "Realtime Graphs" -msgstr "Grafer i sanntid" - -msgid "Realtime Load" -msgstr "Belastning Sanntid" - -msgid "Realtime Traffic" -msgstr "Trafikk Sanntid" - -msgid "Realtime Wireless" -msgstr "Trådløst i sanntid" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Binde beskyttelse" - -msgid "Reboot" -msgstr "Omstart" - -msgid "Rebooting..." -msgstr "Starter på nytt..." - -msgid "Reboots the operating system of your device" -msgstr "Omstarter operativsystemet på enheten" - -msgid "Receive" -msgstr "Motta" - -msgid "Receiver Antenna" -msgstr "Mottak antenne" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Koble til igjen" - -msgid "References" -msgstr "Referanser" - -msgid "Relay" -msgstr "Relay" - -msgid "Relay Bridge" -msgstr "Relay bro" - -msgid "Relay between networks" -msgstr "Relay mellom nettverk" - -msgid "Relay bridge" -msgstr "Relay bro" - -msgid "Remote IPv4 address" -msgstr "Ekstern IPv4 adresse" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Avinstaller" - -msgid "Repeat scan" -msgstr "Skann på nytt" - -msgid "Replace entry" -msgstr "Erstatt oppføring" - -msgid "Replace wireless configuration" -msgstr "Erstatt trådløs konfigurasjon" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Er nødvendig for noen nettleverandører, f.eks Charter med DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Nullstill" - -msgid "Reset Counters" -msgstr "Nullstill Tellere" - -msgid "Reset to defaults" -msgstr "Nullstill til standard innstilling" - -msgid "Resolv and Hosts Files" -msgstr "Oppslag og Vertsfiler" - -msgid "Resolve file" -msgstr "Oppslagsfil" - -msgid "Restart" -msgstr "Omstart" - -msgid "Restart Firewall" -msgstr "Omstart Brannmur" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Gjenoppretting" - -msgid "Restore backup" -msgstr "Gjenopprett sikkerhetskopi" - -msgid "Reveal/hide password" -msgstr "Vis/Skjul passord" - -msgid "Revert" -msgstr "Tilbakestill" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Rot" - -msgid "Root directory for files served via TFTP" -msgstr "Rot katalog for filer gitt fra TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Ruter Passord" - -msgid "Routes" -msgstr "Ruter" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Ruter, angir hvilket nettverksgrensesnitt og hvilken gateway som brukes for " -"å nå et gitt nettverk eller vert." - -msgid "Run a filesystem check before mounting the device" -msgstr "Kjør filsystem sjekk før montering av enheten" - -msgid "Run filesystem check" -msgstr "Kjør filsystem sjekk" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "SSH Tilgang" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "SSH-Nøkler" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Lagre" - -msgid "Save & Apply" -msgstr "Lagre & Aktiver" - -msgid "Scan" -msgstr "Skann" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Planlagte Oppgaver" - -msgid "Section added" -msgstr "Seksjon lagt til" - -msgid "Section removed" -msgstr "Seksjon fjernet" - -msgid "See \"mount\" manpage for details" -msgstr "Se \"mount\" manpage for detaljer" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Send LCP ekko forespørsler etter angitt intervall i sekunder, dette er kun " -"gjeldene dersom feilterskelen er nådd" - -msgid "Separate Clients" -msgstr "Separerte Klienter" - -msgid "Server Settings" -msgstr "Server Innstillinger" - -msgid "Service Name" -msgstr "Tjeneste navn" - -msgid "Service Type" -msgstr "Tjeneste type" - -msgid "Services" -msgstr "Tjenester" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Oppsett tidssynkronisering" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "Oppsett DHCP server" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "Vis gjeldende liste med sikkerhetskopifiler" - -msgid "Shutdown this interface" -msgstr "Slå av dette grensesnittet" - -msgid "Signal" -msgstr "Signal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Signal:" - -msgid "Size" -msgstr "Størrelse" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Gå videre" - -msgid "Skip to content" -msgstr "Gå til innhold" - -msgid "Skip to navigation" -msgstr "Gå til navigasjon" - -msgid "Slot time" -msgstr "Slot tid" - -msgid "Software" -msgstr "Programvare" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Noen felt er ugyldige, kan ikke lagre verdier!" - -msgid "Sorry, the object you requested was not found." -msgstr "Beklager, objektet du spurte om ble ikke funnet." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Beklager, det oppstod en uventet feil på serveren." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Beklager, men finner ikke støtte for 'sysupgrade', ny firmware må derfor " -"flashes manuelt. Viser til wiki for installering av firmare på forskjellige " -"enheter." - -msgid "Source" -msgstr "Kilde" - -msgid "Specifies the directory the device is attached to" -msgstr "Hvor lagrings enheten blir tilsluttet filsystemet (f.eks. /mnt/sda1)" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Angir den lyttende porten for denne Dropbear instansen" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Angir maksimalt antall feilede ARP forespørsler før verter ansees frakoblet" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "Angir maksimalt antall sekunder før verter ansees som frakoblet" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Angi krypteringsnøkkelen her." - -msgid "Start" -msgstr "Start" - -msgid "Start priority" -msgstr "Start prioritet" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Oppstart" - -msgid "Static IPv4 Routes" -msgstr "Statiske IPv4 Ruter" - -msgid "Static IPv6 Routes" -msgstr "Statiske IPv6 Ruter" - -msgid "Static Leases" -msgstr "Statiske Leier" - -msgid "Static Routes" -msgstr "Statiske Ruter" - -msgid "Static address" -msgstr "Statisk adresse" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Statisk leieavtaler brukes til å tildele faste IP adresser og symbolske " -"vertsnavn til DHCP klienter. Dette er nødvendig om grensesnittet ikke er " -"dynamisk konfigurert og kun klienter med dhcp leieavtale får IP." - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Stop" - -msgid "Strict order" -msgstr "Streng overholdelse" - -msgid "Submit" -msgstr "Send" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Swap Enhet" - -msgid "Switch" -msgstr "Svitsj" - -msgid "Switch %q" -msgstr "Svitsj %q" - -msgid "Switch %q (%s)" -msgstr "Svitsj %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Svitsj protokoll" - -msgid "Sync with browser" -msgstr "Synkroniser med nettleser" - -msgid "Synchronizing..." -msgstr "Synkroniser..." - -msgid "System" -msgstr "System" - -msgid "System Log" -msgstr "System Logg" - -msgid "System Properties" -msgstr "System Egenskaper" - -msgid "System log buffer size" -msgstr "System logg buffer størrelse" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP Innstillinger" - -msgid "TFTP server root" -msgstr "TFTP server roten" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "TX rate" - -msgid "Table" -msgstr "Tabell" - -msgid "Target" -msgstr "Mål" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Avslutte" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Enhet Konfigurasjon seksjonen omhandler innstillingene av den " -"trådløse enheten som kanaler, sende stryke eller antenne valg. Disse " -"innstillingene er delt mellom alle definerte trådløse nettverk opprettet " -"utfra denne enhet. (om den trådløse enheten støtter mulit-SSID). Nettverks " -"innstillinger som kryptering eller kanaler er gruppert i Grensesnitt " -"Konfigurasjon." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Pakken libiwinfo-lua er ikke installert. Du må installere denne " -"pakken for å kunne konfigurerer trådløse enheter!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"IPv6 prefikset tilordnet mot leverandør, ender som regel med ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Gyldige tegn er: A-Z, a-z, 0-9 og " -"_" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Filenheten til partisjonen eller minnet (f.eks." -" /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Filsystemet som ble brukt til å formatere partisjonen eller minnet. (f.eks. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Firmwaren ble lastet opp. Nedenfor er kontrollsum og filstørrelse oppført, " -"sammenlign dem med den opprinnelige filen for å sikre dataintegriteten.
    Klikk \"Fortsett\" nedenfor for å starte flash prosedyren." - -msgid "The following changes have been reverted" -msgstr "Følgende endringer er forkastet" - -msgid "The following rules are currently active on this system." -msgstr "Følgende regler er aktiver på systemet." - -msgid "The given network name is not unique" -msgstr "Det angitte nettverksnavnet er ikke unikt" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Maskinvaren er ikke multi-SSID kapabel og den ekisterende konfigurasjonen " -"vil bli erstattet om du fortsetter." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "Lengden IPv4 prefikset i bits, resten brukt i IPv6-adresser." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Lengden på IPv6 prefikset i bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Nettverks portene på ruteren kan kombineres til flere VLANs der datamaskiner kan kommunisere direkte " -"med hverandre. VLANs " -"brukes ofte for å skille ulike nettverk segmenter. Det er vanlig og ha en " -"Uplink port for tilkobling til større nettverk som internett og andre porter " -"til lokalt nettverk." - -msgid "The selected protocol needs a device assigned" -msgstr "Den valgte protokoll må ha en enhet tilknyttet" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Systemet sletter konfigurasjonspartisjonen nå, enheten vil bli startet på " -"nytt når dette er utført." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Systemet flashes nå.
    IKKE SLÅ AV ENHETEN!
    Vent noen minutter før " -"du prøver å koble til igjen. Det kan være nødvendig å fornye ip-adressen til " -"datamaskinen din for å nå enheten på nytt. (avhengig av innstillingene dine)" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Den opplastede programvaren er av et format som ikke støttes. Sørg for at du " -"velger det generelle firmware-bildet for din plattform." - -msgid "There are no active leases." -msgstr "Det er ingen aktive leieavtaler." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "Det finnes ingen endriger å reversere!" - -msgid "There are no pending changes!" -msgstr "Det finnes ingen endringer!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Det er ingen enhet som er tilordnet ennå, vennligst legg til en " -"nettverksenhet i \"Fysiske Innstillinger\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Det er ikke satt noe passord på denne ruter. Vennligst konfigurer et " -"passord, dette beskytter webgrensesnittet og aktiverer SSH." - -msgid "This IPv4 address of the relay" -msgstr "Dette IPv4 adressen til relayet" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Dette er en liste med 'shell glob patterns' for å matche filer og kataloger " -"som skal inkluderes under sysupgrade. Endrede filer i /etc/config/ og " -"enkelte andre konfigurasjoner blir automatisk bevart." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Dette er innholdet i /etc/rc.local. Her kan du legge til egne kommandoer som " -"blir startet ved slutten av boot sekvensen. (før 'exit 0')" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" -"Dette er den lokale endepunkt adressen som ble tildelt av tunnel 'broker', " -"adressen ender vanligvis med ...:2/64" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Dette er den eneste DHCP server i det lokale nettverket" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Dette er systemets crontab, hvor planlagte oppgaver kan defineres." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Dette er vanligvis adressen til nærmeste PoP som drives av tunell 'broker'" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "Denne listen gir en oversikt over kjørende prosesser og deres status." - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Denne siden gir en oversikt over gjeldende aktive nettverkstilkoblinger." - -msgid "This section contains no values yet" -msgstr "Denne seksjonen inneholder ennå ingen verdier" - -msgid "Time Synchronization" -msgstr "Tidssynkronisering" - -msgid "Time Synchronization is not configured yet." -msgstr "Tiden Synkroniseringen er ikke konfigurert ennå." - -msgid "Timezone" -msgstr "Tidssone" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"For å gjenopprette konfigurasjonsfiler, kan du her laste opp et backup arkiv " -"som ble opprettet tidligere. For å nullstille firmwaren til opprinnelig " -"tilstand, klikker du på \"Utfør nullstilling\" (kun mulig på squashfs " -"firmwarer)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Totalt Tilgjengelig" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Trafikk" - -msgid "Transfer" -msgstr "Overføring" - -msgid "Transmission Rate" -msgstr "Overførings rate" - -msgid "Transmit" -msgstr "Sende" - -msgid "Transmit Power" -msgstr "Sende styrke" - -msgid "Transmitter Antenna" -msgstr "Sende Antenne" - -msgid "Trigger" -msgstr "Utløser" - -msgid "Trigger Mode" -msgstr "Utløsende Tilstand" - -msgid "Tunnel ID" -msgstr "Tunnel ID" - -msgid "Tunnel Interface" -msgstr "Tunnel grensesnitt" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Tx-Styrke" - -msgid "Type" -msgstr "Type" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Kun UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB Enhet" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "Kan ikke sende" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Ukjent" - -msgid "Unknown Error, password not changed!" -msgstr "Ukjent feil, passordet ble ikke endret!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "Uhåndtert" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Ulagrede Endringer" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Protokoll type er ikke støttet." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Oppdater lister" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Last her opp en sysupgrade-kompatibel firmware som skal erstatte den " -"kjørende firmware. Merk av \"Behold innstillinger\" for å beholde gjeldene " -"konfigurasjon. (en kompatibel firmware er nødvendig)" - -msgid "Upload archive..." -msgstr "Last opp arkiv..." - -msgid "Uploaded File" -msgstr "Opplastet Fil" - -msgid "Uptime" -msgstr "Oppetid" - -msgid "Use /etc/ethers" -msgstr "Bruk /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Bruk DHCP gateway" - -msgid "Use DNS servers advertised by peer" -msgstr "Bruk DNS servere annonsert av peer" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Bruk ISO/IEC 3166 alpha2 landskoder." - -msgid "Use MTU on tunnel interface" -msgstr "Bruk MTU på tunnel grensesnitt" - -msgid "Use TTL on tunnel interface" -msgstr "Bruk TTL på tunnel grensesnitt" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "Bruk kringkasting flagg" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Bruk egendefinerte DNS servere" - -msgid "Use default gateway" -msgstr "Bruk standard gateway" - -msgid "Use gateway metric" -msgstr "Bruk gateway metrikk" - -msgid "Use routing table" -msgstr "Bruk rutingtabellen" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Bruk Legg til knappen får å legge til en leieavtale. MAC-" -"Adresse identifiserer verten, IPv4-Adresse angir hvilken " -"statisk IP adresse som skal brukes og Vertsnavn blir symbolsk " -"tilknyttet den anmodende verten." - -msgid "Used" -msgstr "Brukt" - -msgid "Used Key Slot" -msgstr "Brukte Nøkler" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Brukernavn" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs på %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs på %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "VPN server" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Leverandør klasse som sendes ved DHCP spørring" - -msgid "Verify" -msgstr "Bekreft" - -msgid "Version" -msgstr "Versjon" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP åpent system" - -msgid "WEP Shared Key" -msgstr "WEP delt nøkkel" - -msgid "WEP passphrase" -msgstr "WEP passord" - -msgid "WMM Mode" -msgstr "WMM Modus" - -msgid "WPA passphrase" -msgstr "WPA passord" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-Kryptering krever at wpa_supplicant (for klient-modus) eller hostapd " -"(for AP og ad-hoc-modus) er installert." - -msgid "Waiting for changes to be applied..." -msgstr "Venter på at endringer utføres..." - -msgid "Waiting for command to complete..." -msgstr "Venter på at kommando fullføres..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Advarsel" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Trådløs" - -msgid "Wireless Adapter" -msgstr "Trådløs Tilslutning" - -msgid "Wireless Network" -msgstr "Trådløst Nettverk" - -msgid "Wireless Overview" -msgstr "Trådløs Oversikt" - -msgid "Wireless Security" -msgstr "Trådløs Sikkerhet" - -msgid "Wireless is disabled" -msgstr "Trådløs er deaktiver" - -msgid "Wireless is not associated" -msgstr "Trådløs er ikke tilknyttet" - -msgid "Wireless is restarting..." -msgstr "Trådløst starter på nytt..." - -msgid "Wireless network is disabled" -msgstr "Trådløst nettverk er deaktivert" - -msgid "Wireless network is enabled" -msgstr "Trådløst nettverk er aktivert" - -msgid "Write received DNS requests to syslog" -msgstr "Skriv mottatte DNS forespørsler til syslog" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Her kan du aktivere eller deaktivere installerte oppstartsskript. Enheten må " -"omstartes før endringene blir tatt i bruk.
    Advarsel: Om du " -"deaktiverer nødvendige init skript som f.eks. \"nettverk\", kan enheten bli " -"utilgjengelig! " - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Du må aktivere JavaScript i nettleseren din ellers vil ikke LuCI fungere " -"skikkelig." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "enhver" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "brokoblet" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "opprett:" - -msgid "creates a bridge over specified interface(s)" -msgstr "Oppretter en bro mellom angitte grensesnitt" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "Deaktiver" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "utgått" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"filen der gitt DHCP-leier vil bli lagret" - -msgid "forward" -msgstr "videresend" - -msgid "full-duplex" -msgstr "full-dupleks" - -msgid "half-duplex" -msgstr "halv-dupleks" - -msgid "hidden" -msgstr "skjult" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "Dersom målet er et nettverk" - -msgid "input" -msgstr "inndata" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "lokal DNS-fil" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "nei" - -msgid "no link" -msgstr "ingen forbindelse" - -msgid "none" -msgstr "ingen" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "av" - -msgid "on" -msgstr "på" - -msgid "open" -msgstr "åpen" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "rutet" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "tagget" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "ukjent" - -msgid "unlimited" -msgstr "ubegrenset" - -msgid "unspecified" -msgstr "uspesifisert" - -msgid "unspecified -or- create:" -msgstr "uspesifisert --eller-- opprett:" - -msgid "untagged" -msgstr "utagget" - -msgid "yes" -msgstr "ja" - -msgid "« Back" -msgstr "« Tilbake" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Aktiver dette nettverket" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Hermes 802.11b Trådløs Kontroller" - -#~ msgid "Interface is shutting down..." -#~ msgstr "Grensesnittet slår seg av..." - -#~ msgid "Interface reconnected" -#~ msgstr "Grensesnittet er koblet til igjen" - -#~ msgid "Interface shut down" -#~ msgstr "Grensesnittet er slått av" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Prism2/2.5/3 802.11b Trådløs Kontroller" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "RaLink 802.11%s Trådløs Kontroller" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "Slå av dette grensesnittet \"%s\" ?\n" -#~ "Du kan miste kontakten med ruteren om du er tilkoblet via dette " -#~ "grensesnittet." - -#~ msgid "Reconnecting interface" -#~ msgstr "Kobler til igjen" - -#~ msgid "Shutdown this network" -#~ msgstr "Slå av dette nettverket" - -#~ msgid "Wireless restarted" -#~ msgstr "Trådløst startet på nytt" - -#~ msgid "Wireless shut down" -#~ msgstr "Trådløst er slått av" - -#~ msgid "DHCP Leases" -#~ msgstr "DHCP Leier" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "DHCPv6 Leier" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "Fjerne dette grensesnittet? Slettingen kan ikke omgjøres!\n" -#~ "Du kan miste kontakten med ruteren om du er tilkoblet via dette " -#~ "grensesnittet." - -#, fuzzy -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "Slå av dette nettverket ?\n" -#~ "Du kan miste kontakten med ruteren om du er tilkoblet via dette " -#~ "grensesnittet." - -#~ msgid "Sort" -#~ msgstr "Sortering" - -#~ msgid "help" -#~ msgstr "Hjelp" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "IPv4 WAN Status" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "IPv6 WAN Status" - -#~ msgid "Apply" -#~ msgstr "Bruk" - -#~ msgid "Applying changes" -#~ msgstr "Utfører endringer" - -#~ msgid "Configuration applied." -#~ msgstr "Konfigurasjons endring utført." - -#~ msgid "Save & Apply" -#~ msgstr "Lagre & Aktiver" - -#~ msgid "The following changes have been committed" -#~ msgstr "Følgende endringer er foretatt" - -#~ msgid "There are no pending changes to apply!" -#~ msgstr "Det finnes ingen endringer som kan utføres!" - -#~ msgid "Action" -#~ msgstr "Handling" - -#~ msgid "Buttons" -#~ msgstr "Knapper" - -#~ msgid "Handler" -#~ msgstr "Behandler" - -#~ msgid "Maximum hold time" -#~ msgstr "Maksimal holde tid" - -#~ msgid "Minimum hold time" -#~ msgstr "Minimum holde tid" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "Sti til program som håndterer handling ved bruk av knapp" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "Spesifiserer knappens handlemønster" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "" -#~ "Denne siden gir mulighet for å definerte egne knappers handlingsmønster" - -#~ msgid "Leasetime" -#~ msgstr "Leietid" - -#~ msgid "AR Support" -#~ msgstr "AR Støtte" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s Trådløs Kontroller" - -#~ msgid "Background Scan" -#~ msgstr "Bakgrunns Skanning" - -#~ msgid "Compression" -#~ msgstr "Komprimering" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Deaktiver HW-Beacon timer" - -#~ msgid "Do not send probe responses" -#~ msgstr "Ikke send probe svar" - -#~ msgid "Fast Frames" -#~ msgstr "Fast Frames" - -#~ msgid "Maximum Rate" -#~ msgstr "Maksimal hastighet" - -#~ msgid "Minimum Rate" -#~ msgstr "Minimum hastighet" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicast hastighet" - -#~ msgid "Outdoor Channels" -#~ msgstr "Utendørs Kanaler" - -#~ msgid "Regulatory Domain" -#~ msgstr "Regulerende Domene" - -#~ msgid "Separate WDS" -#~ msgstr "Separert WDS" - -#~ msgid "Static WDS" -#~ msgstr "Statisk WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo Modus" - -#~ msgid "XR Support" -#~ msgstr "XR Støtte" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Et nytt nettverk vil bli opprettet hvis du tar bort haken." - -#~ msgid "Join Network: Settings" -#~ msgstr "Koble til nettverk: Innstilling" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "Port %d er utagget i flere VLANs!" - -#~ msgid "VLAN Interface" -#~ msgstr "VLAN grensesnitt" diff --git a/luci-base/po/oc/base.po b/luci-base/po/oc/base.po new file mode 100644 index 000000000..28f4b510f --- /dev/null +++ b/luci-base/po/oc/base.po @@ -0,0 +1,7620 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2020-10-19 09:37+0000\n" +"Last-Translator: Quentin PAGÈS \n" +"Language-Team: Occitan \n" +"Language: oc\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.4\n" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:929 +msgid "%.1f dB" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:114 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:261 +msgid "%d Bit" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3689 +msgid "%d invalid field(s)" +msgstr "%d camp(s) invalid(s)" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:35 +msgid "%s is untagged in multiple VLANs!" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:294 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:403 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:270 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:307 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:325 +msgid "(%d minute window, %d second interval)" +msgstr "(fenèstra de %d minuta,interval de %d segonda)" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:118 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:124 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:258 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:282 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:88 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:91 +msgid "(empty)" +msgstr "(void)" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:351 +#: modules/luci-compat/luasrc/view/cbi/network_netinfo.htm:23 +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:58 +msgid "(no interfaces attached)" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/ucisection.htm:48 +msgid "-- Additional Field --" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3372 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3704 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:767 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:1005 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:1974 +#: modules/luci-compat/luasrc/view/cbi/header.htm:8 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:88 +msgid "-- Please choose --" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/cbi.js:276 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:1006 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:1975 +#: modules/luci-compat/luasrc/view/cbi/header.htm:9 +msgid "-- custom --" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:270 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:379 +msgid "-- match by label --" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:256 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:362 +msgid "-- match by uuid --" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:27 +#: modules/luci-compat/luasrc/view/cbi/network_ifacelist.htm:44 +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:23 +msgid "-- please select --" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:54 +msgctxt "sstp log level value" +msgid "0" +msgstr "0" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:939 +msgid "0 = not using RSSI threshold, 1 = do not change driver default" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:55 +msgctxt "sstp log level value" +msgid "1" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:231 +msgid "1 Minute Load:" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:251 +msgid "15 Minute Load:" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:56 +msgctxt "sstp log level value" +msgid "2" +msgstr "2" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:57 +msgctxt "sstp log level value" +msgid "3" +msgstr "3" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:58 +msgctxt "sstp log level value" +msgid "4" +msgstr "4" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1442 +msgid "4-character hexadecimal ID" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:18 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:11 +msgid "464XLAT (CLAT)" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:241 +msgid "5 Minute Load:" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1471 +msgid "6-octet identifier as a hex string - no colons" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1431 +msgid "802.11r Fast Transition" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1619 +msgid "802.11w Association SA Query maximum timeout" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1626 +msgid "802.11w Association SA Query retry timeout" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1607 +msgid "802.11w Management Frame Protection" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1619 +msgid "802.11w maximum timeout" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1626 +msgid "802.11w retry timeout" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:956 +msgid "BSSID" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:326 +msgid "DNS query port" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:317 +msgid "DNS server port" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:260 +msgid "" +"DNS servers will be queried in the " +"order of the resolvfile" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:945 +msgid "ESSID" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:475 +msgid "IPv4-Address" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:42 +msgid "IPv4-Gateway" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:603 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:36 +msgid "IPv4-Netmask" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:31 +msgid "" +"IPv6-Address or Network " +"(CIDR)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:42 +msgid "IPv6-Gateway" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:504 +msgid "IPv6-Suffix (hex)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:58 +msgid "LED Configuration" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:69 +msgid "LED Name" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:431 +msgid "MAC-Address" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:498 +msgid "DUID" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:335 +msgid "" +"Max. DHCP leases" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:344 +msgid "" +"Max. EDNS0 packet size" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:353 +msgid "Max. concurrent queries" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:29 +msgid "" +"
    Note: you need to manually restart the cron service if the crontab file " +"was empty before editing." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2720 +msgid "A directory with the same name already exists." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2670 +msgid "A new login is required since the authentication session expired." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:909 +msgid "A43C + J43 + A43" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:910 +msgid "A43C + J43 + A43 + V43" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:922 +msgid "ADSL" +msgstr "ADSL" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:898 +msgid "ANSI T1.413" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:94 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:93 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:86 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:67 +msgid "APN" +msgstr "APN" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:197 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:352 +msgid "ARP" +msgstr "ARP" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:365 +msgid "ARP IP Targets" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:357 +msgid "ARP Interval" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:381 +msgid "ARP Validation" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:373 +msgid "ARP mode to consider a slave as being up" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:77 +msgid "ARP monitoring is not supported for the selected policy!" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:175 +msgid "ARP retry threshold" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:917 +msgid "ATM (Asynchronous Transfer Mode)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:938 +msgid "ATM Bridges" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:970 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:66 +msgid "ATM Virtual Channel Identifier (VCI)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:971 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:70 +msgid "ATM Virtual Path Identifier (VPI)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:938 +msgid "" +"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " +"Linux network interfaces which can be used in conjunction with DHCP or PPP " +"to dial into the provider network." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:977 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:62 +msgid "ATM device number" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:37 +msgid "ATU-C System Vendor ID" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:265 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:543 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:547 +msgid "Absent Interface" +msgstr "" + +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:47 +msgid "Access Concentrator" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:927 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1032 +msgid "Access Point" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:360 +msgid "Actions" +msgstr "Accions" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:200 +msgid "Active IPv4-Routes" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:206 +msgid "Active IPv6-Routes" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:81 +msgid "Active Connections" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:33 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:92 +msgid "Active DHCP Leases" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:52 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:94 +msgid "Active DHCPv6 Leases" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:203 +msgid "Active-Backup policy (active-backup, 1)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:3666 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:929 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:23 +msgid "Ad-Hoc" +msgstr "Ad-Hoc" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:208 +msgid "Adaptive load balancing (balance-alb, 6)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:207 +msgid "Adaptive transmit load balancing (balance-tlb, 5)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2167 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2170 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2184 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2185 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3170 +#: modules/luci-compat/luasrc/view/cbi/nsection.htm:25 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:189 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:197 +#: modules/luci-compat/luasrc/view/cbi/tsection.htm:39 +#: modules/luci-compat/luasrc/view/cbi/tsection.htm:47 +#: modules/luci-compat/luasrc/view/cbi/ucisection.htm:54 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:827 +msgid "Add" +msgstr "Ajustar" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:942 +msgid "Add ATM Bridge" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:92 +msgid "Add IPv4 address…" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:207 +msgid "Add IPv6 address…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:65 +msgid "Add LED action" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:219 +msgid "Add VLAN" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:15 +msgid "Add instance" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:146 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:152 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:247 +msgid "Add key" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:248 +msgid "Add local domain suffix to names served from hosts files" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:311 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:757 +msgid "Add new interface..." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:125 +msgid "Add peer" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:200 +msgid "Additional Hosts files" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:255 +msgid "Additional servers file" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:34 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:35 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:36 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:37 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:38 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:39 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:40 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:41 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:42 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:43 +msgid "Address" +msgstr "Adreça" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:151 +msgid "Address to access local relay bridge" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:285 +msgid "Addresses" +msgstr "Adreças" + +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:3 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:15 +msgid "Administration" +msgstr "Administracion" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:164 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:324 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:553 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:968 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:25 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:866 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:924 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:241 +msgid "Advanced Settings" +msgstr "Paramètres avançats" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:28 +msgid "Aggregate Transmit Power (ACTATP)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:258 +msgid "Aggregation Selection Logic" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:261 +msgid "Aggregator: All slaves down or has no slaves (stable, 0)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:263 +msgid "" +"Aggregator: Chosen by the largest number of ports + slave added/removed or " +"state changes (count, 2)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:262 +msgid "Aggregator: Slave added/removed or state changes (bandwidth, 1)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:171 +msgid "Alert" +msgstr "Alèrta" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2871 +#: modules/luci-compat/luasrc/model/network.lua:1417 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:61 +msgid "Alias Interface" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:145 +msgid "Alias of \"%s\"" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:263 +msgid "All Servers" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:209 +msgid "" +"Allocate IP addresses sequentially, starting from the lowest available " +"address" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:208 +msgid "Allocate IP sequentially" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:25 +msgid "Allow SSH password authentication" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1112 +msgid "Allow AP mode to disconnect STAs based on low ACK condition" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1016 +msgid "Allow all except listed" +msgstr "" + +#: modules/luci-compat/root/usr/share/rpcd/acl.d/luci-compat.json:3 +msgid "Allow full UCI access for legacy applications" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:892 +msgid "Allow legacy 802.11b rates" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1015 +msgid "Allow listed only" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:300 +msgid "Allow localhost" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:157 +msgid "Allow rebooting the device" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:36 +msgid "Allow remote hosts to connect to local SSH forwarded ports" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:31 +msgid "Allow root logins with password" +msgstr "" + +#: modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json:3 +msgid "Allow system feature probing" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:31 +msgid "Allow the root user to login with password" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:301 +msgid "" +"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:148 +msgid "Allowed IPs" +msgstr "IP autorizadas" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:654 +msgid "Always announce default router" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/none.js:5 +msgid "Always off (kernel: none)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/default-on.js:6 +msgid "Always on (kernel: default-on)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:907 +msgid "" +"Always use 40MHz channels even if the secondary channel overlaps. Using this " +"option does not comply with IEEE 802.11n-2009!" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:603 +msgid "An error occurred while saving the form:" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:890 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:20 +msgid "Annex" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:891 +msgid "Annex A + L + M (all)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:899 +msgid "Annex A G.992.1" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:900 +msgid "Annex A G.992.2" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:901 +msgid "Annex A G.992.3" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:902 +msgid "Annex A G.992.5" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:892 +msgid "Annex B (all)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:895 +msgid "Annex B G.992.1" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:896 +msgid "Annex B G.992.3" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:897 +msgid "Annex B G.992.5" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:893 +msgid "Annex J (all)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:903 +msgid "Annex L G.992.3 POTS 1" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:894 +msgid "Annex M (all)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:904 +msgid "Annex M G.992.3" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:905 +msgid "Annex M G.992.5" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:654 +msgid "Announce as default router even if no public prefix is available." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:659 +msgid "Announced DNS domains" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:658 +msgid "Announced DNS servers" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1596 +msgid "Anonymous Identity" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:162 +msgid "Anonymous Mount" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:158 +msgid "Anonymous Swap" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:84 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:174 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:195 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:60 +msgid "Any zone" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:119 +msgid "Apply backup?" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4276 +msgid "Apply request failed with status %h" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2181 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4142 +msgid "Apply unchecked" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4215 +msgid "Applying configuration changes… %ds" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:56 +msgid "Architecture" +msgstr "Arquitectura" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:184 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:27 +msgid "" +"Assign a part of given length of every public IPv6-prefix to this interface" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:189 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:31 +msgid "" +"Assign prefix parts using this hexadecimal subprefix ID for this interface." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2078 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:245 +msgid "Associated Stations" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:46 +msgid "Associations" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:154 +msgid "Attempt to enable configured mount points for attached devices" +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:104 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:64 +msgid "Auth Group" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1535 +msgid "Authentication" +msgstr "Autentificacion" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:96 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:70 +msgid "Authentication Type" +msgstr "Tipe d’autentificacion" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:172 +msgid "Authoritative" +msgstr "" + +#: modules/luci-base/luasrc/view/sysauth.htm:17 +msgid "Authorization Required" +msgstr "" + +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:196 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:197 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:241 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:244 +msgid "Auto Refresh" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:106 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:18 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:24 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:98 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:50 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:94 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:81 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:55 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:68 +msgid "Automatic" +msgstr "Automatic" + +#: modules/luci-compat/luasrc/model/network/proto_hnet.lua:7 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:7 +msgid "Automatic Homenet (HNCP)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:174 +msgid "Automatically check filesystem for errors before mounting" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:170 +msgid "Automatically mount filesystems on hotplug" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:166 +msgid "Automatically mount swap on hotplug" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:170 +msgid "Automount Filesystem" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:166 +msgid "Automount Swap" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:193 +msgid "Available" +msgstr "Disponible" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:268 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:278 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:329 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:339 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:349 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:234 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:244 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:254 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:263 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:273 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:291 +msgid "Average:" +msgstr "Mejana :" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:911 +msgid "B43 + B43C" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:912 +msgid "B43 + B43C + V43" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:48 +msgid "BR / DMR / AFTR" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:158 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:182 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1665 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:44 +msgid "BSSID" +msgstr "BSSID" + +#: modules/luci-compat/luasrc/view/cbi/footer.htm:14 +#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:48 +msgid "Back to Overview" +msgstr "" + +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48 +msgid "Back to configuration" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:363 +msgid "Backup" +msgstr "Salvagarda" + +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:114 +msgid "Backup / Flash Firmware" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:323 +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12 +msgid "Backup file list" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/wireless_modefreq.htm:158 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:451 +msgid "Band" +msgstr "Grop" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:910 +msgid "Beacon Interval" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:324 +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46 +msgid "" +"Below is the determined list of files to backup. It consists of changed " +"configuration files marked by opkg, essential base files and the user " +"defined backup patterns." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:395 +msgid "" +"Bind dynamically to interfaces rather than wildcard address (recommended as " +"linux default)" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:52 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:62 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:48 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:55 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:57 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:52 +msgid "Bind interface" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:52 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:62 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:48 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:55 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:57 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:52 +msgid "Bind the tunnel to this interface (optional)." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:129 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:188 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:63 +msgid "Bitrate" +msgstr "Debit" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:266 +msgid "Bogus NX Domain Override" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:199 +msgid "Bonding Policy" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2877 +#: modules/luci-compat/luasrc/model/network.lua:1421 +msgid "Bridge" +msgstr "Pont" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:416 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:730 +msgid "Bridge interfaces" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:978 +msgid "Bridge unit number" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:412 +msgid "Bring up on boot" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:205 +msgid "Broadcast policy (broadcast, 3)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2810 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3799 +msgid "Browse…" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:37 +msgid "Buffered" +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:138 +msgid "CA certificate; if empty it will be saved after the first connection." +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:7 +msgid "CLAT configuration failed" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:72 +msgid "CPU usage (%)" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:41 +msgid "Cached" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_modemmanager.lua:53 +#: modules/luci-compat/luasrc/model/network/proto_qmi.lua:53 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:21 +msgid "Call failed" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2903 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3808 +#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14 +#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:187 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:763 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1952 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:128 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:272 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:184 +msgid "Cancel" +msgstr "Anullar" + +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:17 +msgid "Category" +msgstr "Categoria" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1519 +msgid "Certificate constraint (Domain)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1516 +msgid "Certificate constraint (SAN)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1513 +msgid "Certificate constraint (Subject)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1522 +msgid "Certificate constraint (Wildcard)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1513 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1571 +msgid "" +"Certificate constraint substring - e.g. /CN=wifi.mycompany.com
    See " +"`logread -f` during handshake for actual values" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1519 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1577 +msgid "" +"Certificate constraint(s) against DNS SAN values (if available)
    or " +"Subject CN (exact match)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1522 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1580 +msgid "" +"Certificate constraint(s) against DNS SAN values (if available)
    or " +"Subject CN (suffix match)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1516 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1574 +msgid "" +"Certificate constraint(s) via Subject Alternate Name values
    (supported " +"attributes: EMAIL, DNS, URI) - e.g. DNS:wifi.mycompany.com" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:53 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:200 +msgid "Chain" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4028 +msgid "Changes" +msgstr "Diferéncias" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4311 +msgid "Changes have been reverted." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:46 +msgid "Changes the administrator password for accessing the device" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/wireless_modefreq.htm:162 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:128 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:184 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:460 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1663 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:62 +msgid "Channel" +msgstr "Canal" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:174 +msgid "Check filesystems before mount" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1914 +msgid "Check this option to delete the existing networks from this radio." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:110 +msgid "Checking archive…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:193 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:195 +msgid "Checking image…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:399 +msgid "Choose mtdblock" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:491 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1942 +msgid "" +"Choose the firewall zone you want to assign to this interface. Select " +"unspecified to remove the interface from the associated zone or " +"fill out the custom field to define a new zone and attach the " +"interface to it." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:959 +msgid "" +"Choose the network(s) you want to attach to this wireless interface or fill " +"out the custom field to define a new network." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1148 +msgid "Cipher" +msgstr "Cipher" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:91 +msgid "Cisco UDP encapsulation" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:363 +msgid "" +"Click \"Generate archive\" to download a tar archive of the current " +"configuration files." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:396 +msgid "" +"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS " +"FEATURE IS FOR PROFESSIONALS! )" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:3665 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:928 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1033 +msgid "Client" +msgstr "Client" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:52 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:47 +msgid "Client ID to send when requesting DHCP" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:148 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:154 +msgid "Close" +msgstr "Tampar" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:157 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:141 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:128 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:106 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:115 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:138 +msgid "" +"Close inactive connection after the given amount of seconds, use 0 to " +"persist connection" +msgstr "" + +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49 +msgid "Close list..." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:42 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:61 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2076 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:389 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:317 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:320 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:204 +msgid "Collecting data..." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:71 +msgid "Command" +msgstr "Comanda" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:401 +msgid "Command OK" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:33 +msgid "Command failed" +msgstr "La comanda a fracassat" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:72 +msgid "Comment" +msgstr "Comentari" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1634 +msgid "" +"Complicates key reinstallation attacks on the client side by disabling " +"retransmission of EAPOL-Key frames that are used to install keys. This " +"workaround might cause interoperability issues and reduced robustness of key " +"negotiation especially in environments with heavy traffic load." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:91 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:96 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:93 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:98 +msgid "Compute outgoing checksum (optional)." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4028 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:426 +msgid "Configuration" +msgstr "Configuracion" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4190 +msgid "Configuration changes applied." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4128 +msgid "Configuration changes have been rolled back!" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:63 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:21 +msgid "Configuration failed" +msgstr "Fracàs de la configuracion" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:175 +msgid "Confirm disconnect" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:55 +msgid "Confirmation" +msgstr "Confirmacion" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:46 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:51 +msgid "Connected" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:9 +#: modules/luci-compat/luasrc/model/network.lua:27 +msgid "Connection attempt failed" +msgstr "Ensag de connexion pas capitat" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:40 +msgid "Connection attempt failed." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:411 +msgid "Connection lost" +msgstr "Connexion perduda" + +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:117 +msgid "Connections" +msgstr "Connexions" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:377 +msgid "Consider the slave up when all ARP IP targets are reachable (all, 1)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:376 +msgid "Consider the slave up when any ARP IP target is reachable (any, 0)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:18 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:340 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:55 +msgid "Contents have been saved." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:742 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:132 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:264 +msgid "Continue" +msgstr "Contunhar" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4164 +msgid "" +"Could not regain access to the device after applying the configuration " +"changes. You might need to reconnect if you modified network related " +"settings such as the IP address or wireless security credentials." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:189 +msgid "Country" +msgstr "País" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:889 +msgid "Country Code" +msgstr "Còde de país" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:491 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1942 +msgid "Create / Assign firewall-zone" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:798 +msgid "Create interface" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:416 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:730 +msgid "Creates a bridge over specified interface(s)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:170 +msgid "Critical" +msgstr "Critic" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:174 +msgid "Cron Log Level" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:533 +msgid "Current power" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:568 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:570 +#: modules/luci-compat/luasrc/view/cbi/network_ifacelist.htm:51 +#: modules/luci-compat/luasrc/view/cbi/network_ifacelist.htm:53 +#: modules/luci-compat/luasrc/view/cbi/network_ifacelist.htm:82 +#: modules/luci-compat/luasrc/view/cbi/network_ifacelist.htm:83 +msgid "Custom Interface" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:36 +msgid "Custom delegated IPv6-prefix" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:382 +msgid "" +"Custom files (certificates, scripts) may remain on the system. To prevent " +"this, perform a factory-reset first." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/timer.js:6 +msgid "Custom flash interval (kernel: timer)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:59 +msgid "" +"Customizes the behaviour of the device LEDs if possible." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1353 +msgid "DAE-Client" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1358 +msgid "DAE-Port" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1363 +msgid "DAE-Secret" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:327 +msgid "DHCP Server" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:155 +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:50 +msgid "DHCP and DNS" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:1982 +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:16 +#: modules/luci-compat/luasrc/model/network.lua:969 +msgid "DHCP client" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:619 +msgid "DHCP-Options" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_dhcpv6.lua:7 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:7 +msgid "DHCPv6 client" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:646 +msgid "DHCPv6-Mode" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:631 +msgid "DHCPv6-Service" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:45 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:46 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:47 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:48 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:49 +msgid "DNS" +msgstr "DNS" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:277 +msgid "DNS forwardings" +msgstr "" + +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:37 +msgid "DNS-Label / FQDN" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:228 +msgid "DNSSEC" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:232 +msgid "DNSSEC check unsigned" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:99 +msgid "DPD Idle Timeout" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:41 +msgid "DS-Lite AFTR address" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:887 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:45 +msgid "DSL" +msgstr "DSL" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:14 +msgid "DSL Status" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:920 +msgid "DSL line mode" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1088 +msgid "DTIM Interval" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:57 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:58 +msgid "DUID" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:22 +msgid "Data Rate" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:165 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:176 +msgid "Debug" +msgstr "Desbugatge" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1328 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1343 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1358 +msgid "Default %d" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:107 +msgid "Default Route" +msgstr "Rota per defaut" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:48 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:85 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:65 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:49 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:67 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:80 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:108 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:150 +msgid "Default gateway" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:646 +msgid "Default is stateless + stateful" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/default-on.js:11 +msgid "Default state" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:619 +msgid "" +"Define additional DHCP options, for example " +"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " +"servers to clients." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2237 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2662 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2666 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3154 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2872 +#: modules/luci-compat/luasrc/view/cbi/nsection.htm:11 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:162 +#: modules/luci-compat/luasrc/view/cbi/tsection.htm:16 +msgid "Delete" +msgstr "Suprimir" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:180 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:186 +msgid "Delete key" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769 +msgid "Delete request failed: %s" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:847 +msgid "Delete this network" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1088 +msgid "Delivery Traffic Indication Message Interval" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:340 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:134 +msgid "Description" +msgstr "Descripcion" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2868 +msgid "Deselect" +msgstr "Deseleccionar" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:220 +msgid "Design" +msgstr "Concepcion" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:384 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:70 +msgid "Destination" +msgstr "Destinacion" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:48 +msgid "Destination port" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:59 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:165 +msgid "Destination zone" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:67 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:191 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:43 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:45 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:80 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:55 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:12 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:247 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:280 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:356 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:392 +msgid "Device" +msgstr "Periferic" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:861 +msgid "Device Configuration" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:132 +msgid "Device is not active" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:224 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:599 +msgid "Device is restarting…" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:45 +msgid "Device not managed by ModemManager." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4163 +msgid "Device unreachable!" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:53 +msgid "Device unreachable! Still waiting for device..." +msgstr "" + +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:88 +msgid "Diagnostics" +msgstr "Diagnostics" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:101 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:93 +msgid "Dial number" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665 +msgid "Directory" +msgstr "Direccion" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:839 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:879 +msgid "Disable" +msgstr "Desactivar" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:579 +msgid "" +"Disable DHCP for " +"this interface." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:174 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:373 +msgid "Disable DNS lookups" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:93 +msgid "Disable Encryption" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1098 +msgid "Disable Inactivity Polling" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:837 +msgid "Disable this network" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1608 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:66 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:107 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:99 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:51 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:95 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:82 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:56 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:69 +msgid "Disabled" +msgstr "Desactivat" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1112 +msgid "Disassociate On Low Acknowledgement" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:294 +msgid "Discard upstream RFC1918 responses" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:197 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:665 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:231 +msgid "Disconnect" +msgstr "Se desconnectar" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:64 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:22 +msgid "Disconnection attempt failed" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:48 +msgid "Disconnection attempt failed." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:606 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2861 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3309 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4045 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4134 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1688 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:330 +msgid "Dismiss" +msgstr "Far desaparéisser" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:895 +msgid "Distance Optimization" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:895 +msgid "Distance to farthest network member in meters." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:155 +msgid "" +"Dnsmasq is a combined DHCP-Server and DNS-" +"Forwarder for NAT " +"firewalls" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:252 +msgid "Do not cache negative replies, e.g. for not existing domains" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:79 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:84 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:81 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:86 +msgid "Do not create host route to peer (optional)." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:219 +msgid "Do not forward requests that cannot be answered by public name servers" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:214 +msgid "Do not forward reverse lookups for local networks" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:25 +msgid "Do not send a hostname" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2755 +msgid "Do you really want to delete \"%s\" ?" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:181 +msgid "Do you really want to delete the following SSH key?" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:94 +msgid "Do you really want to erase all settings?" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2753 +msgid "Do you really want to recursively delete the directory \"%s\" ?" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:168 +msgid "Domain required" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:307 +msgid "Domain whitelist" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:76 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:81 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:67 +msgid "Don't Fragment" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:169 +msgid "" +"Don't forward DNS-Requests without " +"DNS-Name" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:152 +msgid "Down" +msgstr "Bas" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:402 +msgid "Down Delay" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:366 +msgid "Download backup" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:404 +msgid "Download mtdblock" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:925 +msgid "Downstream SNR offset" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2620 +msgid "Drag to reorder" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:341 +msgid "Drop Duplicate Frames" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:12 +msgid "Dropbear Instance" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:10 +msgid "" +"Dropbear offers SSH network shell access " +"and an integrated SCP server" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:14 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:11 +msgid "Dual-Stack Lite (RFC6333)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:595 +msgid "Dynamic DHCP" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:60 +msgid "Dynamic tunnel" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:595 +msgid "" +"Dynamically allocate DHCP addresses for clients. If disabled, only clients " +"having static leases will be served." +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:67 +msgid "EA-bits length" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1491 +msgid "EAP-Method" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2640 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2643 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3017 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:154 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:160 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:339 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:844 +msgid "Edit" +msgstr "Editar" + +#: modules/luci-compat/luasrc/view/cbi/error.htm:13 +msgid "" +"Edit the raw configuration data above to fix any error and hit \"Save\" to " +"reload the page." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:842 +msgid "Edit this network" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:793 +msgid "Edit wireless network" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:172 +msgid "Emergency" +msgstr "Urgéncia" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:839 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:879 +msgid "Enable" +msgstr "Activar" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:462 +msgid "" +"Enable IGMP " +"snooping" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:460 +msgid "Enable STP" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:174 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:367 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:373 +msgid "Enable DNS lookups" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:292 +msgid "Enable Dynamic Shuffling Of Flows" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:60 +msgid "Enable HE.net dynamic endpoint update" +msgstr "" + +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:89 +msgid "Enable IPv6 negotiation" +msgstr "" + +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:49 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:93 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:80 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:54 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:67 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:93 +msgid "Enable IPv6 negotiation on the PPP link" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:192 +msgid "Enable Jumbo Frame passthrough" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:240 +msgid "Enable NTP client" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:96 +msgid "Enable Single DES" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:368 +msgid "Enable TFTP server" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:184 +msgid "Enable VLAN functionality" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1638 +msgid "Enable WPS pushbutton, requires WPA(2)-PSK/WPA3-SAE" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1634 +msgid "Enable key reinstallation (KRACK) countermeasures" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:187 +msgid "Enable learning and aging" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:198 +msgid "Enable mirroring of incoming packets" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:199 +msgid "Enable mirroring of outgoing packets" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:882 +msgid "" +"Enable packet steering across all CPUs. May help or hinder network speed." +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:80 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:75 +msgid "Enable rx checksum" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:76 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:81 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:67 +msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:837 +msgid "Enable this network" +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:84 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:79 +msgid "Enable tx checksum" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:243 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:352 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:66 +msgid "Enabled" +msgstr "Activat" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:462 +msgid "Enables IGMP snooping on this bridge" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1431 +msgid "" +"Enables fast roaming among access points that belong to the same Mobility " +"Domain" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:460 +msgid "Enables the Spanning Tree Protocol on this bridge" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:59 +msgid "Encapsulation limit" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:915 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:973 +msgid "Encapsulation mode" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:159 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:183 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1117 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1666 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:45 +msgid "Encryption" +msgstr "Chiframent" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:161 +msgid "Endpoint Host" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:165 +msgid "Endpoint Port" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/dropdown.htm:16 +msgid "Enter custom value" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/dropdown.htm:16 +msgid "Enter custom values" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:97 +msgid "Erasing..." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:102 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:103 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:104 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:105 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:106 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:169 +msgid "Error" +msgstr "Error" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:30 +msgid "Errored seconds (ES)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2889 +#: modules/luci-compat/luasrc/model/network.lua:1433 +msgid "Ethernet Adapter" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2880 +#: modules/luci-compat/luasrc/model/network.lua:1423 +msgid "Ethernet Switch" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:270 +msgid "Every 30 seconds (slow, 0)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:271 +msgid "Every second (fast, 1)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:406 +msgid "Exclude interfaces" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:247 +msgid "Expand hosts" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:198 +msgid "Expecting a hexadecimal assignment hint" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:64 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:73 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:79 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:107 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:121 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:125 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:129 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:132 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:136 +msgid "Expecting: %s" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:48 +msgid "Expecting: non-empty value" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:50 +msgid "Expires" +msgstr "Expira" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:591 +msgid "" +"Expiry time of leased addresses, minimum is 2 minutes (2m)." +msgstr "" + +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:19 +msgid "External" +msgstr "Extèrne" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1482 +msgid "External R0 Key Holder List" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1486 +msgid "External R1 Key Holder List" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:146 +msgid "External system log server" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:151 +msgid "External system log server port" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:156 +msgid "External system log server protocol" +msgstr "" + +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:79 +msgid "Extra SSH command options" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:83 +msgid "Extra pppd options" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:81 +msgid "Extra sstpc options" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456 +msgid "FT over DS" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1457 +msgid "FT over the Air" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1454 +msgid "FT protocol" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:87 +msgid "Failed to change the system password." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4122 +msgid "Failed to confirm apply within %ds, waiting for rollback…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:37 +msgid "Failed to execute \"/etc/init.d/%s %s\" action: %s" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673 +msgid "File" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2620 +msgid "File not accessible" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2811 +msgid "Filename" +msgstr "Nom de fichièr" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:381 +msgid "Filename of the boot image advertised to clients" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:191 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:314 +msgid "Filesystem" +msgstr "Sistèma de fichièrs" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:213 +msgid "Filter private" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:218 +msgid "Filter useless" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:388 +msgid "Filtering for all slaves, no validation" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:389 +msgid "Filtering for all slaves, validation only for active slave" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:390 +msgid "Filtering for all slaves, validation only for backup slaves" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:65 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:23 +msgid "Finalizing failed" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:150 +msgid "" +"Find all currently attached filesystems and swap and replace configuration " +"with defaults based on what was detected" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:820 +msgid "Find and join network" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/delegator.htm:9 +msgid "Finish" +msgstr "Acabar" + +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:15 +msgid "Firewall" +msgstr "Parafuòc" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:102 +msgid "Firewall Mark" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:326 +msgid "Firewall Settings" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:297 +msgid "Firewall Status" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:932 +msgid "Firmware File" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:57 +msgid "Firmware Version" +msgstr "Version del microcòdi" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:327 +msgid "Fixed source port for outbound DNS queries" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:283 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:421 +msgid "Flash image..." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:279 +msgid "Flash image?" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:411 +msgid "Flash new firmware image" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:356 +msgid "Flash operations" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:288 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:290 +msgid "Flashing…" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:598 +msgid "Force" +msgstr "Fòrça" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:907 +msgid "Force 40MHz mode" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1158 +msgid "Force CCMP (AES)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:598 +msgid "Force DHCP on this network even if another server is detected." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1159 +msgid "Force TKIP" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1160 +msgid "Force TKIP and CCMP (AES)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:864 +msgid "Force link" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:255 +msgid "Force upgrade" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:90 +msgid "Force use of NAT-T" +msgstr "" + +#: modules/luci-base/luasrc/view/csrftoken.htm:8 +msgid "Form token mismatch" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:164 +msgid "Forward DHCP traffic" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:29 +msgid "Forward Error Correction Seconds (FECS)" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:161 +msgid "Forward broadcast traffic" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:934 +msgid "Forward mesh peer traffic" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:980 +msgid "Forwarding mode" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:899 +msgid "Fragmentation Threshold" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:115 +msgid "" +"Further information about WireGuard interfaces and peers at wireguard.com." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:128 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:184 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:62 +msgid "GHz" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:91 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:77 +msgid "GPRS only" +msgstr "solament GPRS" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:10 +msgid "GRE tunnel over IPv4" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:10 +msgid "GRE tunnel over IPv6" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:10 +msgid "GRETAP tunnel over IPv4" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:10 +msgid "GRETAP tunnel over IPv6" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:44 +msgid "Gateway" +msgstr "Palanca" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:36 +msgid "Gateway Ports" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:11 +#: modules/luci-compat/luasrc/model/network.lua:29 +msgid "Gateway address is invalid" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:124 +msgid "Gateway metric" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:161 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:323 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:24 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:240 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:108 +msgid "General Settings" +msgstr "Paramètres generals" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:552 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:967 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:865 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:921 +msgid "General Setup" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:150 +msgid "Generate Config" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:66 +msgid "Generate Key" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1460 +msgid "Generate PMK locally" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:368 +msgid "Generate archive" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:79 +msgid "Given password confirmation did not match, password not changed!" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:146 +msgid "Global Settings" +msgstr "Configuracion generala" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:875 +msgid "Global network options" +msgstr "" + +#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:57 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215 +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:58 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:82 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:284 +msgid "Go to password configuration..." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2562 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3336 +#: modules/luci-compat/luasrc/view/cbi/full_valueheader.htm:4 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:58 +msgid "Go to relevant configuration page" +msgstr "" + +#: modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json:33 +msgid "Grant access to DHCP configuration" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:102 +msgid "Grant access to DHCP status display" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:111 +msgid "Grant access to DSL status display" +msgstr "" + +#: protocols/luci-proto-openconnect/root/usr/share/rpcd/acl.d/luci-openconnect.json:3 +msgid "Grant access to LuCI OpenConnect procedures" +msgstr "" + +#: protocols/luci-proto-wireguard/root/usr/share/rpcd/acl.d/luci-wireguard.json:3 +msgid "Grant access to LuCI Wireguard procedures" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:19 +msgid "Grant access to SSH configuration" +msgstr "" + +#: modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json:12 +msgid "Grant access to basic LuCI procedures" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:64 +msgid "Grant access to crontab configuration" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:60 +msgid "Grant access to firewall status" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:116 +msgid "Grant access to flash operations" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:86 +msgid "Grant access to main status display" +msgstr "" + +#: protocols/luci-proto-modemmanager/root/usr/share/rpcd/acl.d/luci-proto-modemmanager.json:3 +msgid "Grant access to mmcli" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:84 +msgid "Grant access to mount configuration" +msgstr "" + +#: modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json:3 +msgid "Grant access to network configuration" +msgstr "" + +#: modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json:46 +msgid "Grant access to network diagnostic tools" +msgstr "" + +#: modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json:36 +msgid "Grant access to network status information" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:13 +msgid "Grant access to process status" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:3 +msgid "Grant access to realtime statistics" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:42 +msgid "Grant access to startup configuration" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:3 +msgid "Grant access to system configuration" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:30 +msgid "Grant access to system logs" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:47 +msgid "Grant access to the system route status" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:120 +msgid "Grant access to wireless status display" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:66 +msgid "Group Password" +msgstr "Senhal del grop" + +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:22 +msgid "Guest" +msgstr "Convidat" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:81 +msgid "HE.net password" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:73 +msgid "HE.net username" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:46 +msgid "Hang Up" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:34 +msgid "Header Error Code Errors (HEC)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/heartbeat.js:5 +msgid "Heartbeat interval (kernel: heartbeat)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:100 +msgid "" +"Here you can configure the basic aspects of your device like its hostname or " +"the timezone." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1066 +msgid "Hide ESSID" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:264 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:303 +msgid "Hide empty chains" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:55 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2070 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:56 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:140 +msgid "Host" +msgstr "Òste" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js:22 +msgid "Host entries" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:171 +msgid "Host expiry timeout" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:31 +msgid "Host-IP or Network" +msgstr "" + +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:102 +msgid "Host-Uniq tag content" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:36 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:419 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js:27 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:54 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:29 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:121 +msgid "Hostname" +msgstr "Nom d'òste" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:22 +msgid "Hostname to send when requesting DHCP" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js:20 +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:63 +msgid "Hostnames" +msgstr "Noms d'òstes" + +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:24 +msgid "Hybrid" +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:53 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:48 +msgid "ID used to uniquely identify the VXLAN" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:206 +msgid "IEEE 802.3ad Dynamic link aggregation (802.3ad, 4)" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:75 +msgid "IKE DH Group" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:83 +msgid "IP Addresses" +msgstr "" + +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:80 +msgid "IP Protocol" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:114 +msgid "IP Type" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js:31 +msgid "IP address" +msgstr "Adreça IP" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:10 +#: modules/luci-compat/luasrc/model/network.lua:28 +msgid "IP address is invalid" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:13 +#: modules/luci-compat/luasrc/model/network.lua:31 +msgid "IP address is missing" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:79 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:102 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:85 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:86 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:87 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:88 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:89 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:82 +msgid "IPv4" +msgstr "IPv4" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:316 +msgid "IPv4 Firewall" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:29 +msgid "IPv4 Upstream" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:178 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:162 +msgid "IPv4 address" +msgstr "Adreça IPv4" + +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:33 +msgid "IPv4 assignment length" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:181 +msgid "IPv4 broadcast" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:180 +msgid "IPv4 gateway" +msgstr "Palanca IPv4" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:179 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:168 +msgid "IPv4 netmask" +msgstr "Masqueta ret IPv4" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:291 +msgid "IPv4 network in address/netmask notation" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:116 +msgid "IPv4 only" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:52 +msgid "IPv4 prefix" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:61 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:55 +msgid "IPv4 prefix length" +msgstr "" + +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:83 +msgid "IPv4+IPv6" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:37 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:30 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:154 +msgid "IPv4-Address" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:164 +msgid "IPv4-Gateway" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ipip.lua:9 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:10 +msgid "IPv4-in-IPv4 (RFC2003)" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:115 +msgid "IPv4/IPv6 (both - defaults to IPv4)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:80 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:103 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:90 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:91 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:92 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:93 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:94 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:95 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:96 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:97 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:98 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:99 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:84 +msgid "IPv6" +msgstr "IPv6" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:319 +msgid "IPv6 Firewall" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:203 +msgid "IPv6 Neighbours" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:554 +msgid "IPv6 Settings" +msgstr "Paramètres IPv6" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:879 +msgid "IPv6 ULA-Prefix" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:29 +msgid "IPv6 Upstream" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:205 +msgid "IPv6 address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:189 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:31 +msgid "IPv6 assignment hint" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:184 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:27 +msgid "IPv6 assignment length" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:210 +msgid "IPv6 gateway" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:296 +msgid "IPv6 network in address/netmask notation" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:117 +msgid "IPv6 only" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:53 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:59 +msgid "IPv6 prefix" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:57 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:63 +msgid "IPv6 prefix length" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:214 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:57 +msgid "IPv6 routed prefix" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:218 +msgid "IPv6 suffix" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:51 +msgid "IPv6 support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:56 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:57 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:172 +msgid "IPv6-Address" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:100 +msgid "IPv6-PD" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_6x4.lua:13 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:10 +msgid "IPv6-in-IPv4 (RFC4213)" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_6x4.lua:17 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:9 +msgid "IPv6-over-IPv4 (6rd)" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_6x4.lua:15 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:9 +msgid "IPv6-over-IPv4 (6to4)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1593 +msgid "Identity" +msgstr "Identitat" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:96 +msgid "If checked, 1DES is enabled" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:51 +msgid "If checked, adds \"+ipv6\" to the pppd options" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:93 +msgid "If checked, encryption is disabled" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:254 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:360 +msgid "" +"If specified, mount the device by its UUID instead of a fixed device node" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:267 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:376 +msgid "" +"If specified, mount the device by the partition label instead of a fixed " +"device node" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:37 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:116 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:48 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:85 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:65 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:49 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:33 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:67 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:80 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:108 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:150 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:64 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:56 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:100 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:87 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:61 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:74 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:97 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:61 +msgid "If unchecked, no default route is configured" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:40 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:124 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:39 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:116 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:68 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:59 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:103 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:90 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:64 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:77 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:100 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:69 +msgid "If unchecked, the advertised DNS server addresses are ignored" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:339 +msgid "" +"If your physical memory is insufficient unused data can be temporarily " +"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " +"slow process as the swap-device cannot be accessed with the high datarates " +"of the RAM." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:197 +msgid "Ignore /etc/hosts" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:579 +msgid "Ignore interface" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:185 +msgid "Ignore resolve file" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:419 +msgid "Image" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:67 +msgid "In" +msgstr "" + +#: modules/luci-base/luasrc/view/csrftoken.htm:13 +msgid "" +"In order to prevent unauthorized access to the system, your request has been " +"blocked. Click \"Continue »\" below to return to the previous page." +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:157 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:141 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:128 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:106 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:115 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:138 +msgid "Inactivity timeout" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:265 +msgid "Inbound:" +msgstr "Dintrant :" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:90 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:95 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:92 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:97 +msgid "Incoming checksum" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:82 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:87 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:84 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:89 +msgid "Incoming key" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:92 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:97 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:94 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:99 +msgid "Incoming serialization" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:166 +msgid "Info" +msgstr "Info" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:101 +msgid "Information" +msgstr "Informacion" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:67 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:25 +msgid "Initialization failure" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:77 +msgid "Initscript" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:111 +msgid "Initscripts" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1577 +msgid "Inner certificate constraint (Domain)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1574 +msgid "Inner certificate constraint (SAN)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1571 +msgid "Inner certificate constraint (Subject)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1580 +msgid "Inner certificate constraint (Wildcard)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:268 +msgid "Install protocol extensions..." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1938 +msgid "" +"Instead of joining any network with a matching SSID, only connect to the " +"BSSID %h." +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/map.htm:43 +msgid "Insufficient permissions to read UCI configuration." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:464 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:471 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:735 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:739 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:27 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:156 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:174 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:17 +msgid "Interface" +msgstr "Interfàcia" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:62 +msgid "Interface %q device auto-migrated from %q to %q." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:917 +msgid "Interface Configuration" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:110 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:151 +msgid "Interface has %d pending changes" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:92 +msgid "Interface is disabled" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:64 +msgid "Interface is marked for deletion" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:209 +msgid "Interface is reconnecting..." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:193 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:203 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:209 +msgid "Interface is shutting down..." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:253 +msgid "Interface is starting..." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:256 +msgid "Interface is stopping..." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1079 +msgid "Interface name" +msgstr "Nom de l’interfàcia" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:122 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:272 +msgid "Interface not present or not connected yet." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:308 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:335 +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:38 +msgid "Interfaces" +msgstr "Interfàcias" + +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:20 +msgid "Internal" +msgstr "Intèrne" + +#: modules/luci-base/luasrc/view/error500.htm:8 +msgid "Internal Server Error" +msgstr "Error intèrna de servidor" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:283 +msgid "Interval For Sending Learning Packets" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:192 +#: modules/luci-compat/luasrc/view/cbi/tsection.htm:42 +msgid "Invalid" +msgstr "Invalid" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:19 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:22 +msgid "Invalid Base64 key string" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:285 +msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:294 +msgid "Invalid VLAN ID given! Only unique IDs are allowed" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:403 +msgid "Invalid argument" +msgstr "Argument invalid" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:46 +msgid "" +"Invalid bearer list. Possibly too many bearers created. This protocol " +"supports one and only one bearer." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:402 +msgid "Invalid command" +msgstr "Comanda invalida" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:106 +msgid "Invalid hexadecimal value" +msgstr "" + +#: modules/luci-base/luasrc/view/sysauth.htm:12 +msgid "Invalid username and/or password! Please try again." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:71 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:76 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:76 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:81 +msgid "Invalid value" +msgstr "La valor es pas valida" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1075 +msgid "Isolate Clients" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:231 +msgid "" +"It appears that you are trying to flash an image that does not fit into the " +"flash memory, please verify the image file!" +msgstr "" + +#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:64 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:222 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:72 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:291 +msgid "JavaScript required!" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1746 +msgid "Join Network" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1680 +msgid "Join Network: Wireless Scan" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1946 +msgid "Joining Network: %q" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:223 +msgid "Keep settings and retain the current configuration" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/dmesg.js:20 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:51 +msgid "Kernel Log" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:58 +msgid "Kernel Version" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1369 +msgid "Key" +msgstr "Clau" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1397 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1398 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1399 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1400 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1412 +msgid "Key #%d" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:82 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:87 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:84 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:89 +msgid "Key for incoming packets (optional)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:86 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:91 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:88 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:93 +msgid "Key for outgoing packets (optinal)." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:54 +msgid "Kill" +msgstr "Tuar" + +#: modules/luci-compat/luasrc/model/network/proto_ppp.lua:21 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:10 +msgid "L2TP" +msgstr "" + +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:40 +msgid "L2TP Server" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:267 +msgid "LACPDU Packets" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:131 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:115 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:102 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:76 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:89 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:112 +msgid "LCP echo failure threshold" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:144 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:128 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:115 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:89 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:102 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:125 +msgid "LCP echo interval" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:101 +msgid "LED Configuration" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:974 +msgid "LLC" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:267 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:376 +msgid "Label" +msgstr "Etiqueta" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:209 +msgid "Language" +msgstr "Lenga" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:111 +msgid "Language and Style" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:24 +msgid "Latency" +msgstr "Laténcia" + +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:21 +msgid "Leaf" +msgstr "Fuèlha" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:495 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:591 +msgid "Lease time" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:39 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:58 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:32 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:59 +msgid "Lease time remaining" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:181 +msgid "Leasefile" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:41 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:47 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:50 +msgid "Leave empty to autodetect" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:40 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:39 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:39 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:45 +msgid "Leave empty to use the current WAN address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4030 +msgid "Legend:" +msgstr "Legenda :" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:586 +msgid "Limit" +msgstr "Limit" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:389 +msgid "Limit DNS service to subnets interfaces on which we are serving DNS." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:402 +msgid "Limit listening to these interfaces, and loopback." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:25 +msgid "Line Attenuation (LATN)" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:18 +msgid "Line Mode" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:17 +msgid "Line State" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:19 +msgid "Line Uptime" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:123 +msgid "Link Aggregation (Channel Bonding)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:348 +msgid "Link Monitoring" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:23 +msgid "Link On" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:278 +msgid "" +"List of DNS servers to forward " +"requests to" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1482 +msgid "" +"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" +"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " +"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " +"from the R0KH that the STA used during the Initial Mobility Domain " +"Association." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1486 +msgid "" +"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " +"as 6 octets with colons,128-bit key as hex string.
    This list is used " +"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " +"R0KH. This is also the list of authorized R1KHs in the MD that can request " +"PMK-R1 keys." +msgstr "" + +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:82 +msgid "List of SSH key files for auth" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:308 +msgid "List of domains to allow RFC1918 responses for" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:286 +msgid "List of domains to force to an IP address." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:267 +msgid "List of hosts that supply bogus NX domain results" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:401 +msgid "Listen Interfaces" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:78 +msgid "Listen Port" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:17 +msgid "Listen only on the given interface or, if unspecified, on all" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:318 +msgid "Listening port for inbound DNS queries" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:87 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:54 +msgid "Load" +msgstr "Carga" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:61 +msgid "Load Average" +msgstr "Carga mejana" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2938 +msgid "Loading directory contents…" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:1948 +#: modules/luci-base/luasrc/view/view.htm:4 +#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:12 +msgid "Loading view…" +msgstr "" + +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:77 +msgid "Local IP address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:12 +#: modules/luci-compat/luasrc/model/network.lua:30 +msgid "Local IP address is invalid" +msgstr "" + +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:86 +msgid "Local IP address to assign" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:46 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:46 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:44 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:40 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:39 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:39 +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:151 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:44 +msgid "Local IPv4 address" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:46 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:46 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:54 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:45 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:44 +msgid "Local IPv6 address" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:388 +msgid "Local Service Only" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:115 +msgid "Local Startup" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:59 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:117 +msgid "Local Time" +msgstr "Ora locala" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:243 +msgid "Local domain" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:240 +msgid "" +"Local domain specification. Names matching this domain are never forwarded " +"and are resolved from DHCP or hosts files only" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:244 +msgid "Local domain suffix appended to DHCP names and hosts file entries" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:239 +msgid "Local server" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:224 +msgid "" +"Localise hostname depending on the requesting subnet if multiple IPs are " +"available" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:223 +msgid "Localise queries" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1938 +msgid "Lock to BSSID" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:164 +msgid "Log output level" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:274 +msgid "Log queries" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:109 +msgid "Logging" +msgstr "Jornalizacion" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:50 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:50 +msgid "" +"Logical network from which to select the local endpoint if local IPv6 " +"address is empty and no WAN IPv6 is available (optional)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:50 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:55 +msgid "Logical network to which the tunnel will be added (bridged) (optional)." +msgstr "" + +#: modules/luci-base/luasrc/view/sysauth.htm:38 +msgid "Login" +msgstr "Connexion" + +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:81 +msgid "Logout" +msgstr "Desconnexion" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:32 +msgid "Loss of Signal Seconds (LOSS)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:581 +msgid "Lowest leased address as offset from the network address." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:47 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:82 +msgid "MAC" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:251 +msgid "MAC Address For The Actor" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:38 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2069 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:56 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:31 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:139 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:155 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:173 +msgid "MAC-Address" +msgstr "Adreça MAC" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1011 +msgid "MAC-Address Filter" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:923 +msgid "MAC-Filter" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1018 +msgid "MAC-List" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:16 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:13 +msgid "MAP / LW4over6" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:62 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:7 +msgid "MAP rule is invalid" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:321 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:322 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:323 +msgid "MBit/s" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:218 +msgid "MD5" +msgstr "MD5" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:199 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:71 +msgid "MHz" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:353 +msgid "MII" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:421 +msgid "MII / ETHTOOL ioctls" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:394 +msgid "MII Interval" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:54 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:53 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:97 +msgid "MTU" +msgstr "MTU" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:302 +msgid "" +"Make sure to clone the root filesystem using something like the commands " +"below:" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:108 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:100 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:52 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:96 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:83 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:57 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:70 +msgid "Manual" +msgstr "Manual" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:3664 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:642 +msgid "Master" +msgstr "Principal" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:23 +msgid "Max. Attainable Data Rate (ATTNDR)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1107 +msgid "Maximum allowed Listen Interval" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:336 +msgid "Maximum allowed number of active DHCP leases" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:354 +msgid "Maximum allowed number of concurrent DNS queries" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:345 +msgid "Maximum allowed size of EDNS.0 UDP packets" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:112 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:104 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:93 +msgid "Maximum amount of seconds to wait for the modem to become ready" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:586 +msgid "Maximum number of leased addresses." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:886 +msgid "Maximum transmit power" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:129 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:188 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:199 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:63 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:71 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:327 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:328 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:329 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:35 +msgid "Medium" +msgstr "Mejan" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:24 +msgid "Memory" +msgstr "Memòria" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:73 +msgid "Memory usage (%)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:3667 +msgid "Mesh" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:156 +msgid "Mesh ID" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:931 +msgid "Mesh Id" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:404 +msgid "Method not found" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:349 +msgid "Method of link monitoring" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:418 +msgid "Method to determine link status" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:46 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:165 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:183 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:92 +msgid "Metric" +msgstr "Metric" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:235 +msgid "Minimum Number of Links" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:202 +msgid "Mirror monitor port" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:201 +msgid "Mirror source port" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_modemmanager.lua:9 +msgid "Mobile Data" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1442 +msgid "Mobility Domain" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/wireless_modefreq.htm:154 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:157 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:180 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:442 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:926 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1664 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:43 +msgid "Mode" +msgstr "Mòde" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:55 +msgid "Model" +msgstr "Modèl" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:43 +msgid "Modem bearer teardown in progress." +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:42 +msgid "" +"Modem connection in progress. Please wait. This process will timeout after 2 " +"minutes." +msgstr "" + +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:72 +msgid "Modem default" +msgstr "Modem per defaut" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:73 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:82 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:61 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:73 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:57 +msgid "Modem device" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:41 +msgid "Modem disconnection in progress. Please wait." +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:66 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:24 +msgid "Modem information query failed" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:112 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:104 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:93 +msgid "Modem init timeout" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:44 +msgid "Modem is disabled." +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:52 +msgid "ModemManager" +msgstr "ModemManager" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:3668 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1005 +msgid "Monitor" +msgstr "Monitor" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:31 +msgid "More Characters" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2504 +msgid "More…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:192 +msgid "Mount Point" +msgstr "Punt de montatge" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:144 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:228 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:88 +msgid "Mount Points" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:229 +msgid "Mount Points - Mount Entry" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:340 +msgid "Mount Points - Swap Entry" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:228 +msgid "" +"Mount Points define at which point a memory device will be attached to the " +"filesystem" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:154 +msgid "Mount attached devices" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:162 +msgid "Mount filesystems not specifically configured" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:331 +msgid "Mount options" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:292 +msgid "Mount point" +msgstr "Punt de montatge" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:158 +msgid "Mount swap not specifically configured" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:223 +msgid "Mounted file systems" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:152 +msgid "Move down" +msgstr "Desplaçar cap aval" + +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:151 +msgid "Move up" +msgstr "Desplaçar cap amont" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1437 +msgid "NAS ID" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:87 +msgid "NAT-T Mode" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:41 +msgid "NAT64 Prefix" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:26 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:31 +msgid "NCM" +msgstr "NCM" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:637 +msgid "NDP-Proxy" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:72 +msgid "NT Domain" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:274 +msgid "NTP server candidates" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2542 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3785 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:710 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:67 +msgid "Name" +msgstr "Nom" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1916 +msgid "Name of the new network" +msgstr "" + +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:40 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:50 +msgid "Navigation" +msgstr "Navigacion" + +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:45 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:959 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2068 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:381 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:63 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:138 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:162 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:180 +msgid "Network" +msgstr "Ret" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:68 +msgid "Network Utilities" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:380 +msgid "Network boot image" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:7 +msgid "Network device activity (kernel: netdev)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:15 +#: modules/luci-compat/luasrc/model/network.lua:33 +msgid "Network device is not present" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:50 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:55 +msgid "Network interface" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:777 +msgid "New interface for \"%s\" can not be created: %s" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:713 +msgid "New interface name…" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/delegator.htm:11 +msgid "Next »" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:3643 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:296 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:345 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:108 +msgid "No" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:562 +msgid "No DHCP Server configured for this interface" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1310 +msgid "No Encryption" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:87 +msgid "No Host Routes" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:89 +msgid "No NAT-T" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:79 +msgid "No RX signal" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69 +msgid "No client associated" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:406 +msgid "No data received" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2878 +msgid "No entries in this directory" +msgstr "" + +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82 +msgid "No files found" +msgstr "Pas cap de fichièr trobat" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:79 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:84 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:81 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:86 +msgid "No host route" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:674 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:142 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:241 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:59 +msgid "No information available" +msgstr "Pas cap d'informacion disponibla" + +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:63 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:8 +msgid "No matching prefix delegation" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:140 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:143 +msgid "No more slaves available" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:187 +msgid "No more slaves available, can not save interface" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:251 +msgid "No negative cache" +msgstr "" + +#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:54 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:212 +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:55 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:79 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:279 +msgid "No password set!" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:130 +msgid "No peers defined yet" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:121 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:268 +msgid "No public keys present yet." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:90 +msgid "No rules in this chain." +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:384 +msgid "No validation or filtering" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:152 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:825 +msgid "No zone assigned" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:58 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:84 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:187 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:141 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:174 +msgid "Noise" +msgstr "Bruch" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:27 +msgid "Noise Margin (SNR)" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:270 +msgid "Noise:" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:35 +msgid "Non Pre-emptive CRC errors (CRC_P)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:394 +msgid "Non-wildcard" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:159 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:183 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:100 +msgid "None" +msgstr "Cap" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:177 +msgid "Normal" +msgstr "Normala" + +#: modules/luci-base/luasrc/view/error404.htm:8 +msgid "Not Found" +msgstr "Pas trobat" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75 +msgid "Not associated" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:32 +msgid "Not connected" +msgstr "Pas connectat" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:45 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:80 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:120 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:146 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:280 +msgid "Not present" +msgstr "Pas present" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:101 +msgid "Not started on boot" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:409 +msgid "Not supported" +msgstr "Pas pres en carga" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:167 +msgid "Notice" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:127 +msgid "Nslookup" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:332 +msgid "Number of IGMP membership reports" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:362 +msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:199 +msgid "Number of parallel threads used for compression" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:309 +msgid "Number of peer notifications after failover event" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:69 +msgid "Obfuscated Group Password" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:61 +msgid "Obfuscated Password" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:105 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:97 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:49 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:93 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:80 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:54 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:67 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:93 +msgid "Obtain IPv6-Address" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/default-on.js:18 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:351 +msgid "Off" +msgstr "Desactivat" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/timer.js:15 +msgid "Off-State Delay" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/default-on.js:18 +msgid "On" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:96 +msgid "On-Link route" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/timer.js:11 +msgid "On-State Delay" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:484 +msgid "One of hostname or mac address must be specified!" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:466 +msgid "One of the following: %s" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/nullsection.htm:17 +#: modules/luci-compat/luasrc/view/cbi/ucisection.htm:22 +msgid "One or more fields contain invalid values!" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/map.htm:32 +msgid "One or more invalid/required values on tab" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/nullsection.htm:19 +#: modules/luci-compat/luasrc/view/cbi/ucisection.htm:24 +msgid "One or more required fields have no value!" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:229 +msgid "" +"Only if current active slave fails and the primary slave is up (failure, 2)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:444 +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19 +msgid "Open list..." +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_openconnect.lua:9 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:64 +msgid "OpenConnect (CISCO AnyConnect)" +msgstr "" + +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:12 +msgid "OpenFortivpn" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:882 +msgid "Operating frequency" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:1971 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3653 +msgid "Option \"%s\" contains an invalid input value." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:1984 +msgid "Option \"%s\" must not be empty." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4037 +msgid "Option changed" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4039 +msgid "Option removed" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1609 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:92 +msgid "Optional" +msgstr "Opcional" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:102 +msgid "" +"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " +"starting with 0x." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:218 +msgid "" +"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " +"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " +"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " +"for the interface." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:143 +msgid "" +"Optional. Base64-encoded preshared key. Adds in an additional layer of " +"symmetric-key cryptography for post-quantum resistance." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:159 +msgid "Optional. Create routes for Allowed IPs for this peer." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:134 +msgid "Optional. Description of peer." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:87 +msgid "Optional. Do not create host routes to peers." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:161 +msgid "" +"Optional. Host of peer. Names are resolved prior to bringing up the " +"interface." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:97 +msgid "Optional. Maximum Transmission Unit of tunnel interface." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:165 +msgid "Optional. Port of peer." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:169 +msgid "" +"Optional. Seconds between keep alive messages. Default is 0 (disabled). " +"Recommended value if this device is behind a NAT is 25." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:78 +msgid "Optional. UDP port used for outgoing and incoming packets." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:71 +msgid "Options" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:346 +msgid "Other:" +msgstr "Autre :" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:68 +msgid "Out" +msgstr "Sortissant" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:275 +msgid "Outbound:" +msgstr "Sortent :" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:91 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:96 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:93 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:98 +msgid "Outgoing checksum" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:86 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:91 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:88 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:93 +msgid "Outgoing key" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:93 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:98 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:95 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:100 +msgid "Outgoing serialization" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:50 +msgid "Output Interface" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:59 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:165 +msgid "Output zone" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:57 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:222 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:40 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:50 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:76 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:71 +msgid "Override MAC address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:61 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:226 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:67 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:44 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:53 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:54 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:120 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:158 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:71 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:145 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:132 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:110 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:119 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:97 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:77 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:62 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:57 +msgid "Override MTU" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:72 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:63 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:72 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:67 +msgid "Override TOS" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:72 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:58 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:67 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:62 +msgid "Override TTL" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1079 +msgid "Override default interface name" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:167 +msgid "Override the gateway in DHCP responses" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:603 +msgid "" +"Override the netmask sent to clients. Normally it is calculated from the " +"subnet that is served." +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:179 +msgid "Override the table used for internal routes" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:3 +msgid "Overview" +msgstr "Apercebut" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2721 +msgid "Overwrite existing file \"%s\" ?" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:70 +msgid "Owner" +msgstr "Proprietari" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:97 +msgid "PAP/CHAP (both)" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:98 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:108 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:90 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:45 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:89 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:76 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:44 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:63 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:82 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:46 +msgid "PAP/CHAP password" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:96 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:103 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:88 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:43 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:87 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:74 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:42 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:61 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:77 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:44 +msgid "PAP/CHAP username" +msgstr "Identificant PAP / CHAP" + +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:101 +msgid "PDP Type" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:69 +msgid "PID" +msgstr "PID" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:95 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:94 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:87 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:68 +msgid "PIN" +msgstr "Còdi personal" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:21 +#: modules/luci-compat/luasrc/model/network.lua:39 +msgid "PIN code rejected" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1477 +msgid "PMK R1 Push" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ppp.lua:13 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:43 +msgid "PPP" +msgstr "" + +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:58 +msgid "PPPoA Encapsulation" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ppp.lua:19 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:28 +msgid "PPPoATM" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ppp.lua:17 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:28 +msgid "PPPoE" +msgstr "PPPoE" + +#: modules/luci-compat/luasrc/model/network/proto_pppossh.lua:9 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:28 +msgid "PPPoSSH" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ppp.lua:15 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:28 +msgid "PPtP" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:73 +msgid "PSID offset" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:70 +msgid "PSID-bits length" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:918 +msgid "PTM/EFM (Packet Transfer Mode)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:882 +msgid "Packet Steering" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:53 +msgid "Packets" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:275 +msgid "Packets To Transmit Before Moving To Next Slave" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:152 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:825 +msgid "Part of zone %q" +msgstr "" + +#: modules/luci-base/luasrc/view/sysauth.htm:29 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1599 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:51 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:108 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:52 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:58 +msgid "Password" +msgstr "Senhal" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:25 +msgid "Password authentication" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1531 +msgid "Password of Private Key" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1589 +msgid "Password of inner Private Key" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:31 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:33 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:35 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:37 +msgid "Password strength" +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:111 +msgid "Password2" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:239 +msgid "Paste or drag SSH key file…" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1510 +msgid "Path to CA-Certificate" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1525 +msgid "Path to Client-Certificate" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1528 +msgid "Path to Private Key" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1568 +msgid "Path to inner CA-Certificate" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1583 +msgid "Path to inner Client-Certificate" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1586 +msgid "Path to inner Private Key" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2731 +msgid "Paused" +msgstr "En pausa" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:271 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:281 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:332 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:342 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:352 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:237 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:247 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:257 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:266 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:276 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:294 +msgid "Peak:" +msgstr "Punta :" + +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:89 +msgid "Peer IP address to assign" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:14 +#: modules/luci-compat/luasrc/model/network.lua:32 +msgid "Peer address is missing" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:115 +msgid "Peers" +msgstr "Pars" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:80 +msgid "Perfect Forward Secrecy" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:93 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:98 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:95 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:100 +msgid "Perform outgoing packets serialization (optional)." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:34 +msgid "Perform reboot" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:378 +msgid "Perform reset" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:407 +msgid "Permission denied" +msgstr "Permission refusada" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:169 +msgid "Persistent Keep Alive" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:288 +msgid "Phy Rate:" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:325 +msgid "Physical Settings" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:79 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:80 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:90 +msgid "Ping" +msgstr "Ping" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:48 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:49 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:83 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:84 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:138 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63 +msgid "Pkts." +msgstr "" + +#: modules/luci-base/luasrc/view/sysauth.htm:19 +msgid "Please enter your username and password." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3768 +msgid "Please select the file to upload." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:53 +msgid "Policy" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:21 +msgid "Port" +msgstr "Pòrt" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:278 +msgid "Port status:" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:492 +msgid "Potential negation of: %s" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:38 +msgid "Power Management Mode" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:36 +msgid "Pre-emptive CRC errors (CRCP_P)" +msgstr "" + +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:73 +msgid "Prefer LTE" +msgstr "Preferir LTE" + +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:74 +msgid "Prefer UMTS" +msgstr "Preferir UMTS" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:33 +msgid "Prefix Delegated" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:143 +msgid "Preshared Key" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:131 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:115 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:102 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:76 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:89 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:112 +msgid "" +"Presume peer to be dead after given amount of LCP echo failures, use 0 to " +"ignore failures" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:407 +msgid "Prevent listening on these interfaces." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1075 +msgid "Prevents client-to-client communication" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:211 +msgid "Primary Slave" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:228 +msgid "" +"Primary becomes active slave when it comes back up if speed and duplex " +"better than current slave (better, 1)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:227 +msgid "Primary becomes active slave whenever it comes back up (always, 0)" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:61 +msgid "Private Key" +msgstr "Clau privada" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:64 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:63 +msgid "Processes" +msgstr "Processus" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:21 +msgid "Profile" +msgstr "Perfil" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:66 +msgid "Prot." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:79 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:397 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:727 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:382 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:32 +msgid "Protocol" +msgstr "Protocòl" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:265 +msgid "Provide NTP server" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:825 +msgid "Provide new network" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1004 +msgid "Pseudo Ad-Hoc (ahdemo)" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:139 +msgid "Public Key" +msgstr "Clau publica" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:275 +msgid "" +"Public keys allow for the passwordless SSH logins with a higher security " +"compared to the use of plain passwords. In order to upload a new key to the " +"device, paste an OpenSSH compatible public key line or drag a .pub file into the input field." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:214 +msgid "Public prefix routed to this device for distribution to clients." +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_qmi.lua:9 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:27 +msgid "QMI Cellular" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:41 +msgid "Quality" +msgstr "Qualitat" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:264 +msgid "" +"Query all available upstream DNS " +"servers" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1465 +msgid "R0 Key Lifetime" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1471 +msgid "R1 Key Holder" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:88 +msgid "RFC3947 NAT-T mode" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:939 +msgid "RSSI threshold for joining" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:903 +msgid "RTS/CTS Threshold" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:48 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:83 +msgid "RX" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:142 +msgid "RX Rate" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2072 +msgid "RX Rate / TX Rate" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1343 +msgid "Radius-Accounting-Port" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1348 +msgid "Radius-Accounting-Secret" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1338 +msgid "Radius-Accounting-Server" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1328 +msgid "Radius-Authentication-Port" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1333 +msgid "Radius-Authentication-Secret" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1323 +msgid "Radius-Authentication-Server" +msgstr "" + +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:102 +msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:178 +msgid "" +"Read /etc/ethers to configure the DHCP-Server" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:402 +msgid "Really switch protocol?" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:75 +msgid "Realtime Graphs" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1448 +msgid "Reassociation Deadline" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:293 +msgid "Rebind protection" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:20 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:126 +msgid "Reboot" +msgstr "Reaviar" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:153 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:162 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:46 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:51 +msgid "Rebooting…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:21 +msgid "Reboots the operating system of your device" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:25 +msgid "Receive" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:83 +msgid "Recommended. IP addresses of the WireGuard interface." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:348 +msgid "Reconnect this interface" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56 +msgid "References" +msgstr "Referéncias" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2725 +msgid "Refreshing" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_relay.lua:153 +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:39 +msgid "Relay" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_relay.lua:157 +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:36 +msgid "Relay Bridge" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:154 +msgid "Relay between networks" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_relay.lua:12 +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:64 +msgid "Relay bridge" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:50 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:49 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:40 +msgid "Remote IPv4 address" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:42 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:42 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:40 +msgid "Remote IPv4 address or FQDN" +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:40 +msgid "Remote IPv6 address" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:42 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:42 +msgid "Remote IPv6 address or FQDN" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:849 +msgid "Remove" +msgstr "Levar" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1914 +msgid "Replace wireless configuration" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:17 +msgid "Request IPv6-address" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:23 +msgid "Request IPv6-prefix of length" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:408 +msgid "Request timeout" +msgstr "Temps passat per la requèsta" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:90 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:95 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:92 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:97 +msgid "Require incoming checksum (optional)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:92 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:97 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:94 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:99 +msgid "Require incoming packets serialization (optional)." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1610 +msgid "Required" +msgstr "Requesit" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:34 +msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:61 +msgid "Required. Base64-encoded private key for this interface." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:139 +msgid "Required. Base64-encoded public key of peer." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:148 +msgid "" +"Required. IP addresses and prefixes that this peer is allowed to use inside " +"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " +"routes through the tunnel." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1239 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1240 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1241 +msgid "Requires hostapd" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1246 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1247 +msgid "Requires hostapd with EAP Suite-B support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1244 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1245 +msgid "Requires hostapd with EAP support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1248 +msgid "Requires hostapd with OWE support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1242 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1243 +msgid "Requires hostapd with SAE support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1237 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1238 +msgid "Requires hostapd with WEP support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1607 +msgid "" +"Requires the 'full' version of wpad/hostapd and support from the wifi driver " +"
    (as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:233 +msgid "" +"Requires upstream supports DNSSEC; verify unsigned domain responses really " +"come from unsigned domains" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1253 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1254 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1255 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1267 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1268 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1269 +msgid "Requires wpa-supplicant" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1260 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1261 +msgid "Requires wpa-supplicant with EAP Suite-B support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1258 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1259 +msgid "Requires wpa-supplicant with EAP support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1262 +msgid "Requires wpa-supplicant with OWE support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1256 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1257 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1272 +msgid "Requires wpa-supplicant with SAE support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1251 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1252 +msgid "Requires wpa-supplicant with WEP support" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:224 +msgid "Reselection policy for primary slave" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2203 +#: modules/luci-base/luasrc/view/sysauth.htm:39 +#: modules/luci-compat/luasrc/view/cbi/delegator.htm:17 +#: modules/luci-compat/luasrc/view/cbi/footer.htm:30 +#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:66 +msgid "Reset" +msgstr "Reinicializar" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:308 +msgid "Reset Counters" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:376 +msgid "Reset to defaults" +msgstr "Reïnicializar" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:162 +msgid "Resolv and Hosts Files" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:188 +msgid "Resolve file" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:405 +msgid "Resource not found" +msgstr "Ressorsa introbabla" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:350 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:817 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:100 +msgid "Restart" +msgstr "Reaviar" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:313 +msgid "Restart Firewall" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:815 +msgid "Restart radio interface" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:372 +msgid "Restore" +msgstr "Restablir" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:382 +msgid "Restore backup" +msgstr "Restaurar salvagarda" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:371 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:372 +msgid "Reveal/hide password" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4053 +msgid "Revert" +msgstr "Tornar" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4138 +msgid "Revert changes" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4320 +msgid "Revert request failed with status %h" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4300 +msgid "Reverting configuration…" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:372 +msgid "Root directory for files served via TFTP" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:297 +msgid "Root preparation" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:202 +msgid "Round-Robin policy (balance-rr, 0)" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:159 +msgid "Route Allowed IPs" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:73 +msgid "Route table" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:60 +msgid "Route type" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:625 +msgid "Router Advertisement-Service" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:46 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:26 +msgid "Router Password" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:15 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:194 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:27 +msgid "Routes" +msgstr "Rotas" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:15 +msgid "" +"Routes specify over which interface and gateway a certain host or network " +"can be reached." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:206 +msgid "Rule" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:335 +msgid "Run a filesystem check before mounting the device" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:335 +msgid "Run filesystem check" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2364 +msgid "Runtime error" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:219 +msgid "SHA256" +msgstr "SHA256" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:59 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:175 +msgid "SNR" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:10 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:38 +msgid "SSH Access" +msgstr "" + +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:70 +msgid "SSH server address" +msgstr "" + +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:74 +msgid "SSH server port" +msgstr "" + +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:58 +msgid "SSH username" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:274 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:51 +msgid "SSH-Keys" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:156 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:181 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1662 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:42 +msgid "SSID" +msgstr "SSID" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:9 +msgid "SSTP" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:41 +msgid "SSTP Server" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:339 +msgid "SWAP" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2866 +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2198 +#: modules/luci-compat/luasrc/view/cbi/error.htm:17 +#: modules/luci-compat/luasrc/view/cbi/footer.htm:26 +#: modules/luci-compat/luasrc/view/cbi/header.htm:20 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:435 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:123 +msgid "Save" +msgstr "Salvagardar" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2180 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4049 +#: modules/luci-compat/luasrc/view/cbi/footer.htm:22 +msgid "Save & Apply" +msgstr "Salvagardar e aplicar" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:602 +msgid "Save error" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:406 +msgid "Save mtdblock" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:396 +msgid "Save mtdblock contents" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:822 +msgid "Scan" +msgstr "Analisar" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:26 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:76 +msgid "Scheduled Tasks" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4033 +msgid "Section added" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4035 +msgid "Section removed" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:331 +msgid "See \"mount\" manpage for details" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:257 +msgid "" +"Select 'Force upgrade' to flash the image even if the image format check " +"fails. Use only if you are sure that the firmware is correct and meant for " +"your device!" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2622 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2762 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2927 +msgid "Select file…" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:318 +msgid "Selects the transmit hash policy to use for slave selection" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:144 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:128 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:115 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:89 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:102 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:125 +msgid "" +"Send LCP echo requests at the given interval in seconds, only effective in " +"conjunction with failure threshold" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:24 +msgid "Send the hostname of this device" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:157 +msgid "Server Settings" +msgstr "Paramètres del servidor" + +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:50 +msgid "Service Name" +msgstr "Nom de servici" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:87 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:71 +msgid "Service Type" +msgstr "Tipe de servici" + +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:36 +msgid "Services" +msgstr "Servicis" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2668 +msgid "Session expired" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:107 +msgid "Set VPN as Default Route" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:864 +msgid "" +"Set interface properties regardless of the link carrier (If set, carrier " +"sense events do not invoke hotplug handlers)." +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:300 +msgid "Set same MAC Address to all slaves" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:642 +msgid "Set this interface as master for the dhcpv6 relay." +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:304 +msgid "Set to currently active slave (active, 1)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:305 +msgid "Set to first slave added to the bond (follow, 2)" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_modemmanager.lua:55 +#: modules/luci-compat/luasrc/model/network/proto_qmi.lua:55 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:23 +msgid "Setting PLMN failed" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:68 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:26 +msgid "Setting operation mode failed" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:565 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:575 +msgid "Setup DHCP Server" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:31 +msgid "Severely Errored Seconds (SES)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:208 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:80 +msgid "Short GI" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1085 +msgid "Short Preamble" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:442 +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18 +msgid "Show current backup file list" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:264 +msgid "Show empty chains" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:354 +msgid "Shutdown this interface" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:57 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:63 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:186 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1661 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:41 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:141 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:173 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:179 +msgid "Signal" +msgstr "Senhal" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2071 +msgid "Signal / Noise" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:26 +msgid "Signal Attenuation (SATN)" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:260 +msgid "Signal:" +msgstr "Senhal :" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3786 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:217 +msgid "Size" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:361 +msgid "Size of DNS query cache" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:187 +msgid "Size of the ZRam device in megabytes" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/footer.htm:18 +#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:57 +msgid "Skip" +msgstr "Ignorar" + +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:36 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:46 +msgid "Skip to content" +msgstr "" + +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:35 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:45 +msgid "Skip to navigation" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:178 +msgid "Slave Interfaces" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2883 +#: modules/luci-compat/luasrc/model/network.lua:1428 +msgid "Software VLAN" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/header.htm:5 +msgid "Some fields are invalid, cannot save values!" +msgstr "" + +#: modules/luci-base/luasrc/view/error404.htm:9 +msgid "Sorry, the object you requested was not found." +msgstr "" + +#: modules/luci-base/luasrc/view/error500.htm:9 +msgid "Sorry, the server encountered an unexpected error." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:414 +msgid "" +"Sorry, there is no sysupgrade support present; a new firmware image must be " +"flashed manually. Please refer to the wiki for device specific install " +"instructions." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:383 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:69 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:182 +msgid "Source" +msgstr "Font" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:84 +msgid "Source Address" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:50 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:50 +msgid "Source interface" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:342 +msgid "" +"Specifies that duplicate frames (received on inactive ports) should be " +"dropped or delivered" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:358 +msgid "Specifies the ARP link monitoring frequency in milliseconds" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:366 +msgid "Specifies the IP addresses to use for ARP monitoring" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:395 +msgid "Specifies the MII link monitoring frequency in milliseconds" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:259 +msgid "Specifies the aggregation selection logic to use" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:292 +msgid "Specifies the directory the device is attached to" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:252 +msgid "" +"Specifies the mac-address for the actor in protocol packet exchanges " +"(LACPDUs). If empty, masters' mac address defaults to system default" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:175 +msgid "" +"Specifies the maximum amount of failed ARP requests until hosts are presumed " +"to be dead" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:171 +msgid "" +"Specifies the maximum amount of seconds after which hosts are presumed to be " +"dead" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:886 +msgid "" +"Specifies the maximum transmit power the wireless radio may use. Depending " +"on regulatory requirements and wireless usage, the actual transmit power may " +"be reduced by the driver." +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:236 +msgid "" +"Specifies the minimum number of links that must be active before asserting " +"carrier" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:200 +msgid "Specifies the mode to be used for this bonding interface" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:333 +msgid "" +"Specifies the number of IGMP membership reports to be issued after a " +"failover event in 200ms intervals" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:276 +msgid "" +"Specifies the number of packets to transmit through a slave before moving to " +"the next one" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:310 +msgid "" +"Specifies the number of peer notifications (gratuitous ARPs and unsolicited " +"IPv6 Neighbor Advertisements) to be issued after a failover event" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:284 +msgid "" +"Specifies the number of seconds between instances where the bonding driver " +"sends learning packets to each slaves peer switch" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:374 +msgid "Specifies the quantity of ARP IP targets that must be reachable" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:268 +msgid "" +"Specifies the rate in which the link partner will be asked to transmit " +"LACPDU packets" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:225 +msgid "" +"Specifies the reselection policy for the primary slave when failure of the " +"active slave or recovery of the primary slave occurs" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:244 +msgid "Specifies the system priority" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:403 +msgid "" +"Specifies the time in milliseconds to wait before disabling a slave after a " +"link failure detection" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:411 +msgid "" +"Specifies the time in milliseconds to wait before enabling a slave after a " +"link recovery detection" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:382 +msgid "" +"Specifies whether ARP probes and replies should be validated or non-ARP " +"traffic should be filtered for link monitoring" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:301 +msgid "" +"Specifies whether active-backup mode should set all slaves to the same MAC " +"address at enslavement" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:419 +msgid "" +"Specifies whether or not miimon should use MII or ETHTOOL ioctls vs. " +"netif_carrier_ok()" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:293 +msgid "" +"Specifies whether to shuffle active flows across slaves based on the load" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:179 +msgid "" +"Specifies which slave interfaces should be attached to this bonding interface" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:212 +msgid "" +"Specifies which slave is the primary device. It will always be the active " +"slave while it is available" +msgstr "" + +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:63 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:72 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:67 +msgid "Specify a TOS (Type of Service)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:72 +msgid "" +"Specify a TOS (Type of Service). Can be either inherit (the " +"outer header inherits the value of the inner header) or an hexadecimal value " +"starting with 0x (optional)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:72 +msgid "" +"Specify a TTL (Time to Live) for the encapsulating packet other than the " +"default (64) (optional)." +msgstr "" + +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:58 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:67 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:62 +msgid "" +"Specify a TTL (Time to Live) for the encapsulating packet other than the " +"default (64)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:72 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:77 +msgid "" +"Specify a Traffic Class. Can be either inherit (the outer " +"header inherits the value of the inner header) or an hexadecimal value " +"starting with 0x (optional)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:67 +msgid "" +"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " +"bytes) (optional)." +msgstr "" + +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:53 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:62 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:57 +msgid "" +"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " +"bytes)." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1931 +msgid "Specify the secret encryption key here." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:581 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:99 +msgid "Start" +msgstr "Debuta" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:76 +msgid "Start priority" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1765 +msgid "Start refresh" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4253 +msgid "Starting configuration apply…" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1678 +msgid "Starting wireless scan..." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:109 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:64 +msgid "Startup" +msgstr "Aviada" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:19 +msgid "Static IPv4 Routes" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:19 +msgid "Static IPv6 Routes" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:165 +msgid "Static Leases" +msgstr "" + +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:76 +msgid "Static Routes" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:1981 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:172 +#: modules/luci-compat/luasrc/model/network.lua:967 +msgid "Static address" +msgstr "Adreça estatica" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:411 +msgid "" +"Static leases are used to assign fixed IP addresses and symbolic hostnames " +"to DHCP clients. They are also required for non-dynamic interface " +"configurations where only hosts with a corresponding lease are served." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1102 +msgid "Station inactivity limit" +msgstr "" + +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:16 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:385 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:871 +#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:9 +msgid "Status" +msgstr "Estatut" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:356 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:101 +msgid "Stop" +msgstr "Arrestar" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1676 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1770 +msgid "Stop refresh" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:259 +msgid "Strict order" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:33 +msgid "Strong" +msgstr "Fòrt" + +#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:61 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1956 +msgid "Submit" +msgstr "Sometre" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:203 +msgid "Suppress logging" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:204 +msgid "Suppress logging of the routine operation of these protocols" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:44 +msgid "Swap free" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:139 +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:3 +msgid "Switch" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:172 +msgid "Switch %q" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:150 +msgid "" +"Switch %q has an unknown topology - the VLAN settings might not be accurate." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2883 +#: modules/luci-compat/luasrc/model/network.lua:1426 +msgid "Switch VLAN" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:403 +msgid "Switch protocol" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:103 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:104 +#: modules/luci-compat/luasrc/view/cbi/ipaddr.htm:26 +msgid "Switch to CIDR list notation" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657 +msgid "Symbolic link" +msgstr "Ligam simbolic" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:75 +msgid "Sync with NTP-Server" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:67 +msgid "Sync with browser" +msgstr "" + +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:26 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:17 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:99 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:3 +msgid "System" +msgstr "Sistèma" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/syslog.js:25 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:39 +msgid "System Log" +msgstr "Jornal sistèma" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:243 +msgid "System Priority" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:104 +msgid "System Properties" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:141 +msgid "System log buffer size" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:336 +msgid "TCP:" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:163 +msgid "TFTP Settings" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:371 +msgid "TFTP server root" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:49 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:84 +msgid "TX" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:142 +msgid "TX Rate" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:17 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:166 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:184 +msgid "Table" +msgstr "Tablèu" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:31 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:65 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:163 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:181 +msgid "Target" +msgstr "Cibla" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:103 +msgid "Target network" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:50 +msgid "Terminate" +msgstr "Terminar" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:84 +msgid "The block mount command failed with code %d" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:77 +msgid "" +"The HE.net endpoint update configuration changed, you must now use the plain " +"username instead of the user ID!" +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:40 +msgid "The IPv4 address or the fully-qualified domain name of the remote end." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:42 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:42 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:40 +msgid "" +"The IPv4 address or the fully-qualified domain name of the remote tunnel end." +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:40 +msgid "The IPv6 address or the fully-qualified domain name of the remote end." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:42 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:42 +msgid "" +"The IPv6 address or the fully-qualified domain name of the remote tunnel end." +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:53 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:59 +msgid "" +"The IPv6 prefix assigned to the provider, usually ends with ::" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1916 +msgid "" +"The allowed characters are: A-Z, a-z, 0-9 and _" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/error.htm:6 +msgid "The configuration file could not be loaded due to the following error:" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4129 +msgid "" +"The device could not be reached within %d seconds after applying the pending " +"changes, which caused the configuration to be rolled back for safety " +"reasons. If you believe that the configuration changes are correct " +"nonetheless, perform an unchecked configuration apply. Alternatively, you " +"can dismiss this warning and edit changes before attempting to apply again, " +"or revert all pending changes to keep the currently working configuration " +"state." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:280 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:392 +msgid "" +"The device file of the memory or partition (e.g." +" /dev/sda1)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:736 +msgid "" +"The existing wireless configuration needs to be changed for LuCI to function " +"properly." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:215 +msgid "" +"The flash image was uploaded. Below is the checksum and file size listed, " +"compare them with the original file to ensure data integrity.
    Click " +"\"Proceed\" below to start the flash procedure." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:195 +msgid "The following rules are currently active on this system." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:154 +msgid "The gateway address must not be a local IP address" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:147 +msgid "The given SSH public key has already been added." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:153 +msgid "" +"The given SSH public key is invalid. Please supply proper public RSA or " +"ECDSA keys." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:716 +msgid "The interface name is already used" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:722 +msgid "The interface name is too long" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:61 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:55 +msgid "" +"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " +"addresses." +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:57 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:63 +msgid "The length of the IPv6 prefix in bits" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:163 +msgid "The local IPv4 address" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:46 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:46 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:44 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:44 +msgid "The local IPv4 address over which the tunnel is created (optional)." +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:169 +msgid "The local IPv4 netmask" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:46 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:46 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:44 +msgid "The local IPv6 address over which the tunnel is created (optional)." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1922 +msgid "The network name is already used" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:139 +msgid "" +"The network ports on this device can be combined to several VLANs in which computers can " +"communicate directly with each other. VLANs are often used to separate different network " +"segments. Often there is by default one Uplink port for a connection to the " +"next greater network like the internet and other ports for a local network." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:158 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:42 +msgid "The reboot command failed with code %d" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:147 +msgid "The restore command failed with code %d" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1297 +msgid "The selected %s mode is incompatible with %s encryption" +msgstr "" + +#: modules/luci-base/luasrc/view/csrftoken.htm:11 +msgid "The submitted security token is invalid or already expired!" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:98 +msgid "" +"The system is erasing the configuration partition now and will reboot itself " +"when finished." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:291 +msgid "" +"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " +"few minutes before you try to reconnect. It might be necessary to renew the " +"address of your computer to reach the device again, depending on your " +"settings." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:163 +msgid "" +"The system is rebooting now. If the restored configuration changed the " +"current LAN IP address, you might need to reconnect manually." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:85 +msgid "The system password has been successfully changed." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:317 +msgid "The sysupgrade command failed with code %d" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:120 +msgid "" +"The uploaded backup archive appears to be valid and contains the files " +"listed below. Press \"Continue\" to restore the backup and reboot, or " +"\"Cancel\" to abort the operation." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:115 +msgid "The uploaded backup archive is not readable" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:244 +msgid "The uploaded firmware does not allow keeping current configuration." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:239 +msgid "" +"The uploaded image file does not contain a supported format. Make sure that " +"you choose the generic image format for your platform." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:535 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:567 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:52 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:89 +msgid "There are no active leases" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4268 +msgid "There are no changes to apply" +msgstr "" + +#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:55 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:213 +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:56 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:80 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:282 +msgid "" +"There is no password set on this router. Please configure a root password to " +"protect the web interface." +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:49 +msgid "This IPv4 address of the relay" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1551 +msgid "This authentication type is not applicable to the selected EAP method." +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:57 +msgid "This does not look like a valid PEM file" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:256 +msgid "" +"This file may contain lines like 'server=/domain/1.2.3.4' or " +"'server=1.2.3.4' for domain-specific or full upstream DNS servers." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:426 +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16 +msgid "" +"This is a list of shell glob patterns for matching files and directories to " +"include during sysupgrade. Modified files in /etc/config/ and certain other " +"configurations are automatically preserved." +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:81 +msgid "" +"This is either the \"Update Key\" configured for the tunnel or the account " +"password if no update key has been configured" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:116 +msgid "" +"This is the content of /etc/rc.local. Insert your own commands here (in " +"front of 'exit 0') to execute them at the end of the boot process." +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:54 +msgid "" +"This is the local endpoint address assigned by the tunnel broker, it usually " +"ends with ...:2/64" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:173 +msgid "" +"This is the only DHCP in the local network" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:73 +msgid "This is the plain username for logging into the account" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:57 +msgid "" +"This is the prefix routed to you by the tunnel broker for use by clients" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:28 +msgid "This is the system crontab in which scheduled tasks can be defined." +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:50 +msgid "" +"This is usually the address of the nearest PoP operated by the tunnel broker" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:65 +msgid "" +"This list gives an overview over currently running system processes and " +"their status." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1505 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1563 +msgid "" +"This option cannot be used because the ca-bundle package is not installed." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2205 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2511 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:172 +#: modules/luci-compat/luasrc/view/cbi/tsection.htm:32 +msgid "This section contains no values yet" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:110 +msgid "Time Synchronization" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1093 +msgid "Time interval for rekeying GTK" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:124 +msgid "Timezone" +msgstr "Fus orari" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2678 +msgid "To login…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:372 +msgid "" +"To restore configuration files, you can upload a previously generated backup " +"archive here. To reset the firmware to its initial state, click \"Perform " +"reset\" (only possible with squashfs images)." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:907 +msgid "Tone" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:35 +msgid "Total Available" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:102 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:103 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:113 +msgid "Traceroute" +msgstr "Traceroute" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:53 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:96 +msgid "Traffic" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:72 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:77 +msgid "Traffic Class" +msgstr "Classa del trafic" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:385 +msgid "Transfer" +msgstr "Transferir" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:24 +msgid "Transmit" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:317 +msgid "Transmit Hash Policy" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:74 +msgid "Trigger" +msgstr "Desenclavador" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:19 +msgid "Trigger Mode" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:69 +msgid "Tunnel ID" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2886 +#: modules/luci-compat/luasrc/model/network.lua:1431 +msgid "Tunnel Interface" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:44 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:55 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:76 +msgid "Tunnel Link" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:185 +msgid "Tx-Power" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:44 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:61 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:43 +msgid "Type" +msgstr "Tipe" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:326 +msgid "UDP:" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:90 +msgid "UMTS only" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_3g.lua:10 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:43 +msgid "UMTS/GPRS/EV-DO" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:254 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:360 +msgid "UUID" +msgstr "UUID" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:16 +#: modules/luci-base/htdocs/luci-static/resources/network.js:17 +#: modules/luci-compat/luasrc/model/network.lua:34 +#: modules/luci-compat/luasrc/model/network.lua:35 +msgid "Unable to determine device name" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:18 +#: modules/luci-compat/luasrc/model/network.lua:36 +msgid "Unable to determine external IP address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:19 +#: modules/luci-compat/luasrc/model/network.lua:37 +msgid "Unable to determine upstream interface" +msgstr "" + +#: modules/luci-base/luasrc/view/error404.htm:11 +msgid "Unable to dispatch" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/dmesg.js:9 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/syslog.js:15 +msgid "Unable to load log data:" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_modemmanager.lua:54 +#: modules/luci-compat/luasrc/model/network/proto_qmi.lua:54 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:22 +msgid "Unable to obtain client ID" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:221 +msgid "Unable to obtain mount information" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:278 +msgid "Unable to reset ip6tables counters: %s" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:276 +msgid "Unable to reset iptables counters: %s" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:61 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:7 +msgid "Unable to resolve AFTR host name" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:20 +#: modules/luci-compat/luasrc/model/network.lua:38 +msgid "Unable to resolve peer host name" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:284 +msgid "Unable to restart firewall: %s" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:20 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:342 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:57 +msgid "Unable to save contents: %s" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:33 +msgid "Unavailable Seconds (UAS)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/fs.js:102 +msgid "Unexpected reply data format" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:1983 +#: modules/luci-compat/luasrc/model/network.lua:971 +msgid "Unknown" +msgstr "Desconegut" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:47 +msgid "Unknown and unsupported connection method." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2292 +#: modules/luci-compat/luasrc/model/network.lua:1138 +msgid "Unknown error (%s)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:412 +msgid "Unknown error code" +msgstr "Còde d'error desconegut" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:1980 +#: modules/luci-base/htdocs/luci-static/resources/protocol/none.js:6 +#: modules/luci-compat/luasrc/model/network.lua:965 +msgid "Unmanaged" +msgstr "Pas gerit" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:195 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:217 +msgid "Unmount" +msgstr "Desmontar" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:112 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:259 +msgid "Unnamed key" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3973 +msgid "Unsaved Changes" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:410 +msgid "Unspecified error" +msgstr "Error pas precisada" + +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:64 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:9 +msgid "Unsupported MAP type" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:69 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:27 +msgid "Unsupported modem" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:267 +msgid "Unsupported protocol type." +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:151 +msgid "Up" +msgstr "Amont" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:410 +msgid "Up Delay" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3860 +msgid "Upload" +msgstr "Mandadís" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:413 +msgid "" +"Upload a sysupgrade-compatible image here to replace the running firmware." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:138 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:169 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:384 +msgid "Upload archive..." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2816 +msgid "Upload file" +msgstr "Enviar un fichièr" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2791 +msgid "Upload file…" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2738 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3848 +msgid "Upload request failed: %s" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3767 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3821 +msgid "Uploading file…" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:737 +msgid "" +"Upon pressing \"Continue\", anonymous \"wifi-iface\" sections will be " +"assigned with a name in the form wifinet# and the network will be " +"restarted to apply the updated configuration." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:81 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:60 +msgid "Uptime" +msgstr "Temps de connexion" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:177 +msgid "Use /etc/ethers" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:269 +msgid "Use DHCP advertised servers" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:167 +msgid "Use DHCP gateway" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:40 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:124 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:39 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:116 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:68 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:59 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:103 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:90 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:64 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:77 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:100 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:69 +msgid "Use DNS servers advertised by peer" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:565 +msgid "Use ISO/IEC 3166 alpha2 country codes." +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:56 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:97 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:77 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:61 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:75 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:92 +msgid "Use MTU on tunnel interface" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:93 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:73 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:57 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:88 +msgid "Use TTL on tunnel interface" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:320 +msgid "Use XOR of hardware MAC addresses (layer2)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:321 +msgid "Use XOR of hardware MAC addresses and IP addresses (layer2+3)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:323 +msgid "" +"Use XOR of hardware MAC addresses and IP addresses, rely on skb_flow_dissect " +"(encap2+3)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:294 +msgid "Use as external overlay (/overlay)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:293 +msgid "Use as root filesystem (/)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:34 +msgid "Use broadcast flag" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:860 +msgid "Use builtin IPv6-management" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:43 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:182 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:127 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:42 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:119 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:62 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:106 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:93 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:67 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:80 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:103 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:72 +msgid "Use custom DNS servers" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:37 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:116 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:33 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:64 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:56 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:100 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:87 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:61 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:74 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:97 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:61 +msgid "Use default gateway" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:48 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:230 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:119 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:51 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:88 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:68 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:52 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:70 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:83 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:111 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:153 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:72 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:67 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:111 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:98 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:72 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:85 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:108 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:64 +msgid "Use gateway metric" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:96 +msgid "Use legacy MAP" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:96 +msgid "" +"Use legacy MAP interface identifier format (draft-ietf-softwire-map-00) " +"instead of RFC7597" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:179 +msgid "Use routing table" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1498 +msgid "Use system certificates" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1556 +msgid "Use system certificates for inner-tunnel" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:412 +msgid "" +"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " +"address to use, and the Hostname is assigned as a symbolic name to " +"the requesting host. The optional Lease time can be used to set non-" +"standard host-specific lease time, e.g. 12h, 3d or infinite." +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:322 +msgid "Use upper layer protocol information (layer3+4)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:324 +msgid "" +"Use upper layer protocol information, rely on skb_flow_dissect (encap3+4)" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:36 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:194 +msgid "Used" +msgstr "Utilizat" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1394 +msgid "Used Key Slot" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1437 +msgid "" +"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " +"needed with normal WPA(2)-PSK." +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:105 +msgid "User Group" +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:114 +msgid "User certificate (PEM encoded)" +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:126 +msgid "User key (PEM encoded)" +msgstr "" + +#: modules/luci-base/luasrc/view/sysauth.htm:23 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:106 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:50 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:56 +msgid "Username" +msgstr "Nom d'utilizaire" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:975 +msgid "VC-Mux" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:923 +msgid "VDSL" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:173 +msgid "VLANs on %q" +msgstr "" + +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:54 +msgid "VPN" +msgstr "VPN" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:42 +msgid "VPN Local address" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:46 +msgid "VPN Local port" +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:96 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:42 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:58 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:39 +msgid "VPN Server" +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:99 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:45 +msgid "VPN Server port" +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:103 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:60 +msgid "VPN Server's certificate SHA1 hash" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_vpnc.lua:9 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:9 +msgid "VPNC (CISCO 3000 (and others) VPN)" +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:10 +msgid "VXLAN (RFC7348)" +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:53 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:48 +msgid "VXLAN network identifier" +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:10 +msgid "VXLANv6 (RFC7348)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1498 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1556 +msgid "" +"Validate server certificate using built-in system CA bundle,
    requires " +"the \"ca-bundle\" package" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:387 +msgid "Validation for all slaves" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:385 +msgid "Validation only for active slave" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:386 +msgid "Validation only for backup slaves" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:154 +msgid "Value must not be empty" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:73 +msgid "Vendor" +msgstr "Vendeire" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:55 +msgid "Vendor Class to send when requesting DHCP" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:196 +msgid "Verifying the uploaded image file." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:59 +msgid "Virtual dynamic interface" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1032 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1033 +msgid "WDS" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1217 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1306 +msgid "WEP Open System" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1218 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1307 +msgid "WEP Shared Key" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1931 +msgid "WEP passphrase" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1070 +msgid "WMM Mode" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1931 +msgid "WPA passphrase" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1208 +msgid "" +"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " +"and ad-hoc mode) to be installed." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:47 +msgid "Waiting for device..." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:168 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:178 +msgid "Warning" +msgstr "Avertiment" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:26 +msgid "Warning: There are unsaved changes that will get lost on reboot!" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:37 +msgid "Weak" +msgstr "Feble" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1460 +msgid "" +"When using a PSK, the PMK can be automatically generated. When enabled, the " +"R0/R1 key options below are not applied. Disable this to use the R0 and R1 " +"key options." +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/wireless_modefreq.htm:166 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:468 +msgid "Width" +msgstr "Largor" + +#: modules/luci-compat/luasrc/model/network/proto_wireguard.lua:9 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:29 +msgid "WireGuard VPN" +msgstr "" + +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:17 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:87 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:105 +msgid "Wireless" +msgstr "Inalambric" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2874 +#: modules/luci-compat/luasrc/model/network.lua:1419 +msgid "Wireless Adapter" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2853 +#: modules/luci-base/htdocs/luci-static/resources/network.js:4057 +#: modules/luci-compat/luasrc/model/network.lua:1405 +#: modules/luci-compat/luasrc/model/network.lua:1868 +msgid "Wireless Network" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:753 +msgid "Wireless Overview" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:922 +msgid "Wireless Security" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:735 +msgid "Wireless configuration migration" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:153 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:193 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:47 +msgid "Wireless is disabled" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:153 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:193 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:47 +msgid "Wireless is not associated" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:877 +msgid "Wireless network is disabled" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:877 +msgid "Wireless network is enabled" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:275 +msgid "Write received DNS requests to syslog" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:160 +msgid "Write system log to file" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:204 +msgid "XOR policy (balance-xor, 2)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:3643 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:295 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:344 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:109 +msgid "Yes" +msgstr "Òc" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:303 +msgid "Yes (none, 0)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:176 +msgid "" +"You appear to be currently connected to the device via the \"%h\" interface. " +"Do you really want to shut down the interface?" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:112 +msgid "" +"You can enable or disable installed init scripts here. Changes will applied " +"after a device reboot.
    Warning: If you disable essential init " +"scripts like \"network\", your device might become inaccessible!" +msgstr "" + +#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:65 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:223 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:73 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:294 +msgid "" +"You must enable JavaScript in your browser or LuCI will not work properly." +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:115 +msgid "" +"You must select a primary interface which is included in selected slave " +"interfaces!" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:96 +msgid "" +"You must select at least one ARP IP target if ARP monitoring is selected!" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:192 +msgid "ZRam Compression Algorithm" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:199 +msgid "ZRam Compression Streams" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:185 +msgid "ZRam Settings" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:187 +msgid "ZRam Size" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:331 +msgid "any" +msgstr "Quin que siá" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:908 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:916 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:921 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1157 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:78 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:48 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:51 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:103 +msgid "auto" +msgstr "auto" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:85 +msgid "automatic" +msgstr "automatic" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:82 +msgid "baseT" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:981 +msgid "bridged" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:146 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:401 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:35 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:99 +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:31 +msgid "create" +msgstr "crear" + +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:69 +msgid "create:" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:55 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:57 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:58 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:62 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:63 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:83 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:84 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:185 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:186 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:187 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:171 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:173 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:174 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:178 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:179 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:261 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:264 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:267 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:271 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:274 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:277 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:303 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:304 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:305 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:309 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:310 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:311 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:313 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:314 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:315 +msgid "dBm" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1014 +msgid "disable" +msgstr "desactivar" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:185 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:626 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:632 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:638 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:91 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:25 +msgid "disabled" +msgstr "desactivat" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:519 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:553 +msgid "driver default" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:81 +msgid "e.g: --proxy 10.10.10.10" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:83 +msgid "e.g: dump" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:524 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:545 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:42 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:69 +msgid "expired" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:182 +msgid "" +"file where given DHCP-leases will be stored" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:85 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:195 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:61 +msgid "forward" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:84 +msgid "full-duplex" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:84 +msgid "half-duplex" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:569 +msgid "hexadecimal encoded value" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1738 +msgid "hidden" +msgstr "amagat" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:629 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:635 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:640 +msgid "hybrid mode" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:36 +msgid "if target is a network" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:63 +msgid "ignore" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:69 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:191 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:46 +msgid "input" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:395 +msgid "key between 8 and 63 characters" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:407 +msgid "key with either 5 or 13 characters" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:189 +msgid "local DNS file" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1316 +msgid "medium security" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1465 +msgid "minutes" +msgstr "minutas" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:422 +msgid "netif_carrier_ok()" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:46 +msgid "no" +msgstr "non" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:76 +msgid "no link" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:59 +msgid "non-empty value" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:3007 +msgid "none" +msgstr "pas res" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:41 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:55 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:69 +msgid "not present" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:347 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:901 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:905 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:197 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:245 +msgid "off" +msgstr "desactivat" + +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:196 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:242 +msgid "on" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1317 +msgid "open network" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:69 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:46 +msgid "output" +msgstr "sortida" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:241 +msgid "positive decimal value" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:233 +msgid "positive integer value" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:80 +msgid "random" +msgstr "aleatòri" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:628 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:634 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:639 +msgid "relay mode" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:982 +msgid "routed" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1093 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1102 +msgid "sec" +msgstr "seg" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:627 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:633 +msgid "server mode" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:53 +msgid "sstpc Log-level" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:649 +msgid "stateful-only" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:647 +msgid "stateless" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:648 +msgid "stateless + stateful" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1315 +msgid "strong security" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:352 +msgid "tagged" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1448 +msgid "time units (TUs / 1.024 ms) [1000-65535]" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:559 +msgid "unique value" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:534 +msgid "unknown" +msgstr "desconegut" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:340 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:522 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:543 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:40 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:67 +msgid "unlimited" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:3372 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:76 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:138 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:369 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:393 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:428 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:465 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:561 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:53 +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:38 +msgid "unspecified" +msgstr "pas precisat" + +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:71 +msgid "unspecified -or- create:" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:350 +msgid "untagged" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:246 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:121 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:132 +msgid "valid IP address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:246 +msgid "valid IP address or prefix" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:281 +msgid "valid IPv4 CIDR" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:254 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:125 +msgid "valid IPv4 address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:254 +msgid "valid IPv4 address or network" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:374 +msgid "valid IPv4 address:port" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:314 +msgid "valid IPv4 network" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:276 +msgid "valid IPv4 or IPv6 CIDR" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:267 +msgid "valid IPv4 prefix value (0-32)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:286 +msgid "valid IPv6 CIDR" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:262 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:129 +msgid "valid IPv6 address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:262 +msgid "valid IPv6 address or prefix" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:304 +msgid "valid IPv6 host id" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:319 +msgid "valid IPv6 network" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:272 +msgid "valid IPv6 prefix value (0-128)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:340 +msgid "valid MAC address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:411 +msgid "valid UCI identifier" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:362 +msgid "valid UCI identifier, hostname or IP address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:383 +#: modules/luci-base/htdocs/luci-static/resources/validation.js:386 +msgid "valid address:port" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:533 +#: modules/luci-base/htdocs/luci-static/resources/validation.js:537 +msgid "valid date (YYYY-MM-DD)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:237 +msgid "valid decimal value" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:405 +msgid "valid hexadecimal WEP key" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:393 +msgid "valid hexadecimal WPA key" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:368 +msgid "valid host:port" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:355 +#: modules/luci-base/htdocs/luci-static/resources/validation.js:357 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:73 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:79 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:107 +msgid "valid hostname" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:345 +msgid "valid hostname or IP address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:229 +msgid "valid integer value" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:309 +msgid "valid network in address/netmask notation" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:508 +msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:332 +#: modules/luci-base/htdocs/luci-static/resources/validation.js:335 +msgid "valid port or port range (port1-port2)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:324 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:136 +msgid "valid port value" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:513 +msgid "valid time (HH:MM:SS)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:435 +msgid "value between %d and %d characters" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:416 +msgid "value between %f and %f" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:420 +msgid "value greater or equal to %f" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:424 +msgid "value smaller or equal to %f" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:429 +msgid "value with %d characters" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:440 +msgid "value with at least %d characters" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:445 +msgid "value with at most %d characters" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1317 +msgid "weak security" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:46 +msgid "yes" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/delegator.htm:20 +msgid "« Back" +msgstr "" diff --git a/luci-base/po/pl/base.po b/luci-base/po/pl/base.po deleted file mode 100644 index cef8ea952..000000000 --- a/luci-base/po/pl/base.po +++ /dev/null @@ -1,4184 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: LuCI\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-04-20 09:40+0200\n" -"PO-Revision-Date: 2018-07-21 18:35+0200\n" -"Last-Translator: Rixerx \n" -"Language-Team: Polish\n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " -"|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s jest nieotagowany w wielu grupach VLAN!" - -msgid "(%d minute window, %d second interval)" -msgstr "(okno %d minut, interwał %d sekund)" - -msgid "(%s available)" -msgstr "(dostępne %s)" - -msgid "(empty)" -msgstr "(pusty)" - -msgid "(no interfaces attached)" -msgstr "(brak podłączonych interfejsów)" - -msgid "-- Additional Field --" -msgstr "-- Dodatkowe pole --" - -msgid "-- Please choose --" -msgstr "-- Proszę wybrać --" - -msgid "-- custom --" -msgstr "-- własne --" - -msgid "-- match by device --" -msgstr "-- dopasuj według urządzenia --" - -msgid "-- match by label --" -msgstr "-- dopasuj po etykiecie --" - -msgid "-- match by uuid --" -msgstr "-- dopasuj po uuid --" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Obciążenie 1 min.:" - -msgid "15 Minute Load:" -msgstr "Obciążenie 15 min.:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "464XLAT (CLAT)" - -msgid "5 Minute Load:" -msgstr "Obciążenie 5 min.:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "Identyfikator 6-oktetowy jako ciąg szesnastkowy - bez dwukropków" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "802.11w maksymalny czas oczekiwania" - -msgid "802.11w retry timeout" -msgstr "802.11w interwał ponawiania prób" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "Port wywołania DNS" - -msgid "DNS server port" -msgstr "Port serwera DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Nazwa DNS będzie rozwijana przez " -"kolejne serwery w porządku podanym w resolvfile" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "Adres IPv4" - -msgid "IPv4-Gateway" -msgstr "Brama IPv4" - -msgid "IPv4-Netmask" -msgstr "Maska sieci IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Adres sieci (CIDR) IPv6" - -msgid "IPv6-Gateway" -msgstr "Brama IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "Sufiks IPv6(hex)" - -msgid "LED Configuration" -msgstr "Konfiguracja diod LED" - -msgid "LED Name" -msgstr "Nazwa diody LED" - -msgid "MAC-Address" -msgstr "Adres MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Maks. dzierżaw DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Maks. rozmiar pakietu EDNS0" - -msgid "Max. concurrent queries" -msgstr "Maks. zapytań równoczesnych" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    Uwaga: musisz ręcznie zrestartować usługę cron, jeśli plik crontab był " -"pusty przed edycją." - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "ADSL" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Próg powtórzeń ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Mosty ATM" - -# Nie wiem czy to powinno się tłumaczyć wg. mnie lepiej zostawić po angielsku -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identyfikator kanału wirtualnego ATM (VCI)" - -# j.w. -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identyfikator ścieżki wirtualnej ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Mosty ATM eksponują enkapsulowaną sieć Ethernet w połączeniach AAL5 jako " -"wirtualne interfejsy sieciowe systemu Linux, które mogą być używane w " -"połączeniu z protokołem DHCP lub PPP w celu polączenia się z siecią dostawcy." - -msgid "ATM device number" -msgstr "Numer urządzenia ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -# co to takiego? -msgid "Access Concentrator" -msgstr "Koncentrator dostępowy ATM" - -msgid "Access Point" -msgstr "Punkt dostępowy" - -msgid "Actions" -msgstr "Akcje" - -msgid "Active IPv4-Routes" -msgstr "" -"Aktywne trasy routingu IPv4" - -msgid "Active IPv6-Routes" -msgstr "" -"Aktywne trasy routingu IPv6" - -msgid "Active Connections" -msgstr "Aktywne połączenia" - -msgid "Active DHCP Leases" -msgstr "Aktywne dzierżawy DHCP" - -msgid "Active DHCPv6 Leases" -msgstr "Aktywne dzierżawy DHCPv6" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Dodaj" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Dodaj lokalny sufiks domeny do nazw urządzeń z pliku hosts" - -msgid "Add new interface..." -msgstr "Dodaj nowy interfejs..." - -msgid "Additional Hosts files" -msgstr "Dodatkowe pliki Hosts" - -msgid "Additional servers file" -msgstr "Dodatkowe pliki serwera" - -msgid "Address" -msgstr "Adres" - -# Na upartego można by zrobić Adres dostępowy mostu przekaźnikowego - ale kto to zrozumie? -msgid "Address to access local relay bridge" -msgstr "Adres dostępowy do \"relay bridge\"" - -msgid "Administration" -msgstr "Zarządzanie" - -msgid "Advanced Settings" -msgstr "Ustawienia zaawansowane" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alarm" - -msgid "Alias Interface" -msgstr "Alias Interfejsu" - -msgid "Alias of \"%s\"" -msgstr "Alias \"%s\"" - -msgid "All Servers" -msgstr "Wszystkie serwery" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" -"Przydziel sekwencyjnie adresy IP, zaczynając od najmniejszego dostępnego" - -msgid "Allocate IP sequentially" -msgstr "Przydzielaj adresy IP po kolei" - -msgid "Allow SSH password authentication" -msgstr "Pozwól na logowanie SSH" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "Pozwól aby tryb AP rozłączał stacje STA w oparciu o niski stan ACK" - -msgid "Allow all except listed" -msgstr "Pozwól wszystkim oprócz wymienionych" - -msgid "Allow legacy 802.11b rates" -msgstr "Zezwalaj na starsze wersje 802.11b" - -msgid "Allow listed only" -msgstr "Pozwól tylko wymienionym" - -msgid "Allow localhost" -msgstr "Pozwól tylko sobie (localhost)" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Zezwalaj zdalnym hostom na łączenie się z lokalnie przekazywanymi portami SSH" - -msgid "Allow root logins with password" -msgstr "Zezwól na logowanie roota przy pomocy hasła" - -msgid "Allow the root user to login with password" -msgstr "Pozwól użytkownikowi root na logowanie się przy pomocy hasła" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Pozwól na ruch wychodzący (odpowiedzi) z podsieci 127.0.0.0/8, np. usługi RBL" - -msgid "Allowed IPs" -msgstr "Dozwolone adresy IP" - -msgid "Always announce default router" -msgstr "Zawsze rozgłaszaj domyślny router" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" -"Zawsze używaj kanału 40 MHz, nawet jeśli kanał dodatkowy nachodzi na inny. " -"Używanie tej opcji nie jest zgodne z IEEE 802.11n-2009!" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" -"Rozgłaszaj jako domyślny router nawet jeśli publiczny prefiks nie jest " -"dostępny." - -msgid "Announced DNS domains" -msgstr "Rozgłaszaj domeny DNS" - -msgid "Announced DNS servers" -msgstr "Rozgłaszaj serwery DNS" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "Ustawienia anteny" - -msgid "Any zone" -msgstr "Dowolna strefa" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "Architektura" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" -"Przypisz część danej długości każdego publicznego prefiksu IPv6 do tego " -"interfejsu" - -msgid "Assign interfaces..." -msgstr "Przypisz interfejsy..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" -"Przypisz cześć prefiksu za pomocą szesnastkowego ID subprefiksu dla tego " -"interfejsu" - -msgid "Associated Stations" -msgstr "Połączone stacje" - -msgid "Associations" -msgstr "Połączeni" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Uwierzytelnianie" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autorytatywny" - -msgid "Authorization Required" -msgstr "Wymagana autoryzacja" - -msgid "Auto Refresh" -msgstr "Automatyczne odświeżanie" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Dostępne" - -msgid "Available packages" -msgstr "Dostępne pakiety" - -msgid "Average:" -msgstr "Średnia:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Wróć" - -msgid "Back to Overview" -msgstr "Wróć do przeglądu" - -msgid "Back to configuration" -msgstr "Wróć do konfiguracji" - -msgid "Back to overview" -msgstr "Wróć do przeglądu" - -msgid "Back to scan results" -msgstr "Wróć do wyników skanowania" - -msgid "Backup" -msgstr "Kopia zapasowa" - -msgid "Backup / Flash Firmware" -msgstr "Kopia zapasowa / aktualizacja firmware" - -msgid "Backup file list" -msgstr "Kopia zapasowa listy plików" - -msgid "Bad address specified!" -msgstr "Wprowadzono zły adres" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "Interwał Beaconu" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Poniżej widoczna jest lista plików przeznaczonych do kopii zapasowej. " -"Zawiera ona zmienione pliki konfiguracyjne oznaczone przez opkg, podstawowe " -"pliki systemowe, oraz pliki oznaczone do kopiowania przez użytkownika." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" -"Powiąż tylko ze specyficznymi interfejsami, a nie z adresami wieloznacznymi." - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Szybkość transmisji" - -msgid "Bogus NX Domain Override" -msgstr "Podrób statystyki NXDOMAIN" - -msgid "Bridge" -msgstr "Most" - -msgid "Bridge interfaces" -msgstr "Interfejs mostu" - -msgid "Bridge unit number" -msgstr "Numer Mostu (urządzenia)" - -msgid "Bring up on boot" -msgstr "Podnieś przy stracie" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Bezprzewodowy kontroler Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Bezprzewodowy kontroler Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "Buforowana" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Użycie CPU (%)" - -msgid "Call failed" -msgstr "Połączenie nieudane" - -msgid "Cancel" -msgstr "Anuluj" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Łańcuch" - -msgid "Changes" -msgstr "Zmiany" - -msgid "Changes applied." -msgstr "Zmiany zostały zastosowane." - -msgid "Changes have been reverted." -msgstr "Zmiany zostały cofnięte." - -msgid "Changes the administrator password for accessing the device" -msgstr "Zmienia hasło administratora" - -msgid "Channel" -msgstr "Kanał" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Sprawdź" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Suma kontrolna" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Wybierz strefę firewalla którą chcesz przypisać do tego interfejsu. Wybierz " -"nieokreślone aby usunąć interfejs z przypisanej strefy lub wybierz " -"pole utwórz aby zdefiniować nową strefę i przypisać ją do " -"interfejsu." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Wybierz sieć/sieci które chcesz przyłączyć do tego interfejsu " -"bezprzewodowego lub wypełnij pole utwórz aby utworzyć nową sieć." - -msgid "Cipher" -msgstr "Szyfr" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Kliknij \"Twórz archiwum\" aby pobrać archiwum tar zawierające bieżące pliki " -"konfiguracyjne." - -msgid "Client" -msgstr "Klient" - -msgid "Client ID to send when requesting DHCP" -msgstr "Nazwa (ID) klienta do wysłania podczas negocjacji DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Zamykaj nieaktywne połączenia po określonym czasie podanym w sekundach, " -"wpisz 0 aby uzyskać stałe połączenie." - -msgid "Close list..." -msgstr "Zamknij listę..." - -msgid "Collecting data..." -msgstr "Zbieranie danych..." - -msgid "Command" -msgstr "Polecenie" - -msgid "Common Configuration" -msgstr "Konfiguracja podstawowa" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" -"Komplikuje atak ponownej instalacji klucza po stronie klienta, wyłączając " -"retransmisję ramek klucza EAPOL, które są używane do instalowania kluczy. To " -"obejście może powodować problemy z interoperacyjnością i zmniejszoną " -"odporność kluczowych negocjacji, szczególnie w środowiskach o dużym " -"natężeniu ruchu." - -msgid "Configuration" -msgstr "Konfiguracja" - -msgid "Configuration failed" -msgstr "Konfiguracja nieudana" - -msgid "Configuration files will be kept." -msgstr "Pliki konfiguracyjne zostaną zachowane." - -msgid "Configuration has been applied." -msgstr "Konfiguracja została zastosowana." - -msgid "Configuration has been rolled back!" -msgstr "Konfiguracja została wycofana!" - -msgid "Confirmation" -msgstr "Potwierdzenie" - -msgid "Connect" -msgstr "Połącz" - -msgid "Connected" -msgstr "Połączony" - -msgid "Connection Limit" -msgstr "Limit połączeń" - -msgid "Connection attempt failed" -msgstr "Próba połączenia nieudana" - -msgid "Connections" -msgstr "Połączenia" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "Kraj" - -msgid "Country Code" -msgstr "Kod kraju" - -# Pokrywa następujące interfejsy -msgid "Cover the following interface" -msgstr "Pokrywa następujący interfejs" - -msgid "Cover the following interfaces" -msgstr "Pokrywa następujące interfejsy" - -msgid "Create / Assign firewall-zone" -msgstr "Utwórz / Przypisz strefę firewalla" - -msgid "Create Interface" -msgstr "Utwórz interfejs" - -msgid "Create a bridge over multiple interfaces" -msgstr "Utwórz most pomiędzy wieloma interfejsami" - -msgid "Critical" -msgstr "Krytyczne" - -msgid "Cron Log Level" -msgstr "Poziom logowania Cron`a" - -msgid "Custom Interface" -msgstr "Interfejs niestandardowy" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" -"Własne pliki (certyfikaty, skrypty) mogą pozostać w systemie. Aby zapobiec " -"temu, wykonaj najpierw reset do ustawień fabrycznych" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Dostosuj zachowanie diod LED " -"urządzenia jeśli jest to możliwe." - -msgid "DHCP Server" -msgstr "Serwer DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP i DNS" - -msgid "DHCP client" -msgstr "Klient DHCP" - -msgid "DHCP-Options" -msgstr "Opcje DHCP" - -msgid "DHCPv6 client" -msgstr "Klient DHCPv6" - -msgid "DHCPv6-Mode" -msgstr "Tryb DHCPv6" - -msgid "DHCPv6-Service" -msgstr "Serwis DHCPv6" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Przekierowania DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "Sprawdzanie DNSSEC bez podpisu" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "Status DSL" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "Interwał DTIM" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Debug" - -msgid "Default %d" -msgstr "Domyślne %d" - -msgid "Default gateway" -msgstr "Brama domyślna" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Stan domyślny" - -msgid "Define a name for this network." -msgstr "Określ nazwę dla tej sieci." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Zdefiniuj dodatkowe opcje DHCP, np. \"6,192.168.2.1,192.168.2.2" -"\" rozgłasza domyślne serwery DNS klientom DHCP." - -msgid "Delete" -msgstr "Usuń" - -msgid "Delete this network" -msgstr "Usuń tą sieć" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "Interwał komunikatu o wskazaniu dostawy ruchu" - -msgid "Description" -msgstr "Opis" - -msgid "Design" -msgstr "Motyw" - -msgid "Destination" -msgstr "Przeznaczenie" - -msgid "Device" -msgstr "Urządzenie" - -msgid "Device Configuration" -msgstr "Konfiguracja urządzenia" - -msgid "Device is rebooting..." -msgstr "Urządzenie jest uruchamiane ponownie ..." - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnostyka" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Katalog" - -msgid "Disable" -msgstr "Wyłącz" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Wyłącz DHCP na " -"tym interfejsie." - -msgid "Disable DNS setup" -msgstr "Wyłącz konfigurację DNS" - -msgid "Disable Encryption" -msgstr "Wyłącz szyfrowanie" - -msgid "Disable this network" -msgstr "Wyłącz tą sieć" - -msgid "Disabled" -msgstr "Wyłączony" - -msgid "Disabled (default)" -msgstr "Wyłączone (domyślnie)" - -msgid "Disassociate On Low Acknowledgement" -msgstr "Rozłączaj przy niskim stanie ramek ACK" - -msgid "Discard upstream RFC1918 responses" -msgstr "Odrzuć wychodzące odpowiedzi RFC1918" - -msgid "Disconnection attempt failed" -msgstr "Próba rozłączenia nie powiodła się" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "Pokazuję tylko paczki zawierające" - -msgid "Distance Optimization" -msgstr "Optymalizacja odległości" - -msgid "Distance to farthest network member in meters." -msgstr "Odległość do najdalej oddalonego członka sieci w metrach." - -msgid "Distribution feeds" -msgstr "" - -# Jak poprzednio trzymam się konwencji -msgid "Diversity" -msgstr "Wielorakość" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq jest kombajnem serwera DHCP połączonym z serwerem DNS. Jest to serwer przekazujący (Fowarder) dla firewalli NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Nie cache`uj odpowiedzi negatywnych, np. nie dla bieżących domen" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Nie przekazuj zapytań które nie mogą być zrealizowane przez publiczne " -"serwery nazw" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Nie przekazuj odwrotnych lookup`ów do sieci lokalnych" - -msgid "Domain required" -msgstr "Wymagana domena" - -msgid "Domain whitelist" -msgstr "Whitelist domen (Dozwolone domeny)" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Nie przekazuj zapytań DNS bez " -"nazwy DNS'a" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Pobierz i zainstaluj pakiet" - -msgid "Download backup" -msgstr "Pobierz kopię zapasową" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Usługa Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear oferuje zdalny dostęp do konsoli (shell`a) poprzez swojego klienta " -"SSH oraz serwer SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP dynamiczne" - -msgid "Dynamic tunnel" -msgstr "Tunel dynamiczny" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Dynamicznie rezerwuje adresy DHCP dla klientów. Jeśli jest wyłączone tylko " -"klienci posiadający stałe dzierżawy będą obsłużeni." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Metoda EAP" - -msgid "Edit" -msgstr "Edycja" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Edytuj ten interfejs" - -msgid "Edit this network" -msgstr "Edytuj tą sieć" - -msgid "Emergency" -msgstr "Zagrożenie" - -msgid "Enable" -msgstr "Włącz" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" -"Włącz nasłuchiwanie IGMP" - -msgid "Enable STP" -msgstr "Włącz STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Włącz dynamiczną aktualizację punktu końcowego sieci HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "Włącz negocjację IPv6" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Włącz negocjację IPv6 na łączu PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Włącz przechodzenie ramek Jumbo" - -msgid "Enable NTP client" -msgstr "Włącz klienta NTP" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Włącz serwer TFTP" - -msgid "Enable VLAN functionality" -msgstr "Włącz funkcjonalność VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "Włącz przycisk WPS, wymaga WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "Włącz środki zaradcze dotyczące ponownej instalacji kluczy (KRACK)" - -msgid "Enable learning and aging" -msgstr "Włącz uczenie się i starzenie" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Włącz ten punkt montowania" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "Włącz ten swap" - -msgid "Enable/Disable" -msgstr "Wlącz/Wyłącz" - -msgid "Enabled" -msgstr "Włączony" - -msgid "Enables IGMP snooping on this bridge" -msgstr "Włącz nasłuchiwanie IGMP na tym moście" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" -"Aktywuje szybki roaming pomiędzy punktami dostępowymi, które należą do tej " -"samej domeny" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" -"Włącz protokół STP na tym " -"moście" - -msgid "Encapsulation mode" -msgstr "Sposób enkapsulacji" - -msgid "Encryption" -msgstr "Szyfrowanie" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Usuwanie..." - -msgid "Error" -msgstr "Błąd" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Karta Ethernet" - -msgid "Ethernet Switch" -msgstr "Switch Ethernet" - -msgid "Exclude interfaces" -msgstr "Wyklucz interfejsy" - -msgid "Expand hosts" -msgstr "Rozwiń hosty" - -msgid "Expires" -msgstr "Wygasa" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Czas wygasania dzierżawy adresu, minimum to 2 Minuty (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Zewnętrzny serwer dla logów systemowych" - -msgid "External system log server port" -msgstr "Port zewnętrznego serwera dla logów systemowych" - -msgid "External system log server protocol" -msgstr "Protokół zewnętrznego serwera dla logów systemowych" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "Nie udało się zatwierdzić w ciągu %ds, czekam na wycofanie…" - -msgid "File" -msgstr "Plik" - -msgid "Filename of the boot image advertised to clients" -msgstr "Rozgłoszono nazwę pliku obrazu startowego do klientów" - -msgid "Filesystem" -msgstr "System plików" - -msgid "Filter" -msgstr "Filtr" - -msgid "Filter private" -msgstr "Filtruj prywatne" - -msgid "Filter useless" -msgstr "Filtruj bezużyteczne" - -msgid "Finalizing failed" -msgstr "Finalizacja nie powiodła się" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Znajdź i podłącz się do sieci" - -msgid "Find package" -msgstr "Znajdź pakiet" - -msgid "Finish" -msgstr "Zakończ" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Ustawienia firewalla" - -msgid "Firewall Status" -msgstr "Stan firewalla" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Wersja firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Stały port źródłowy dla wychodzących zapytań DNS" - -msgid "Flash Firmware" -msgstr "Aktualizuj firmware" - -msgid "Flash image..." -msgstr "Wgraj obraz..." - -msgid "Flash new firmware image" -msgstr "Wgraj nowy firmware" - -msgid "Flash operations" -msgstr "Operacje aktualizacji" - -msgid "Flashing..." -msgstr "Flashowanie..." - -msgid "Force" -msgstr "Wymuś" - -msgid "Force 40MHz mode" -msgstr "Wymuś tryb 40MHz" - -msgid "Force CCMP (AES)" -msgstr "Wymuś CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"Wymuś uruchomienie serwera DHCP w tej sieci nawet gdy wykryto inny serwer." - -msgid "Force TKIP" -msgstr "Wymuś TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Wymuś TKIP i CCMP (AES)" - -msgid "Force link" -msgstr "Wymuś połączenie" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Przekazuj ruch DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Przekazuj broadcast`y" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Tryb przekazywania" - -msgid "Fragmentation Threshold" -msgstr "Próg Fragmentacji" - -msgid "Frame Bursting" -msgstr "Dzielenie ramek" - -msgid "Free" -msgstr "Wolna" - -msgid "Free space" -msgstr "Wolna przestrzeń" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Tylko GPRS" - -msgid "Gateway" -msgstr "Brama" - -msgid "Gateway address is invalid" -msgstr "Adres bramy jest nieprawidłowy" - -msgid "Gateway ports" -msgstr "Porty bramy" - -msgid "General Settings" -msgstr "Ustawienia główne" - -msgid "General Setup" -msgstr "Ustawienia podstawowe" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "Wygeneruj konfigurację" - -msgid "Generate PMK locally" -msgstr "Wygeneruj PMK lokalnie" - -msgid "Generate archive" -msgstr "Twórz archiwum" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Ogólny bezprzewodowy kontroler 802.11%s" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"Hasło nie zostało zmienione, wpisane poprzednie hasło routera jest " -"niewłaściwe!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "Globalne opcje sieciowe" - -msgid "Go to password configuration..." -msgstr "Przejdź do konfiguracji hasła..." - -msgid "Go to relevant configuration page" -msgstr "Przejdź do powiązanych ustawień" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "Gość" - -msgid "HE.net password" -msgstr "Hasło HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Rozłącz" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Tutaj możesz skonfigurować podstawowe ustawienia twojego urządzenia, np. " -"nazwę hosta, strefę czasową." - -# nie ma słowa "autentykacji". Uwierzytelnianie! -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Tutaj wklej swoje klucze publiczne SSH (po jednym w linii), dla " -"uwierzytelniania SSH" - -msgid "Hide ESSID" -msgstr "" -"Ukryj ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Wpisy PC" - -msgid "Host expiry timeout" -msgstr "Czas wygasania hosta" - -msgid "Host-IP or Network" -msgstr "IP lub sieć Hosta" - -msgid "Host-Uniq tag content" -msgstr "Zawartość znacznika Host-Uniq" - -msgid "Hostname" -msgstr "Nazwa hosta" - -msgid "Hostname to send when requesting DHCP" -msgstr "Nazwa hosta wysyłana podczas negocjacji DHCP" - -msgid "Hostnames" -msgstr "Nazwy hostów" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Adres IP" - -msgid "IP address in invalid" -msgstr "Nieprawidłowy adres IP" - -msgid "IP address is missing" -msgstr "Brakuje adresu IP" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Firewall IPv4" - -msgid "IPv4 Upstream" -msgstr "Źródłowy IPv4" - -msgid "IPv4 address" -msgstr "Adres IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 oraz IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Broadcast IPv4" - -msgid "IPv4 gateway" -msgstr "Brama IPv4" - -msgid "IPv4 netmask" -msgstr "Maska IPv4" - -msgid "IPv4 only" -msgstr "Tylko IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Długość prefiksu IPv4" - -msgid "IPv4-Address" -msgstr "Adres IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Firewall IPv6" - -msgid "IPv6 Neighbours" -msgstr "Sąsiedztwo IPv6" - -msgid "IPv6 Settings" -msgstr "Ustawienia IPv6" - -msgid "IPv6 ULA-Prefix" -msgstr "IPv6 Prefiks-ULA" - -msgid "IPv6 Upstream" -msgstr "Źródłowy IPv6" - -msgid "IPv6 address" -msgstr "Adres IPv6" - -msgid "IPv6 assignment hint" -msgstr "Wskazówka przypisania IPv6" - -msgid "IPv6 assignment length" -msgstr "Długość przydziału IPv6" - -msgid "IPv6 gateway" -msgstr "Brama IPv6" - -msgid "IPv6 only" -msgstr "Tylko IPv6" - -msgid "IPv6 prefix" -msgstr "Prefiks IPv6" - -msgid "IPv6 prefix length" -msgstr "Długość prefiksu IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "Sufiks IPv6" - -msgid "IPv6-Address" -msgstr "Adres IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-w-IPv4 (RFC4213)" - -# 6rd to nie "szóste", tylko IPv6 rapid deployment -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-przez-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-przez-IPv4 (6to4)" - -msgid "Identity" -msgstr "Tożsamość" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Jeśli podano, zainstaluj urządzenie poprzez jego UUID zamiast ustalonego węzła urządzenia" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Jeśli podano, zainstaluj urządzenie poprzez nazwę partycji zamiast ustalonego węzła urządzenia" - -msgid "If unchecked, no default route is configured" -msgstr "Jeśli odznaczone, nie ma zdefiniowanej domyślnej ścieżki routingu" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Jeśli odznaczone, rozgłoszane adresy serwerów DNS są ignorowane" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Jeśli ilość twojej pamięci fizycznej jest niewystarczająca, nieużywane " -"miejsce na dysku może być tymczasowo wykorzystane na urządzenie pliku " -"wymiany. W rezultacie większa ilość pamięci RAM będzie dostępna. Uwaga - plik wymiany jest dużo " -"wolniejszy niż pamięć RAM." - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "Ignoruj interfejs" - -msgid "Ignore resolve file" -msgstr "Ignoruj pliki resolve" - -msgid "Image" -msgstr "Obraz" - -msgid "In" -msgstr "W" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Czas bezczynności" - -msgid "Inbound:" -msgstr "Przychodzący:" - -msgid "Info" -msgstr "Info" - -msgid "Initialization failure" -msgstr "Błąd inicjalizacji" - -msgid "Initscript" -msgstr "Skrypt startowy" - -msgid "Initscripts" -msgstr "Skrypty startowe" - -msgid "Install" -msgstr "Instaluj" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" -"Zainstaluj iputils-traceroute6 w celu skorzystania z traceroute dla iPv6" - -msgid "Install package %q" -msgstr "Instaluj pakiet %q" - -msgid "Install protocol extensions..." -msgstr "Instaluj rozszerzenia protokołów..." - -msgid "Installed packages" -msgstr "Zainstalowane pakiety" - -msgid "Interface" -msgstr "Interfejs" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Konfiguracja Interfejsu" - -msgid "Interface Overview" -msgstr "Przegląd Interfejsów" - -msgid "Interface is reconnecting..." -msgstr "Ponowne łączenie interfejsu..." - -msgid "Interface name" -msgstr "Nazwa interfejsu" - -msgid "Interface not present or not connected yet." -msgstr "Interfejs nie istnieje lub nie jest jeszcze podłączony." - -msgid "Interfaces" -msgstr "Interfejsy" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Wewnętrzny błąd serwera" - -msgid "Invalid" -msgstr "Niewłaściwy" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "Podano niewłaściwy ID VLAN`u! Dozwolone są tylko ID pomiędzy %d a %d." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Podano niewłaściwy ID VLAN`u! Dozwolone są tylko unikalne ID." - -msgid "Invalid username and/or password! Please try again." -msgstr "Niewłaściwy login i/lub hasło! Spróbuj ponownie." - -msgid "Isolate Clients" -msgstr "Izoluj klientów" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Wygląda na to, że próbujesz wgrać obraz większy niż twoja pamięć flash, " -"proszę sprawdź czy to właściwy obraz!" - -msgid "JavaScript required!" -msgstr "JavaScript jest wymagany!" - -msgid "Join Network" -msgstr "Połącz z siecią" - -msgid "Join Network: Wireless Scan" -msgstr "Przyłącz do sieci: Skanuj sieci Wi-Fi" - -msgid "Joining Network: %q" -msgstr "Przyłączanie do sieci: %q" - -msgid "Keep settings" -msgstr "Zachowaj ustawienia" - -msgid "Kernel Log" -msgstr "Log jądra" - -msgid "Kernel Version" -msgstr "Wersja jądra" - -msgid "Key" -msgstr "Klucz" - -msgid "Key #%d" -msgstr "Klucz #%d" - -msgid "Kill" -msgstr "Zabij" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Serwer L2TP" - -msgid "LCP echo failure threshold" -msgstr "Próg błędu echa LCP" - -msgid "LCP echo interval" -msgstr "Częstotliwość echa LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Oznaczenie" - -msgid "Language" -msgstr "Język" - -msgid "Language and Style" -msgstr "Wygląd i język" - -msgid "Latency" -msgstr "Opoźnienie" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "Czas dzierżawy" - -msgid "Lease validity time" -msgstr "Czas ważności dzierżawy" - -msgid "Leasefile" -msgstr "Plik dzierżaw" - -msgid "Leasetime remaining" -msgstr "Pozostały czas dzierżawy" - -msgid "Leave empty to autodetect" -msgstr "Pozostaw niewypełnione dla autodetekcji" - -msgid "Leave empty to use the current WAN address" -msgstr "Pozostaw niewypełnione aby użyć bieżącego adresu WAN" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limit" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" -"Ogranicz usługi DNS do podsieci interfejsów, na których obsługujemy DNS." - -msgid "Limit listening to these interfaces, and loopback." -msgstr "Ogranicz nasłuchiwanie do tych interfesjów, oraz loopbacku." - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Połączenie aktywne" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Lista serwerów DNS do których będą " -"przekazywane zapytania" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Lista domen zezwalających na odpowiedzi RFC1918" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Lista hostów które dostarczają zafałszowane wyniki NX domain" - -msgid "Listen Interfaces" -msgstr "Nasłuchuj interfejs" - -msgid "Listen Port" -msgstr "Nasłuchuj port" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Słuchaj tylko na podanym interfejsie, lub jeśli nie podano na wszystkich" - -msgid "Listening port for inbound DNS queries" -msgstr "Port nasłuchu dla przychodzących zapytań DNS" - -msgid "Load" -msgstr "Obciążenie" - -msgid "Load Average" -msgstr "Średnie obciążenie" - -msgid "Loading" -msgstr "Ładowanie" - -msgid "Local IP address is invalid" -msgstr "Lokalny adres IP jest nieprawidłowy" - -msgid "Local IP address to assign" -msgstr "Lokalny adres IP do przypisania" - -msgid "Local IPv4 address" -msgstr "Lokalny adres IPv4" - -msgid "Local IPv6 address" -msgstr "Lokalny adres IPv6" - -msgid "Local Service Only" -msgstr "Tylko serwis lokalny" - -msgid "Local Startup" -msgstr "Lokalny autostart" - -msgid "Local Time" -msgstr "Czas lokalny" - -msgid "Local domain" -msgstr "Domena lokalna" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Specyfikacja domeny lokalnej. Nazwy należące do tej domeny nie są " -"przekazywane dalej ani rozwijane przez DHCP lub tylko pliki hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Przyrostek (sufiks) domeny przyłączany do nazw DHCP i wpisów w pliku hosts" - -msgid "Local server" -msgstr "Serwer lokalny" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Zlokalizuj nazwę hosta w zależności od odpytującej podsieci jeśli jest " -"dostępne więcej niż jedno IP" - -msgid "Localise queries" -msgstr "Zapytania lokalizujące" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Poziom logowania" - -msgid "Log queries" -msgstr "Loguj zapytania" - -msgid "Logging" -msgstr "Logowanie" - -msgid "Login" -msgstr "Zaloguj" - -msgid "Logout" -msgstr "Wyloguj" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Najniższy wydzierżawiony adres jako offset dla adresu sieci." - -msgid "MAC" -msgstr "MAC" - -msgid "MAC-Address" -msgstr "Adres MAC" - -msgid "MAC-Address Filter" -msgstr "Filtr adresów MAC" - -msgid "MAC-Filter" -msgstr "Filtr adresów MAC" - -msgid "MAC-List" -msgstr "Lista MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "Reguła MAP jest nieprawidłowa" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "MD5" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" -"Upewnij się, że klonujesz główny system plików, używając czegoś podobnego do " -"poleceń poniżej:" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Maksymalna dozwolona liczba aktywnych dzierżaw DHCP" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Maksymalna dozwolona liczba jednoczesnych zapytań DNS" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Maksymalny dozwolony rozmiar pakietu EDNS.0 UDP" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Maksymalny czas podany w sekundach do pełnej gotowości modemu" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Maksymalna liczba dzierżawionych adresów." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Pamięć" - -msgid "Memory usage (%)" -msgstr "Użycie pamięci (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metryka" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Brakujące rozszerzenie protokołu dla protokołu %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Tryb" - -msgid "Model" -msgstr "Model" - -msgid "Modem device" -msgstr "Modem" - -msgid "Modem information query failed" -msgstr "Zapytanie dotyczące modemu nie powiodło się" - -msgid "Modem init timeout" -msgstr "Limit czasu inicjacji modemu" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Wpis montowania" - -msgid "Mount Point" -msgstr "Punkt montowania" - -msgid "Mount Points" -msgstr "Punkty montowania" - -msgid "Mount Points - Mount Entry" -msgstr "Punkty montowania - Wpis montownia" - -msgid "Mount Points - Swap Entry" -msgstr "Punkty montowania - Wpis Swap" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Punkty montowania definiują gdzie urządzenie pamięci zostanie podłączone do " -"systemu plików" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Opcje montowania" - -msgid "Mount point" -msgstr "Punkt montownia" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Zamontowane systemy plików" - -msgid "Move down" -msgstr "Przesuń w dół" - -msgid "Move up" -msgstr "Przesuń w górę" - -msgid "Multicast address" -msgstr "Adres Multicast`u" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "NCM" - -msgid "NDP-Proxy" -msgstr "Proxy NDP" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Lista serwerów NTP" - -msgid "Name" -msgstr "Nazwa" - -msgid "Name of the new interface" -msgstr "Nazwa nowego interfejsu" - -msgid "Name of the new network" -msgstr "Nazwa nowej sieci" - -msgid "Navigation" -msgstr "Nawigacja" - -msgid "Netmask" -msgstr "Maska sieci" - -msgid "Network" -msgstr "Sieć" - -msgid "Network Utilities" -msgstr "Narzędzia sieciowe" - -msgid "Network boot image" -msgstr "Sieciowy obraz startowy" - -msgid "Network device is not present" -msgstr "Urządzenie sieciowe nie jest obecne" - -msgid "Network without interfaces." -msgstr "Sieć bez interfejsów" - -msgid "Next »" -msgstr "Następna »" - -msgid "No DHCP Server configured for this interface" -msgstr "Brak skonfigurowanego serwera DHCP dla tego interfejsu" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Brak łańcuchów w tej tablicy" - -msgid "No files found" -msgstr "Nie znaleziono plików" - -msgid "No information available" -msgstr "Brak dostępnych informacji" - -msgid "No matching prefix delegation" -msgstr "Brak zgodnej delegacji prefiksu" - -msgid "No negative cache" -msgstr "Brak odwrotnego cache`a" - -msgid "No network configured on this device" -msgstr "Brak skonfigurowanych sieci na tym urządzeniu" - -msgid "No network name specified" -msgstr "Nie podano nazwy sieci" - -msgid "No package lists available" -msgstr "Brak dostępu do listy pakietów" - -msgid "No password set!" -msgstr "Nie ustawiono hasła!" - -msgid "No rules in this chain" -msgstr "Brak zasad w tym łańcuchu" - -msgid "No scan results available yet..." -msgstr "Brak wyników skanowania..." - -msgid "No zone assigned" -msgstr "Brak przypisanej strefy" - -msgid "Noise" -msgstr "Szum" - -msgid "Noise Margin (SNR)" -msgstr "Margines szumów (SNR)" - -msgid "Noise:" -msgstr "Szum:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "Bez symboli wieloznacznych" - -msgid "None" -msgstr "Brak" - -msgid "Normal" -msgstr "Normalny" - -msgid "Not Found" -msgstr "Nie znaleziono" - -msgid "Not associated" -msgstr "Nie powiązany" - -msgid "Not connected" -msgstr "Nie podłączony" - -msgid "Note: Configuration files will be erased." -msgstr "Uwaga: Pliki konfiguracyjne zostaną usunięte." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Spostrzeżenie" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" -"Liczba buforowanych wpisów DNS (max wynosi 10000, 0 oznacza brak pamięci " -"podręcznej)" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Konfiguracja OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "Zwłoka wyłączenia" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Na tej stronie można skonfigurować interfejsy urządzenia. Możesz zmostkować " -"kilka interfejsów zaznaczając pole \"mostkuj interfejsy\", a następnie " -"wpisując ich nazwy oddzielone spacjami. Można także użyć notacji VLAN`ów INTERFACE.VLANNR " -"(np.: eth0.1)." - -msgid "On-State Delay" -msgstr "Zwłoka włączenia" - -msgid "One of hostname or mac address must be specified!" -msgstr "Nazwa hosta lub adres MAC musu być podany!" - -msgid "One or more fields contain invalid values!" -msgstr "Jedno lub więcej pól zawiera nieprawidłowe wartości!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Jedno lub więcej pól nie posiada wpisanych wartości!" - -msgid "Open list..." -msgstr "Otwórz listę..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "Częstotliwość" - -msgid "Option changed" -msgstr "Wartość zmieniona" - -msgid "Option removed" -msgstr "Usunięto wartość" - -msgid "Optional" -msgstr "Opcjonalny" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" -"Opcjonalne. Dopuszczalne wartości: 'eui64', 'random', stałe wartości takie " -"jak '::1' lub '::1:2'. Kiedy prefiks IPv6 (taki jak 'a:b:c:d::') jest " -"odbierany z serwera delegującego, użyj sufiksa (takiego jak '::1') aby " -"utworzyć adres IPv6 ('a:b:c:d::1') dla tego interfejsu." - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "Opcjonalny. Opis peera." - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Opcje" - -msgid "Other:" -msgstr "Inne:" - -msgid "Out" -msgstr "Wychodzące" - -msgid "Outbound:" -msgstr "Wychodzący:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "Nadpisz adres MAC" - -msgid "Override MTU" -msgstr "Nadpisz MTU" - -msgid "Override TOS" -msgstr "Nadpisz TOS" - -msgid "Override TTL" -msgstr "Nadpisz TTL" - -msgid "Override default interface name" -msgstr "Nadpisz domyślną nazwę interfejsu" - -msgid "Override the gateway in DHCP responses" -msgstr "Nadpisz adres bramy w odpowiedziach DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Nadpisz maskę sieci wysyłaną do klientów. Zazwyczaj jest ona wyliczana z " -"podsieci która jest rozsyłana." - -msgid "Override the table used for internal routes" -msgstr "Nadpisz tablicę routingu używaną dla wewnętrznych tras routowania" - -msgid "Overview" -msgstr "Przegląd" - -msgid "Owner" -msgstr "Właściciel" - -msgid "PAP/CHAP password" -msgstr "Hasło PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Nazwa użytkownika PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "Kod PIN został odrzucony" - -msgid "PMK R1 Push" -msgstr "PMK R1 Push" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Enkapsulacja PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Wymagany pakiet libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Lista pakietów jest starsza niż 24 godziny" - -msgid "Package name" -msgstr "Nazwa pakietu" - -msgid "Packets" -msgstr "Pakiety" - -msgid "Part of zone %q" -msgstr "Część strefy %q" - -msgid "Password" -msgstr "Hasło" - -msgid "Password authentication" -msgstr "Uwierzytelnianie hasłem" - -msgid "Password of Private Key" -msgstr "Hasło lub klucz prywatny" - -msgid "Password of inner Private Key" -msgstr "Wewnętrzne hasło klucza prywatnego" - -msgid "Password successfully changed!" -msgstr "Pomyślnie zmieniono hasło!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Ścieżka do certyfikatu CA" - -msgid "Path to Client-Certificate" -msgstr "Ścieżka do certyfikatu klienta" - -msgid "Path to Private Key" -msgstr "Ścieżka do Klucza Prywatnego" - -msgid "Path to inner CA-Certificate" -msgstr "Ścieżka do wewnętrznego certyfikatu CA" - -msgid "Path to inner Client-Certificate" -msgstr "Ścieżka do wewnętrznego certyfikatu Klienta" - -msgid "Path to inner Private Key" -msgstr "Ścieżka do wewnętrznego klucza prywatnego " - -msgid "Peak:" -msgstr "Szczyt:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "Brakuje adresu Peera" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Wykonaj restart" - -msgid "Perform reset" -msgstr "Wykonaj reset" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Szybkość Phy:" - -msgid "Physical Settings" -msgstr "Ustawienia sprzętowe" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pktw." - -msgid "Please enter your username and password." -msgstr "Proszę wprowadź swój login i hasło." - -msgid "Policy" -msgstr "Zasada" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Status portu:" - -msgid "Power Management Mode" -msgstr "Tryb zarządzania energią" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Zakładaj że klient jest martwy po danej ilości błedów odpowiedzi echa LCP, " -"wpisz 0 aby zignorować błędy" - -msgid "Prevent listening on these interfaces." -msgstr "Zapobiegaj nasłuchiwaniu na tych interfejsach." - -msgid "Prevents client-to-client communication" -msgstr "Zapobiega komunikacji między klientem a klientem" - -msgid "Private Key" -msgstr "Klucz prywatny" - -msgid "Proceed" -msgstr "Wykonaj" - -msgid "Processes" -msgstr "Procesy" - -msgid "Profile" -msgstr "Profil" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokół" - -msgid "Protocol family" -msgstr "Rodzina protokołów" - -msgid "Protocol of the new interface" -msgstr "Protokół nowego interfejsu" - -msgid "Protocol support is not installed" -msgstr "Wsparcie dla protokołu nie jest zainstalowane" - -msgid "Provide NTP server" -msgstr "Włącz serwer NTP" - -msgid "Provide new network" -msgstr "Utwórz nową sieć" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "Klucz publiczny" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "Komórkowy QMI" - -msgid "Quality" -msgstr "Jakość" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" -"Zapytaj o wszystkie dostępne serwery DNS " - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "Próg RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Szybkość RX" - -msgid "Radius-Accounting-Port" -msgstr "Port Radius-Accounting" - -msgid "Radius-Accounting-Secret" -msgstr "Sekret Radius-Accounting" - -msgid "Radius-Accounting-Server" -msgstr "Serwer Radius-Accounting" - -msgid "Radius-Authentication-Port" -msgstr "Port Radius-Authentication" - -msgid "Radius-Authentication-Secret" -msgstr "Sekret Radius-Authentication" - -msgid "Radius-Authentication-Server" -msgstr "Serwer Radius-Authentication" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" -"Surowe bajty kodowane szesnastkowo. Pozostaw puste, chyba że wymaga tego " -"dostawca internetowy" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Przejrzyj plik /etc/ethers aby skonfigurować serwer DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Naprawdę usunąć tę sieć bezprzewodową? Usunięcie nie może zostać cofnięte!\n" -"Możesz stracić dostęp do tego urządzenia, jeśli jesteś połączony przez tę " -"sieć!" - -msgid "Really reset all changes?" -msgstr "Naprawdę usunąć wszelkie zmiany?" - -msgid "Really switch protocol?" -msgstr "Naprawdę zmienić protokół?" - -msgid "Realtime Connections" -msgstr "Połączenia w czasie rzeczywistym" - -msgid "Realtime Graphs" -msgstr "Wykresy w czasie rzeczywistym" - -msgid "Realtime Load" -msgstr "Obciążenie w czasie rzeczywistym" - -msgid "Realtime Traffic" -msgstr "Ruch w czasie rzeczywistym" - -msgid "Realtime Wireless" -msgstr "Wi-Fi w czasie rzeczywistym" - -msgid "Reassociation Deadline" -msgstr "Termin reasocjacji" - -msgid "Rebind protection" -msgstr "Przypisz ochronę" - -msgid "Reboot" -msgstr "Restart" - -msgid "Rebooting..." -msgstr "Ponowne uruchamianie..." - -msgid "Reboots the operating system of your device" -msgstr "Uruchamia ponownie system na twoim urządzeniu" - -msgid "Receive" -msgstr "Odebrane" - -msgid "Receiver Antenna" -msgstr "Antena odbiorcza" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Połącz ponownie ten interfejs" - -msgid "References" -msgstr "Referencje" - -msgid "Relay" -msgstr "Przekaźnik" - -msgid "Relay Bridge" -msgstr "Most przekaźnikowy" - -msgid "Relay between networks" -msgstr "Przekaźnik pomiędzy sieciami" - -msgid "Relay bridge" -msgstr "Most przekaźnikowy" - -msgid "Remote IPv4 address" -msgstr "Zdalny adres IPv4" - -msgid "Remote IPv4 address or FQDN" -msgstr "Zdalny adres IPv4 lub FQDN" - -msgid "Remove" -msgstr "Usuń" - -msgid "Repeat scan" -msgstr "Powtórz skanowanie" - -msgid "Replace entry" -msgstr "Zamień wpis" - -msgid "Replace wireless configuration" -msgstr "Zamień konfigurację WiFi" - -msgid "Request IPv6-address" -msgstr "Zażądaj adresu IPv6" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "Wymagany" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Wymagany dla niektórych dostawców internetu, np. Charter z DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" -"Wymagane jest wsparcie dla DNSSEC; sprawdzanie, czy niepodpisane odpowiedzi " -"w domenie rzeczywiście pochodzą z domen bez znaku" - -msgid "Reset" -msgstr "Resetuj" - -msgid "Reset Counters" -msgstr "Wyczyść liczniki" - -msgid "Reset to defaults" -msgstr "Resetuj do domyślnych" - -msgid "Resolv and Hosts Files" -msgstr "Pliki Resolv i Hosts" - -msgid "Resolve file" -msgstr "Plik Resolve" - -msgid "Restart" -msgstr "Uruchom ponownie" - -msgid "Restart Firewall" -msgstr "Uruchom ponownie firewalla" - -msgid "Restart radio interface" -msgstr "Uruchom ponownie interfejs radiowy" - -msgid "Restore" -msgstr "Przywróć" - -msgid "Restore backup" -msgstr "Przywróć kopię zapasową" - -msgid "Reveal/hide password" -msgstr "Odsłoń/Ukryj hasło" - -msgid "Revert" -msgstr "Przywróć" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "Katalog Root`a dla plików udostępnianych przez TFTP" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "Serwis rozgłoszeniowy routera" - -msgid "Router Password" -msgstr "Hasło routera" - -msgid "Routes" -msgstr "Ścieżki routingu" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Ścieżki routingu pokazują routerowi przez który interfejs oraz którą bramę " -"może skomunikować się z daną siecią lub komputerem." - -msgid "Run a filesystem check before mounting the device" -msgstr "" -"Sprawdź czy system plików nie zawiera błędów przed zamontowaniem urządzenia" - -msgid "Run filesystem check" -msgstr "Sprawdź czy system plików nie zawiera błędów" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "Dostęp SSH" - -msgid "SSH server address" -msgstr "Adres serwera SSH" - -msgid "SSH server port" -msgstr "Port serwera SSH" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Klucze SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Zapisz" - -msgid "Save & Apply" -msgstr "Zapisz i zastosuj" - -msgid "Scan" -msgstr "Skanuj" - -msgid "Scan request failed" -msgstr "Próba skanowania nie powiodła się" - -msgid "Scheduled Tasks" -msgstr "Zaplanowane Zadania" - -msgid "Section added" -msgstr "Dodano sekcję" - -msgid "Section removed" -msgstr "Usunięto sekcję" - -msgid "See \"mount\" manpage for details" -msgstr "Aby poznać szczegóły przeczytaj stronę instrukcji \"mount\"" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Co podany czas (w sekundach) wyślij zapytania LCP echo, to ustawienie działa " -"tylko gdy ustawiony jest próg błędu LCP echo" - -msgid "Separate Clients" -msgstr "Rozdziel klientów" - -msgid "Server Settings" -msgstr "Ustawienia serwera" - -msgid "Service Name" -msgstr "Nazwa serwisu" - -msgid "Service Type" -msgstr "Typ serwisu" - -msgid "Services" -msgstr "Serwisy" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" -"Ustaw właściwości interfejsu, niezależnie od operatora łącza (nie wpływa na " -"programy operatora które ustanawiają połączenie)." - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Ustawienia synchronizacji czasu" - -msgid "Setting PLMN failed" -msgstr "Ustawienie PLMN nie powiodło się" - -msgid "Setting operation mode failed" -msgstr "Ustawienie trybu nie powiodło się" - -msgid "Setup DHCP Server" -msgstr "Ustawienia serwera DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "Krótki Wstęp" - -msgid "Show current backup file list" -msgstr "Pokaż aktualną listę plików do backupu" - -msgid "Shutdown this interface" -msgstr "Wyłącz ten interfejs" - -msgid "Signal" -msgstr "Sygnał" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Sygnał:" - -msgid "Size" -msgstr "Rozmiar" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "Rozmiar pamięci podręcznej zapytań DNS" - -msgid "Skip" -msgstr "Pomiń" - -msgid "Skip to content" -msgstr "Pomiń do zawartości" - -msgid "Skip to navigation" -msgstr "Pomiń do nawigacji" - -msgid "Slot time" -msgstr "Szczelina czasowa" - -msgid "Software" -msgstr "Oprogramowanie" - -msgid "Software VLAN" -msgstr "VLAN programowy" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Wartości pewnych pól są niewłaściwe, nie mogę ich zachować!" - -msgid "Sorry, the object you requested was not found." -msgstr "Przepraszamy, ale żądany obiekt nie został znaleziony." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Przepraszamy, ale serwer napotkał nieoczekiwany błąd." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Przepraszamy, ale nie ma wsparcia dla trybu sysupgrade. Nowy firmware musi " -"być wgrany ręcznie. Sprawdź stronę wiki, aby uzyskać instrukcję dla danego " -"urządzenia." - -msgid "Source" -msgstr "Źródło" - -msgid "Specifies the directory the device is attached to" -msgstr "Podaje katalog do którego jest podłączone urządzenie" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Określa port nasłuchu dla tej instancji Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Określa maksymalną ilość błędów dla zapytania ARP przed założeniem, że host " -"jest martwy" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Określa maksymalny czas w sekundach przed założeniem, że host jest martwy" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Określ tajny klucz szyfrowania." - -msgid "Start" -msgstr "Uruchomienie" - -msgid "Start priority" -msgstr "Priorytet uruchomienia" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "Rozpoczynanie skanowania..." - -msgid "Startup" -msgstr "Autostart" - -msgid "Static IPv4 Routes" -msgstr "Statyczne ścieżki routingu IPv4" - -msgid "Static IPv6 Routes" -msgstr "Statyczne ścieżki routingu IPv6" - -msgid "Static Leases" -msgstr "Dzierżawy statyczne" - -msgid "Static Routes" -msgstr "Statyczne ścieżki routingu" - -msgid "Static address" -msgstr "Stały adres" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Statyczne dzierżawy są używane do przypisania stałych adresów IP i " -"symbolicznych nazw klientom DHCP. Są one również wymagane dla " -"niedynamicznych konfiguracji interfejsu, gdzie obsługiwane są tylko hosty z " -"odpowiednim dzierżawami." - -msgid "Status" -msgstr "Stan" - -msgid "Stop" -msgstr "Stop" - -msgid "Strict order" -msgstr "Zachowaj kolejność" - -msgid "Submit" -msgstr "Wyślij" - -msgid "Suppress logging" -msgstr "Pomiń rejestrowanie" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "Pomiń rejestrowanie rutynowych operacji dla tych protokołów" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Zamień wpis" - -msgid "Switch" -msgstr "Przełącznik" - -msgid "Switch %q" -msgstr "Przełącznik %q" - -msgid "Switch %q (%s)" -msgstr "Przełącznik %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "Protokół przełącznika" - -msgid "Sync with browser" -msgstr "Synchronizuj z przeglądarką" - -msgid "Synchronizing..." -msgstr "Synchronizacja..." - -msgid "System" -msgstr "System" - -msgid "System Log" -msgstr "Log systemowy" - -msgid "System Properties" -msgstr "Właściwości systemu" - -# Wszędzie używane jest "loga" z małej litery. -msgid "System log buffer size" -msgstr "Rozmiar bufora loga systemu" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Ustawienia TFTP" - -msgid "TFTP server root" -msgstr "Root serwera TFTP" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Szybkość TX" - -msgid "Table" -msgstr "Tablica" - -msgid "Target" -msgstr "Cel" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Zakończ" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Sekcja Konfiguracja Urządzenia zawiera sprzętowe ustawienia toru " -"transmisji radiowej takie jak kanał, moc sygnału, czy wybór anteny, które to " -"są wspólne dla wszystkich zdefiniowanych sieci bezprzewodowych (jeśli tor " -"transmisji jest kompatybilny z transmisją multi-SSID). Ustawienia sieci " -"takie jak szyfrowanie lub tryb operacji są zebrane w sekcji Konfiguracja " -"Interfejsu." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Pakiet libiwinfo-lua nie jest zainstalowany. Musisz go zainstalować " -"aby WiFi prawidłowo zadziałało!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Prefiks IPv6 przypisany do dostawcy, zazwyczaj kończy się ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Dozwolone znaki to: A-Z, a-z, 0-9 " -"oraz _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "Archiwum kopii zapasowej nie wygląda na prawidłowe." - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Plik urządzenia - pamięci lub partycji (np. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"System plików, który został użyty do sformatowania nośnika (np. ext3)" - -# Przycisk nazywa się "Wykonaj", więc taki sam opis ma być w podpowiedzi. -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Obraz flash`a został przesłany. Poniżej znajduje się suma kontrolna i " -"rozmiar obrazu, porównaj je z sumą kontrolną i rozmiarem oryginału, aby " -"upewnić się, że został przesłany poprawnie.
    Wciśnij \"Wykonaj\" aby " -"kontynuować aktualizację." - -msgid "The following changes have been reverted" -msgstr "Następujące zmiany zostały odrzucone" - -msgid "The following rules are currently active on this system." -msgstr "Następujące zasady są obecnie aktywne w tym systemie." - -msgid "The given network name is not unique" -msgstr "Podana sieć nie jest unikalna" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Sprzęt nie jest urządzeniem typu multi-SSID, więc bieżąca konfiguracja " -"zostanie nadpisana nową jeśli będziesz kontynuować." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"Długość prefiksu IPv4 w bitach, pozostała część jest używana w adresach IPv6." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Długość prefiksu IPv6 w bitach" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Porty sieciowe na tym urządzeniu mogą być łączone w kilka sieci VLAN, w których komputery mogą " -"komunikować się ze sobą bezpośrednio. Sieci VLAN są często stosowane w celu oddzielenia różnych " -"segmentów sieci. Często domyślnie jeden port typu Uplink jest wykorzystywany " -"do połączenia z większą siecią, taką jak Internet, a inne porty dla sieci " -"lokalnej." - -msgid "The selected protocol needs a device assigned" -msgstr "Wybrany protokół potrzebuje przypisanego urządzenia" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"System usuwa teraz partycję konfiguracji i zrestartuje się po zakończeniu." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"System wykonuje flashowanie.
    NIE WYŁĄCZAĆ URZĄDZENIA!
    Poczekaj " -"kilka minut, zanim spróbujesz połączyć się ponownie. W zależności od " -"ustawień może być konieczne odnowienie adresu Twojego komputera, aby dostać " -"się do urządzenia." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Przesłany plik obrazu nie zawiera obsługiwanego formatu. Upewnij się, że " -"wybrałeś odpowiedni format obrazu dla danej platformy." - -msgid "There are no active leases." -msgstr "Brak aktywnych dzierżaw." - -msgid "There are no changes to apply." -msgstr "Nie ma żadnych zmian do zastosowania." - -msgid "There are no pending changes to revert!" -msgstr "Brak oczekujących zmian do przywrócenia!" - -msgid "There are no pending changes!" -msgstr "Brak oczekujących zmian!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Żadne urządzenie nie jest jeszcze przypisane. Proszę dołączyć urządzenie " -"sieciowe na karcie \"Ustawienia sprzętowe\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Hasło nie zostało ustawione. Proszę skonfigurować hasło roota, aby " -"zabezpieczyć interfejs WWW i włączyć SSH." - -msgid "This IPv4 address of the relay" -msgstr "Ten adres IPv4 przekaźnika" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" -"Ten plik może zawierać linie takie jak 'server=/domain/1.2.3.4' lub " -"'server=1.2.3.4' dla specyficznych dla domeny lub pełnych serwerów DNS" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Jest to lista globalnych wzorców dopasowywania plików i katalogów " -"uwzględnianych podczas przeprowadzania aktualizacji z użyciem \"sysupgrade" -"\". Zmodyfikowane pliki w /etc/config/ i w niektórych innych ustawieniach są " -"automatycznie zachowywane." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"To jest zawartość pliku /etc/rc.local. Wstaw tutaj własne komendy (przed " -"'exit 0'), aby zostały wykonane pod koniec procesu rozruchu." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" -"To jest lokalny adres końcowy przypisany przez tunnel broker'a, zwykle " -"kończący się z ...:2/64" - -# w tłumaczeniu pojawiła się spacja po DHCP
    co powoduje niepoprawne wyświetlanie się strony z lang PL -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"To jest jedyny serwer DHCP w sieci lokalnej" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"To jest system crontab, w którym mogą być zdefiniowane zaplanowane zadania." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Zwykle jest to adres najbliższego PoP prowadzonego przez tunnel broker'a" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Poniższa lista przedstawia aktualnie uruchomione procesy systemowe i ich " -"status." - -msgid "This page gives an overview over currently active network connections." -msgstr "Poniższa strona przedstawia aktualnie aktywne połączenia sieciowe." - -msgid "This section contains no values yet" -msgstr "Ta sekcja nie zawiera jeszcze żadnych wartości" - -msgid "Time Synchronization" -msgstr "Synchronizacja czasu" - -msgid "Time Synchronization is not configured yet." -msgstr "Synchronizacja czasu nie jest jeszcze skonfigurowana." - -msgid "Timezone" -msgstr "Strefa czasowa" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Aby przywrócić pliki konfiguracyjne, możesz tutaj przesłać wcześniej " -"utworzoną kopię zapasową." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Całkowicie dostępna" - -msgid "Traceroute" -msgstr "Trasa routowania" - -msgid "Traffic" -msgstr "Ruch" - -msgid "Transfer" -msgstr "Transfer" - -msgid "Transmission Rate" -msgstr "Prędkość transmisji" - -msgid "Transmit" -msgstr "Nadawanie" - -msgid "Transmit Power" -msgstr "Siła nadawania" - -msgid "Transmitter Antenna" -msgstr "Antena nadajnika" - -msgid "Trigger" -msgstr "Trigger" - -msgid "Trigger Mode" -msgstr "Rodzaj Triggeru" - -msgid "Tunnel ID" -msgstr "Numer identyfikacyjny tunelu" - -msgid "Tunnel Interface" -msgstr "Interfejs tunelu" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Moc nadawania" - -msgid "Type" -msgstr "Typ" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Tylko UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Urządzenie USB" - -msgid "USB Ports" -msgstr "Porty USB" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "Nie można ustalić nazwy urządzenia" - -msgid "Unable to determine external IP address" -msgstr "Nie można ustalić zewnętrznego adresu IP" - -msgid "Unable to determine upstream interface" -msgstr "Nie można określić interfejsu źródłowego" - -msgid "Unable to dispatch" -msgstr "Nie można wysłać" - -msgid "Unable to obtain client ID" -msgstr "Nie można uzyskać ID klienta" - -msgid "Unable to resolve AFTR host name" -msgstr "Nie można rozpoznać nazwy AFTR hosta" - -msgid "Unable to resolve peer host name" -msgstr "Nie można rozpoznać nazwy peera" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Nieznany" - -msgid "Unknown Error, password not changed!" -msgstr "Nieznany błąd, hasło nie zostało zmienione!" - -msgid "Unknown error (%s)" -msgstr "Nieznany błąd (%s)" - -msgid "Unmanaged" -msgstr "Niezarządzalny" - -msgid "Unmount" -msgstr "Odmontuj" - -msgid "Unsaved Changes" -msgstr "Niezapisane zmiany" - -msgid "Unsupported MAP type" -msgstr "Nieobsługiwany typ MAP" - -msgid "Unsupported modem" -msgstr "Nieobsługiwany modem" - -msgid "Unsupported protocol type." -msgstr "Nieobsługiwany typ protokołu." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Aktualizuj listy" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Prześlij tutaj obraz zgodny z funkcją sysupgrade, aby zastąpić aktualnie " -"działające opragramowanie. Zaznacz opcję \"Zachowaj ustawienia\", aby " -"zachować bieżącą konfigurację (wymagany obraz zgodny z bieżącym " -"opragramowaniem)." - -msgid "Upload archive..." -msgstr "Załaduj archiwum..." - -msgid "Uploaded File" -msgstr "Załaduj plik" - -msgid "Uptime" -msgstr "Czas pracy" - -msgid "Use /etc/ethers" -msgstr "Użyj /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Użyj bramy DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Użyj serwerów DNS rozgłaszanych przez peera" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Użyj kodów kraju ISO/IEC 3166 alpha2" - -msgid "Use MTU on tunnel interface" -msgstr "Użyj MTU na interfejsie tunelu" - -msgid "Use TTL on tunnel interface" -msgstr "Użyj TTL na interfejsie tunelu" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "Użyj jako systemu plików root (/)" - -msgid "Use broadcast flag" -msgstr "Użyj flagi rozgłaszania" - -msgid "Use builtin IPv6-management" -msgstr "Skorzystaj z wbudowanego zarządzania protokołem IPv6" - -msgid "Use custom DNS servers" -msgstr "Użyj własne serwery DNS" - -msgid "Use default gateway" -msgstr "Użyj domyślnej bramy" - -msgid "Use gateway metric" -msgstr "Użyj metryki bramy" - -msgid "Use routing table" -msgstr "Użyj tabeli routingu" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Użyj przycisku Dodaj, aby dodać nowy wpis dzierżawy. Adres MAC identyfikuje hosta, Adres IPv4 określa, którego stałego adresu " -"użyć, natomiast Nazwa hosta jest przypisana jako symboliczna nazwa " -"do określonego hosta." - -# Przy liście zamontowanych systemów plików -msgid "Used" -msgstr "Użyte" - -msgid "Used Key Slot" -msgstr "Użyte gniazdo klucza" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "Certyfikat użytkownika (kodowany PEM)" - -msgid "User key (PEM encoded)" -msgstr "Klucz użytkownika (kodowany PEM)" - -msgid "Username" -msgstr "Nazwa użytkownika" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "Sieci VLAN na %q" - -msgid "VLANs on %q (%s)" -msgstr "Sieci VLAN na %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Serwer VPN" - -msgid "VPN Server port" -msgstr "Port serwera VPN" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "Producent" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Klasa producenta do wysłania podczas żądania DHCP" - -msgid "Verify" -msgstr "Zweryfikuj" - -msgid "Version" -msgstr "Wersja" - -msgid "Virtual dynamic interface" -msgstr "Wirtualny interfejs dynamiczny" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Otwarty system WEP" - -msgid "WEP Shared Key" -msgstr "Współdzielony klucz WEP" - -msgid "WEP passphrase" -msgstr "Hasło WEP" - -msgid "WMM Mode" -msgstr "Tryb WMM" - -msgid "WPA passphrase" -msgstr "Hasło WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"Kodowanie WPA wymaga zainstalowanych modułów wpa_supplicant (tryb klienta) " -"lub hostapd (tryb AP lub ad-hoc)" - -msgid "Waiting for changes to be applied..." -msgstr "Trwa wprowadzenie zmian..." - -msgid "Waiting for command to complete..." -msgstr "Trwa wykonanie polecenia..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "Oczekiwanie na zastosowanie konfiguracji… %ds" - -msgid "Waiting for device..." -msgstr "Oczekiwanie na urządzenie..." - -msgid "Warning" -msgstr "Ostrzeżenie" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" -"Ostrzeżenie: Istnieją niezapisane zmiany, które zostaną utracone po ponownym " -"uruchomieniu urządzenia!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "Szerokość" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Sieć bezprzewodowa" - -msgid "Wireless Adapter" -msgstr "Adapter bezprzewodowy" - -msgid "Wireless Network" -msgstr "Sieć bezprzewodowa" - -msgid "Wireless Overview" -msgstr "Przegląd sieci bezprzewodowych" - -msgid "Wireless Security" -msgstr "Zabezpieczenia sieci bezprzewodowych" - -msgid "Wireless is disabled" -msgstr "Sieć bezprzewodowa jest wyłączona" - -msgid "Wireless is not associated" -msgstr "Sieć bezprzewodowa jest niepołączona" - -msgid "Wireless is restarting..." -msgstr "Restart sieci bezprzewodowej..." - -msgid "Wireless network is disabled" -msgstr "Sieć bezprzewodowa jest wyłączona" - -msgid "Wireless network is enabled" -msgstr "Sieć bezprzewodowa jest włączona" - -msgid "Write received DNS requests to syslog" -msgstr "Zapisz otrzymane żądania DNS do syslog'a" - -msgid "Write system log to file" -msgstr "Zapisz log systemowy do pliku" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Tutaj można włączyć lub wyłączyć zainstalowane skrypty. Zmiany zostaną " -"zastosowane po ponownym uruchomieniu urządzenia.
    Ostrzeżenie: " -"Jeśli wyłączysz podstawowe skrypty typu \"network\", urządzenie może stać " -"się nieosiągalne!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Musisz włączyć obsługę JavaScript w swojej przeglądarce, inaczej LuCI nie " -"będzie działać poprawnie." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"Twój Internet Explorer jest za stary, aby poprawnie wyświetlić tę stronę " -"zaktualizuj go do wersji co najmniej 7 lub użyj innej przeglądarki, takiej " -"jak Firefox, Opera czy Safari." - -msgid "any" -msgstr "dowolny" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "zmostkowany" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "utwórz:" - -msgid "creates a bridge over specified interface(s)" -msgstr "utwórz most na określonych interfejsach" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "wyłącz" - -msgid "disabled" -msgstr "wyłączony" - -msgid "expired" -msgstr "wygasły" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"plik, w którym podano żądania DHCP, zostanie zachowany" - -msgid "forward" -msgstr "przekaż" - -msgid "full-duplex" -msgstr "pełny-duplex" - -msgid "half-duplex" -msgstr "pół-duplex" - -msgid "hidden" -msgstr "ukryty" - -msgid "hybrid mode" -msgstr "tryb hybrydowy" - -msgid "if target is a network" -msgstr "jeżeli celem jest sieć" - -msgid "input" -msgstr "wejście" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "lokalny plik DNS" - -msgid "minutes" -msgstr "minuty" - -msgid "mixed WPA/WPA2" -msgstr "mieszany WPA/WPA2" - -msgid "no" -msgstr "nie" - -# skorzystałem z niemieckiego tłumaczenia -msgid "no link" -msgstr "niepowiązane" - -msgid "none" -msgstr "żaden" - -msgid "not present" -msgstr "nieobecny" - -msgid "off" -msgstr "wyłączone" - -msgid "on" -msgstr "włączone" - -msgid "open" -msgstr "otwarte" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "losowy" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "routowane" - -msgid "server mode" -msgstr "tryb serwera" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "otagowane" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "jednostki czasu (TUs / 1.024 ms) [1000-65535]" - -msgid "unknown" -msgstr "nieznane" - -msgid "unlimited" -msgstr "nielimitowane" - -msgid "unspecified" -msgstr "nieokreślone" - -msgid "unspecified -or- create:" -msgstr "nieokreślone -lub- utwórz:" - -msgid "untagged" -msgstr "nieotagowane" - -msgid "yes" -msgstr "tak" - -msgid "« Back" -msgstr "« Wróć" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Aktywuj tą sieć" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Kontroler bezprzewodowy Hermes 802.11b" - -#~ msgid "Interface is shutting down..." -#~ msgstr "Interfejs jest wyłączany..." - -#~ msgid "Interface reconnected" -#~ msgstr "Połączono ponownie interfejs" - -#~ msgid "Interface shut down" -#~ msgstr "Wyłączono interfejs" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Kontroler bezprzewodowy Prism2/2.5/3 802.11b" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "Kontroler bezprzewodowy RaLink 802.11%s" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "Naprawdę wyłączyć interfejs \"%s\"?\n" -#~ "Możesz stracić dostęp do tego urządzenia jeśli jesteś połączony przez ten " -#~ "interfejs!" - -#~ msgid "Reconnecting interface" -#~ msgstr "Łączę ponownie interfejs" - -#~ msgid "Shutdown this network" -#~ msgstr "Wyłącz tą sieć" - -#~ msgid "Wireless restarted" -#~ msgstr "Zrestartowano sieć bezprzewodową" - -#~ msgid "Wireless shut down" -#~ msgstr "Wyłączanie sieci bezprzewodowej" - -#~ msgid "DHCP Leases" -#~ msgstr "Dzierżawy DHCP" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "Dzierżawy DHCPv6" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "Naprawdę usunąć ten interfejs? Usunięcie nie może zostać cofnięte!\n" -#~ "Możesz stracić dostęp do tego urządzenia, jeśli jesteś połączony przez " -#~ "ten interfejs!" - -#, fuzzy -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "Naprawdę wyłączyć tę sieć?\n" -#~ "Możesz stracić dostęp do tego urządzenia jeśli jesteś połączony przez ten " -#~ "interfejs!" - -#~ msgid "Sort" -#~ msgstr "Posortuj" - -#~ msgid "help" -#~ msgstr "pomoc" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "Status IPv4 WAN" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "Status WAN IPv6" diff --git a/luci-base/po/pt-br/base.po b/luci-base/po/pt-br/base.po deleted file mode 100644 index 63a8b2f34..000000000 --- a/luci-base/po/pt-br/base.po +++ /dev/null @@ -1,4273 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-10 03:41+0200\n" -"PO-Revision-Date: 2017-02-22 20:30-0300\n" -"Last-Translator: Luiz Angelo Daros de Luca \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.11\n" -"Language-Team: \n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s está sem etiqueta em múltiplas VLANs!" - -msgid "(%d minute window, %d second interval)" -msgstr "(janela de %d minutos, intervalo de %d segundos)" - -msgid "(%s available)" -msgstr "(%s disponível)" - -msgid "(empty)" -msgstr "(vazio)" - -msgid "(no interfaces attached)" -msgstr "(nenhuma interface conectada)" - -msgid "-- Additional Field --" -msgstr "-- Campo Adicional --" - -msgid "-- Please choose --" -msgstr "-- Por favor, escolha --" - -msgid "-- custom --" -msgstr "-- personalizado --" - -msgid "-- match by device --" -msgstr "-- casar por dispositivo --" - -msgid "-- match by label --" -msgstr "-- casar por rótulo --" - -msgid "-- match by uuid --" -msgstr "" -"-- casar por UUID --" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Carga 1 Minuto:" - -msgid "15 Minute Load:" -msgstr "Carga 15 Minutos:" - -msgid "4-character hexadecimal ID" -msgstr "Identificador hexadecimal de 4 caracteres" - -msgid "464XLAT (CLAT)" -msgstr "464XLAT (CLAT)" - -msgid "5 Minute Load:" -msgstr "Carga 5 Minutos:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" -"Identificador de 6 octetos como uma cadeia hexadecimal - sem dois pontos" - -msgid "802.11r Fast Transition" -msgstr "802.11r Fast Transition" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "Tempo de expiração máximo da consulta da Associação SA do 802.11w" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" -"Tempo de expiração de tentativa de consulta da Associação SA do 802.11w" - -msgid "802.11w Management Frame Protection" -msgstr "Proteção do Quadro de Gerenciamento do 802.11w" - -msgid "802.11w maximum timeout" -msgstr "Estouro de tempo máximo do 802.11w" - -msgid "802.11w retry timeout" -msgstr "Estouro de tempo da nova tentativa do 802.11w" - -msgid "BSSID" -msgstr "" -"BSSID" - -msgid "DNS query port" -msgstr "" -"Porta de consulta DNS" - -msgid "DNS server port" -msgstr "" -"Porta do servidor DNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"O servidor DNS irá " -"consultar na ordem do arquivo resolvfile" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "Endereço IPv4" - -msgid "IPv4-Gateway" -msgstr "Roteador IPv4" - -msgid "IPv4-Netmask" -msgstr "" -"Máscara de rede IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"Endereço do IPv6 " -"Endereço ou rede (CIDR)" - -msgid "IPv6-Gateway" -msgstr "Roteador IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" -"IPv6-Suffix (hex)" - -msgid "LED Configuration" -msgstr "Configuração do LED" - -msgid "LED Name" -msgstr "Nome do LED" - -msgid "MAC-Address" -msgstr "Endereço MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Numero máximo de alocações DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Tamanho máximo do pacote do EDNS0" - -msgid "Max. concurrent queries" -msgstr "Número máximo de consultas concorrentes" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "A43C + J43 + A43" - -msgid "A43C + J43 + A43 + V43" -msgstr "A43C + J43 + A43 + V43" - -msgid "ADSL" -msgstr "" -"ADSL" - -msgid "ANSI T1.413" -msgstr "ANSI T1.413" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "" -"Limite de retentativas do ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "ATM (Asynchronous Transfer Mode)" - -msgid "ATM Bridges" -msgstr "Ponte ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" -"Identificador de Canal Virtual ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" -"Identificador de Caminho Virtual ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Pontes ATM expõem ethernet encapsuladas em conexões AAL5 como interfaces de " -"rede virutais no Linux. Estas podem ser usadas em conjunto com o DHCP ou PPP " -"para discar em um provedor de rede." - -msgid "ATM device number" -msgstr "Número do dispositivo ATM" - -msgid "ATU-C System Vendor ID" -msgstr "Identificador de" - -msgid "Access Concentrator" -msgstr "Concentrador de Acesso" - -msgid "Access Point" -msgstr "Ponto de Acceso (AP)" - -msgid "Actions" -msgstr "Ações" - -msgid "Active IPv4-Routes" -msgstr "" -"Rotas IPv4 ativas" - -msgid "Active IPv6-Routes" -msgstr "" -"Rotas IPv6 ativas" - -msgid "Active Connections" -msgstr "Conexões Ativas" - -msgid "Active DHCP Leases" -msgstr "Alocações DHCP ativas" - -msgid "Active DHCPv6 Leases" -msgstr "Alocações DHCPv6 ativas" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Adicionar" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Adiciona um sufixo de domínio local para equipamentos conhecidos" - -msgid "Add new interface..." -msgstr "Adiciona uma nova interface..." - -msgid "Additional Hosts files" -msgstr "Arquivos adicionais de equipamentos conhecidos (hosts)" - -msgid "Additional servers file" -msgstr "Arquivo de servidores adicionais" - -msgid "Address" -msgstr "Endereço" - -msgid "Address to access local relay bridge" -msgstr "Endereço para acessar a ponte por retransmissão local " - -msgid "Administration" -msgstr "Administração" - -msgid "Advanced Settings" -msgstr "Opções Avançadas" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" -"Potência de Transmissão Agregada (ACTATP)" - -msgid "Alert" -msgstr "Alerta" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" -"Alocar endereços IP sequencialmente, iniciando a partir do endereço mais " -"baixo disponível" - -msgid "Allocate IP sequentially" -msgstr "Alocar endereços IP sequencialmente" - -msgid "Allow SSH password authentication" -msgstr "" -"Permitir autenticação SSH por senha" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Permitir todos, exceto os listados" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Permitir somente os listados" - -msgid "Allow localhost" -msgstr "Permitir computador local" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Permitir que equipamentos remotos conectem à portas locais encaminhadas por " -"SSH" - -msgid "Allow root logins with password" -msgstr "Permite autenticação do root com senha" - -msgid "Allow the root user to login with password" -msgstr "Permite que o usuário root se autentique utilizando senha" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Permite respostas que apontem para 127.0.0.0/8 de servidores externos, por " -"exemplo, para os serviços RBL" - -msgid "Allowed IPs" -msgstr "Endereços IP autorizados" - -msgid "Always announce default router" -msgstr "Sempre anuncie o roteador padrão" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "Anexo" - -msgid "Annex A + L + M (all)" -msgstr "Anexos A + L + M (todo)" - -msgid "Annex A G.992.1" -msgstr "Anexo A G.992.1" - -msgid "Annex A G.992.2" -msgstr "Anexo A G.992.2" - -msgid "Annex A G.992.3" -msgstr "Anexo A G.992.3" - -msgid "Annex A G.992.5" -msgstr "Anexo A G.992.5" - -msgid "Annex B (all)" -msgstr "Anexo B (todo)" - -msgid "Annex B G.992.1" -msgstr "Anexo B G.992.1" - -msgid "Annex B G.992.3" -msgstr "Anexo B G.992.3" - -msgid "Annex B G.992.5" -msgstr "Anexo B G.992.5" - -msgid "Annex J (all)" -msgstr "Anexo J (todo)" - -msgid "Annex L G.992.3 POTS 1" -msgstr "Anexo L G.992.3 POTS 1" - -msgid "Annex M (all)" -msgstr "Anexo M (todo)" - -msgid "Annex M G.992.3" -msgstr "Anexo M G.992.3" - -msgid "Annex M G.992.5" -msgstr "Anexo M G.992.5" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" -"Anuncie-se como rotador padrão mesmo se não existir um prefixo público." - -msgid "Announced DNS domains" -msgstr "Domínios DNS anunciados" - -msgid "Announced DNS servers" -msgstr "Servidores DNS anunciados" - -msgid "Anonymous Identity" -msgstr "Identidade Anônima" - -msgid "Anonymous Mount" -msgstr "Montagem Anônima" - -msgid "Anonymous Swap" -msgstr "Espaço de Troca (swap) Anônimo" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "configuração de antena" - -msgid "Any zone" -msgstr "Qualquer zona" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" -"Atribua uma parte do comprimento de cada prefixo IPv6 público para esta " -"interface" - -msgid "Assign interfaces..." -msgstr "atribuir as interfaces" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" -"Atribua partes do prefixo usando este identificador hexadecimal do " -"subprefixo para esta interface" - -msgid "Associated Stations" -msgstr "Estações associadas" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "Grupo de Autenticação" - -msgid "Authentication" -msgstr "Autenticação" - -msgid "Authentication Type" -msgstr "Tipo de Autenticação" - -msgid "Authoritative" -msgstr "Autoritário" - -msgid "Authorization Required" -msgstr "Autorização Necessária" - -msgid "Auto Refresh" -msgstr "Atualização Automática" - -msgid "Automatic" -msgstr "Automático" - -msgid "Automatic Homenet (HNCP)" -msgstr "" -"Rede Doméstica Automática (HNCP)" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" -"Execute automaticamente a verificação do sistema de arquivos antes da " -"montagem do dispositivo" - -msgid "Automatically mount filesystems on hotplug" -msgstr "Monte automaticamente o espaço de troca (swap) ao conectar" - -msgid "Automatically mount swap on hotplug" -msgstr "Monte automaticamente o espaço de troca (swap) ao conectar" - -msgid "Automount Filesystem" -msgstr "Montagem Automática de Sistema de Arquivo" - -msgid "Automount Swap" -msgstr "Montagem Automática do Espaço de Troca (swap) " - -msgid "Available" -msgstr "Disponível" - -msgid "Available packages" -msgstr "Pacotes disponíveis" - -msgid "Average:" -msgstr "Média:" - -msgid "B43 + B43C" -msgstr "B43 + B43C" - -msgid "B43 + B43C + V43" -msgstr "B43 + B43C + V43" - -msgid "BR / DMR / AFTR" -msgstr "BR / DMR / AFTR" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Voltar" - -msgid "Back to Overview" -msgstr "Voltar para Visão Geral" - -msgid "Back to configuration" -msgstr "Voltar para configuração" - -msgid "Back to overview" -msgstr "Voltar para visão geral" - -msgid "Back to scan results" -msgstr "Voltar para os resultados da busca" - -msgid "Backup" -msgstr "Cópia de Segurança" - -msgid "Backup / Flash Firmware" -msgstr "Cópia de Segurança / Gravar Firmware" - -msgid "Backup file list" -msgstr "Lista de arquivos para a cópia de segurança" - -msgid "Bad address specified!" -msgstr "Endereço especificado está incorreto!" - -msgid "Band" -msgstr "Banda" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Abaixo estão os arquivos para a cópia de segurança. Ela consiste de arquivos " -"de configuração alterados marcados pelo opkg, arquivos base essenciais e " -"padrões para a cópia de segurança definidos pelo usuário." - -msgid "Bind interface" -msgstr "Interface Vinculada" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" -"Vincule somente para as explicitamenteinterfaces ao invés do endereço " -"coringa." - -msgid "Bind the tunnel to this interface (optional)." -msgstr "Vincule o túnel a esta interface (opcional)" - -msgid "Bitrate" -msgstr "Taxa de bits" - -msgid "Bogus NX Domain Override" -msgstr "Substituir Domínio NX Falsos" - -msgid "Bridge" -msgstr "Ponte" - -msgid "Bridge interfaces" -msgstr "Juntar interfaces em uma ponte" - -msgid "Bridge unit number" -msgstr "Número da ponte" - -msgid "Bring up on boot" -msgstr "Levantar na iniciação" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Controlador Wireless Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 Wireless Controlador" - -msgid "Buffered" -msgstr "Buffered" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"Fonte de pacotes específico da compilação/distribuição. Esta NÃO será " -"preservada em qualquer atualização do sistema." - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" -"Certificado da CA; se em branco, será salvo depois da primeira conexão." - -msgid "CPU usage (%)" -msgstr "Uso da CPU (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Category" -msgstr "Categoria" - -msgid "Chain" -msgstr "Cadeia" - -msgid "Changes" -msgstr "Alterações" - -msgid "Changes applied." -msgstr "Alterações aplicadas." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Muda a senha do administrador para acessar este dispositivo" - -msgid "Channel" -msgstr "Canal" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Verificar" - -msgid "Check filesystems before mount" -msgstr "" -"Execute a verificação do sistema de arquivos antes da montagem do dispositivo" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "Marque esta opção para remover as redes existentes neste rádio." - -msgid "Checksum" -msgstr "Soma de verificação" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Escolha a zona do firewall que você quer definir para esta interface. " -"Selecione não especificado -ou- criar para remover a interface da " -"zona associada ou preencha o campo para criar uma nova zona associada a esta " -"interface." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Escolha a rede (s) que deseja anexar a este interface wireless ou preencha o " -" criar campo para definir uma nova rede." - -msgid "Cipher" -msgstr "Cifra" - -msgid "Cisco UDP encapsulation" -msgstr "Encapsulamento UDP da Cisco" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Clique em \"Gerar arquivo\" para baixar um arquivo tar com os arquivos de " -"configuração atuais." - -msgid "Client" -msgstr "Cliente" - -msgid "Client ID to send when requesting DHCP" -msgstr "" -"Identificador do cliente enviando quando a requisição do DHCP é realizada" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Feche as conexões inativas após uma dada quantidade de segundos. Use 0 para " -"manter as conexões." - -msgid "Close list..." -msgstr "Fechar a lista..." - -msgid "Collecting data..." -msgstr "Coletando dados..." - -msgid "Command" -msgstr "Comando" - -msgid "Common Configuration" -msgstr "Configuração Comum" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuração" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Os arquivos de configuração serão mantidos." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Confirmação" - -msgid "Connect" -msgstr "Conectar" - -msgid "Connected" -msgstr "Conectado" - -msgid "Connection Limit" -msgstr "Limite de conexão" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Conexões" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "País" - -msgid "Country Code" -msgstr "Código do País" - -msgid "Cover the following interface" -msgstr "Utilizando a seguinte interface" - -msgid "Cover the following interfaces" -msgstr "Utilizando as seguintes interfaces" - -msgid "Create / Assign firewall-zone" -msgstr "Criar / Atribuir a uma zona de firewall" - -msgid "Create Interface" -msgstr "Criar Interface" - -msgid "Create a bridge over multiple interfaces" -msgstr "Criar uma ponte juntando múltiplas interfaces" - -msgid "Critical" -msgstr "Crítico" - -msgid "Cron Log Level" -msgstr "Nível de Registro da Cron" - -msgid "Custom Interface" -msgstr "Interface Personalizada" - -msgid "Custom delegated IPv6-prefix" -msgstr "Prefixo IPv6 delegado personalizado" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" -"Definições de fonte de pacotes personalizadas, ex: fontes privadas. Este " -"arquivo será preservado em uma atualização do sistema." - -msgid "Custom feeds" -msgstr "Fontes de pacotes customizadas" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Se possível, personaliza o comportamento dos LEDs." - -msgid "DHCP Server" -msgstr "Servidor DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP e DNS" - -msgid "DHCP client" -msgstr "Cliente DHCP" - -msgid "DHCP-Options" -msgstr "Opções de DHCP" - -msgid "DHCPv6 client" -msgstr "Cliente DHCPv6" - -msgid "DHCPv6-Mode" -msgstr "Modo DHCPv6" - -msgid "DHCPv6-Service" -msgstr "Serviço DHCPv6" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Encaminhamentos DNS" - -msgid "DNS-Label / FQDN" -msgstr "Rótulo DNS / FQDN" - -msgid "DNSSEC" -msgstr "DNSSEC" - -msgid "DNSSEC check unsigned" -msgstr "Verificar DNSSEC sem assinatura" - -msgid "DPD Idle Timeout" -msgstr "Tempo de expiração para ociosidade do DPD" - -msgid "DS-Lite AFTR address" -msgstr "Endereço DS-Lite AFTR" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "Estado da DSL" - -msgid "DSL line mode" -msgstr "Modo de linha DSL" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "Taxa de Dados" - -msgid "Debug" -msgstr "Depurar" - -msgid "Default %d" -msgstr "Padrão %d" - -msgid "Default gateway" -msgstr "Roteador Padrão" - -msgid "Default is stateless + stateful" -msgstr "O padrão é sem estado + com estado" - -msgid "Default state" -msgstr "Estado padrão" - -msgid "Define a name for this network." -msgstr "Define um nome para esta rede." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Define opções adicionais do DHCP. Por exemplo " -"\"6,192.168.2.1,192.168.2.2\" que anuncia diferentes servidores " -"DNS para os clientes." - -msgid "Delete" -msgstr "Apagar" - -msgid "Delete this network" -msgstr "Apagar esta rede" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Descrição" - -msgid "Design" -msgstr "Tema" - -msgid "Destination" -msgstr "Destino" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Device Configuration" -msgstr "Configuração do Dispositivo" - -msgid "Device is rebooting..." -msgstr "O dispositivo está reiniciando..." - -msgid "Device unreachable!" -msgstr "Dispositivo não alcançável" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnóstico" - -msgid "Dial number" -msgstr "Número de discagem" - -msgid "Directory" -msgstr "Diretório" - -msgid "Disable" -msgstr "Desabilitar" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Desabilita DHCP " -"para esta interface." - -msgid "Disable DNS setup" -msgstr "Desabilita a configuração do DNS" - -msgid "Disable Encryption" -msgstr "Desabilitar Cifragem" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Desabilitado" - -msgid "Disabled (default)" -msgstr "Desabilitado (padrão)" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" -"Descartar respostas de servidores externos para redes privadas (RFC1918)" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "Mostre somente os pacotes contendo" - -msgid "Distance Optimization" -msgstr "Otimização de Distância" - -msgid "Distance to farthest network member in meters." -msgstr "Distância para o computador mais distante da rede (em metros)." - -msgid "Distribution feeds" -msgstr "Fontes de pacotes da distribuição" - -msgid "Diversity" -msgstr "Diversidade" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq é um servidor combinado de DHCP e DNS para firewalls NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Não mantenha em cache para respostas negativas como, por exemplo, para os " -"domínios inexistentes" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Não encaminhe requisições que não podem ser respondidas por servidores de " -"nomes públicos" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Não encaminhe buscas por endereço reverso das redes local" - -msgid "Domain required" -msgstr "Requerer domínio" - -msgid "Domain whitelist" -msgstr "Lista branca de domínios" - -msgid "Don't Fragment" -msgstr "Não Fragmentar" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Não encaminhar consultas DNS sem o nome completo do DNS" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Baixe e instale o pacote" - -msgid "Download backup" -msgstr "Baixar a cópia de segurança" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear oferece um acesso shell seguro à rede (SSH) e um servidor SCP " -"integrado" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "Duas Pilhas Leve (RFC6333)" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP " -"Dinâmico" - -msgid "Dynamic tunnel" -msgstr "Túnel dinâmico" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Aloca dinamicamente os endereços do DHCP para os clientes. Se desabilitado, " -"somente os clientes com atribuições estáticas serão servidos. " - -msgid "EA-bits length" -msgstr "Comprimento dos bits EA" - -msgid "EAP-Method" -msgstr "Método EAP" - -msgid "Edit" -msgstr "Editar" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" -"Edite os dados de configuração brutos abaixo para arrumar qualquer erro e " -"clique em \"Salvar\" para recarregar a página." - -msgid "Edit this interface" -msgstr "Editar esta interface" - -msgid "Edit this network" -msgstr "Editar esta rede" - -msgid "Emergency" -msgstr "Emergência" - -msgid "Enable" -msgstr "Ativar" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Ativar STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Ativar a atualização de ponto final dinâmico HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "Ativar a negociação de IPv6" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Ativar a negociação de IPv6 no enlace PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Ativar o encaminhamento de quadros jumbos (Jumbo Frames)" - -msgid "Enable NTP client" -msgstr "Ativar o cliente NTP" - -msgid "Enable Single DES" -msgstr "Habilitar DES Simples" - -msgid "Enable TFTP server" -msgstr "Ativar servidor TFTP" - -msgid "Enable VLAN functionality" -msgstr "Ativar funcionalidade de VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "Habilite o botão WPS. requer WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Ativar o aprendizado e obsolescência" - -msgid "Enable mirroring of incoming packets" -msgstr "Habilitar espelhamento dos pacotes entrantes" - -msgid "Enable mirroring of outgoing packets" -msgstr "Habilitar espelhamento dos pacotes saintes" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "Habilita o campo DF (Não Fragmentar) dos pacotes encapsulados." - -msgid "Enable this mount" -msgstr "Ativar esta montagem" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "Ativar este espaço de troca (swap)" - -msgid "Enable/Disable" -msgstr "Ativar/Desativar" - -msgid "Enabled" -msgstr "Ativado" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" -"Ativa a troca rápida entre pontos de acesso que pertencem ao mesmo Domínio " -"de Mobilidade" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Ativa o protocolo STP nesta ponte" - -msgid "Encapsulation mode" -msgstr "Modo de encapsulamento" - -msgid "Encryption" -msgstr "Cifragem" - -msgid "Endpoint Host" -msgstr "Equipamento do ponto final" - -msgid "Endpoint Port" -msgstr "Porta do ponto final" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Apagando..." - -msgid "Error" -msgstr "Erro" - -msgid "Errored seconds (ES)" -msgstr "Segundos com erro (ES)" - -msgid "Ethernet Adapter" -msgstr "Adaptador Ethernet" - -msgid "Ethernet Switch" -msgstr "Switch Ethernet" - -msgid "Exclude interfaces" -msgstr "Excluir interfaces" - -msgid "Expand hosts" -msgstr "Expandir arquivos de equipamentos conhecidos (hosts)" - -msgid "Expires" -msgstr "Expira" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Tempo de expiração dos endereços atribuídos. Mínimo é 2 minutos (2m)." - -msgid "External" -msgstr "Externo" - -msgid "External R0 Key Holder List" -msgstr "Lista dos Detentor de Chave R0 Externa" - -msgid "External R1 Key Holder List" -msgstr "Lista dos Detentor de Chave R1 Externa" - -msgid "External system log server" -msgstr "Servidor externo de registros do sistema (syslog)" - -msgid "External system log server port" -msgstr "Porta do servidor externo de registro do sistema (syslog)" - -msgid "External system log server protocol" -msgstr "Protocolo do servidor externo de registro do sistema (syslog)" - -msgid "Extra SSH command options" -msgstr "Opções adicionais do comando SSH" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Arquivo" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nome do arquivo da imagem de boot anunciada para os clientes" - -msgid "Filesystem" -msgstr "Sistema de Arquivos" - -msgid "Filter" -msgstr "Filtro" - -msgid "Filter private" -msgstr "Filtrar endereços privados" - -msgid "Filter useless" -msgstr "Filtrar consultas inúteis" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" -"Encontre todos os sistemas de arquivos e espaços de troca (swap) atualmente " -"conectados e substitua a configuração com valores padrão baseados no que foi " -"detectado" - -msgid "Find and join network" -msgstr "Procurar e conectar à rede" - -msgid "Find package" -msgstr "Procurar pacote" - -msgid "Finish" -msgstr "Terminar" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Configurações do Firewall" - -msgid "Firewall Status" -msgstr "Estado do Firewall" - -msgid "Firmware File" -msgstr "Arquivo da Firmware" - -msgid "Firmware Version" -msgstr "Versão do Firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Porta de origem fixa para saída de consultas DNS" - -msgid "Flash Firmware" -msgstr "Gravar Firmware" - -msgid "Flash image..." -msgstr "Gravar imagem..." - -msgid "Flash new firmware image" -msgstr "Gravar nova imagem do firmware" - -msgid "Flash operations" -msgstr "Operações na memória flash" - -msgid "Flashing..." -msgstr "Gravando na flash..." - -msgid "Force" -msgstr "Forçar" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Forçar CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Forçar o DHCP nesta rede mesmo se outro servidor for detectado." - -msgid "Force TKIP" -msgstr "Forçar TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forçar TKIP e CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "Force o uso do NAT-T" - -msgid "Form token mismatch" -msgstr "Chave eletrônica do formulário não casa" - -msgid "Forward DHCP traffic" -msgstr "Encaminhar tráfego DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" -"Segundos a frente de correção de erros ( FECS)" - -msgid "Forward broadcast traffic" -msgstr "Encaminhar tráfego broadcast" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Modo de encaminhamento" - -msgid "Fragmentation Threshold" -msgstr "Limiar de Fragmentação" - -msgid "Frame Bursting" -msgstr "Explosão de Quadros (Frame Bursting)" - -msgid "Free" -msgstr "Livre" - -msgid "Free space" -msgstr "Espaço livre" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" -"Mais informações sobre interfaces e parceiros WireGuard em wireguard.com." - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Somente GPRS" - -msgid "Gateway" -msgstr "Roteador" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Acesso remoto a portas encaminhadas" - -msgid "General Settings" -msgstr "Configurações Gerais" - -msgid "General Setup" -msgstr "Configurações Gerais" - -msgid "General options for opkg" -msgstr "Opções gerais para o opkg" - -msgid "Generate Config" -msgstr "Gerar Configuração" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Gerar arquivo" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Generico 802.11%s Wireless Controlador" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "A senha de confirmação informada não casa. Senha não alterada!" - -msgid "Global Settings" -msgstr "Configurações Globais" - -msgid "Global network options" -msgstr "Opções de rede globais" - -msgid "Go to password configuration..." -msgstr "Ir para a configuração de senha..." - -msgid "Go to relevant configuration page" -msgstr "Ir para a página de configuração pertinente" - -msgid "Group Password" -msgstr "Senha do Grupo" - -msgid "Guest" -msgstr "Convidado\t" - -msgid "HE.net password" -msgstr "Senha HE.net" - -msgid "HE.net username" -msgstr "Usuário do HE.net" - -msgid "HT mode (802.11n)" -msgstr "" -"Modo HT " -"(802.11n)" - -msgid "Hang Up" -msgstr "Suspender" - -msgid "Header Error Code Errors (HEC)" -msgstr "" -"Erros de Código de Erro de Cabeçalho (HEC)" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Aqui você pode configurar os aspectos básicos do seu equipamento, como o " -"nome do equipamento ou o fuso horário." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Aqui você pode colar as chaves públicas do SSH (uma por linha) para a " -"autenticação por chaves do SSH." - -msgid "Hide ESSID" -msgstr "" -"Ocultar ESSID" - -msgid "Host" -msgstr "Equipamento" - -msgid "Host entries" -msgstr "Entradas de Equipamentos" - -msgid "Host expiry timeout" -msgstr "Tempo limite de expiração de equipamento" - -msgid "Host-IP or Network" -msgstr "" -"IP do Equipamento " -"ou Rede" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Nome do equipamento" - -msgid "Hostname to send when requesting DHCP" -msgstr "Nome do equipamento enviado quando requisitar DHCP" - -msgid "Hostnames" -msgstr "Nome dos equipamentos" - -msgid "Hybrid" -msgstr "Híbrido" - -msgid "IKE DH Group" -msgstr "" -"Grupo DH do IKE" - -msgid "IP Addresses" -msgstr "Endereços IP" - -msgid "IP address" -msgstr "Endereço IP" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Firewall para IPv4" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "Endereço IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 assignment length" -msgstr "Tamanho da atribuição IPv4" - -msgid "IPv4 broadcast" -msgstr "Broadcast IPv4" - -msgid "IPv4 gateway" -msgstr "Roteador padrão IPv4" - -msgid "IPv4 netmask" -msgstr "Máscara de rede IPv4" - -msgid "IPv4 only" -msgstr "Somente IPv4" - -msgid "IPv4 prefix" -msgstr "Prefixo IPv4" - -msgid "IPv4 prefix length" -msgstr "Tamanho do prefixo IPv4" - -msgid "IPv4-Address" -msgstr "Endereço IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "IPv4-in-IPv4 (RFC2003)" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Firewall para IPv6" - -msgid "IPv6 Neighbours" -msgstr "Vizinhos IPv6" - -msgid "IPv6 Settings" -msgstr "Configurações IPv6" - -msgid "IPv6 ULA-Prefix" -msgstr "" -"Prefixo ULA " -"IPv6" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "Endereço IPv6" - -msgid "IPv6 assignment hint" -msgstr "Sugestão de atribuição IPv6" - -msgid "IPv6 assignment length" -msgstr "Tamanho da atribuição IPv6" - -msgid "IPv6 gateway" -msgstr "Roteador padrão do IPv6" - -msgid "IPv6 only" -msgstr "Somente IPv6" - -msgid "IPv6 prefix" -msgstr "Prefixo IPv6" - -msgid "IPv6 prefix length" -msgstr "Tamanho Prefixo IPv6" - -msgid "IPv6 routed prefix" -msgstr "Prefixo roteável IPv6" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Endereço IPv6" - -msgid "IPv6-PD" -msgstr "IPv6-PD" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-sobre-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-sobre-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identidade PEAP" - -msgid "If checked, 1DES is enabled" -msgstr "Se marcado, a cifragem 1DES será habilitada" - -msgid "If checked, encryption is disabled" -msgstr "Se marcado, a cifragem estará desabilitada" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Se especificado, monta o dispositivo pelo seu UUID ao invés de um nó de " -"dispositivo fixo" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Se especificado, monta o dispositivo pela etiqueta da partiçãoo ao invés de " -"um nó de dispositivo fixo" - -msgid "If unchecked, no default route is configured" -msgstr "Se desmarcado, nenhuma rota padrão será configurada" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" -"Se desmarcado, os endereços dos servidores DNS anunciados serão ignorados" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Se a sua memória física for insuficiente, os dados não utilizados poderão " -"ser armazenados temporariamente em um dispositivo swap, resultando em uma " -"maior quantidade de memória RAM utilizável. Esteja ciente de que a troca de dados (swap) é um processo " -"muito lento, uma vez que o dispositivo swap não pode ser acessado com taxas " -"de transferência tão altas com a memória RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignorar /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignorar interface" - -msgid "Ignore resolve file" -msgstr "Ignorar arquivo de resolução de nomes (resolv.conf)" - -msgid "Image" -msgstr "Imagem" - -msgid "In" -msgstr "Entrada" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" -"Para prevenir acesso não autorizado neste sistema, sua requisição foi " -"bloqueada. Clique abaixo em \"Continuar »\" para retornar à página anterior." - -msgid "Inactivity timeout" -msgstr "Tempo limite de inatividade" - -msgid "Inbound:" -msgstr "Entrando:" - -msgid "Info" -msgstr "Informação" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Script de iniciação" - -msgid "Initscripts" -msgstr "Scripts de iniciação" - -msgid "Install" -msgstr "Instalar" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "Instale iputils-traceroute6 para rastrear rotas IPv6" - -msgid "Install package %q" -msgstr "Instalar pacote %q" - -msgid "Install protocol extensions..." -msgstr "Instalar extensões de protocolo..." - -msgid "Installed packages" -msgstr "Pacotes instalados" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configuração da Interface" - -msgid "Interface Overview" -msgstr "Visão Geral da Interface" - -msgid "Interface is reconnecting..." -msgstr "A interface está reconectando..." - -msgid "Interface name" -msgstr "Nome da Interface" - -msgid "Interface not present or not connected yet." -msgstr "A interface não está presente ou não está conectada ainda." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Internal" -msgstr "Interno" - -msgid "Internal Server Error" -msgstr "erro no servidor interno" - -msgid "Invalid" -msgstr "Valor inválido" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"O valor informado do ID da VLAN é inválido! Somente valores entre %d e %d " -"são permitidos." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" -"O valor informado do ID da VLAN é inválido! Somente valores únicos são " -"permitidos." - -msgid "Invalid username and/or password! Please try again." -msgstr "Usuário e/ou senha inválida! Por favor, tente novamente." - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"A imagem que está a tentar carregar aparenta nao caber na flash do " -"equipamento. Por favor verifique o arquivo da imagem!" - -msgid "JavaScript required!" -msgstr "É necessário JavaScript!" - -msgid "Join Network" -msgstr "Conectar à Rede" - -msgid "Join Network: Wireless Scan" -msgstr "Conectar à Rede: Busca por Rede Sem Fio" - -msgid "Joining Network: %q" -msgstr "Juntando-se à rede %q" - -msgid "Keep settings" -msgstr "Manter configurações" - -msgid "Kernel Log" -msgstr "Registo do Kernel" - -msgid "Kernel Version" -msgstr "Versão do Kernel" - -msgid "Key" -msgstr "Chave" - -msgid "Key #%d" -msgstr "Chave #%d" - -msgid "Kill" -msgstr "Matar" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Servidor L2TP" - -msgid "LCP echo failure threshold" -msgstr "Limite de falha no eco do LCP" - -msgid "LCP echo interval" -msgstr "Intervalo do eco do LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Etiqueta" - -msgid "Language" -msgstr "Idioma" - -msgid "Language and Style" -msgstr "Idioma e Estilo" - -msgid "Latency" -msgstr "Latência" - -msgid "Leaf" -msgstr "Folha" - -msgid "Lease time" -msgstr "Tempo de concessão" - -msgid "Lease validity time" -msgstr "Tempo de validade da atribuição" - -msgid "Leasefile" -msgstr "Arquivo de atribuições" - -msgid "Leasetime remaining" -msgstr "Tempo restante da atribuição" - -msgid "Leave empty to autodetect" -msgstr "Deixe vazio para detectar automaticamente" - -msgid "Leave empty to use the current WAN address" -msgstr "Deixe vazio para usar o endereço WAN atual" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limite" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" -"Limite o serviço DNS para subredes das interfaces nas quais estamos servindo " -"DNS." - -msgid "Limit listening to these interfaces, and loopback." -msgstr "Escute somente nestas interfaces e na interface local (loopback) " - -msgid "Line Attenuation (LATN)" -msgstr "Atenuação de Linha (LATN)" - -msgid "Line Mode" -msgstr "Modo da Linha" - -msgid "Line State" -msgstr "Estado da Linha" - -msgid "Line Uptime" -msgstr "Tempo de Atividade da Linha" - -msgid "Link On" -msgstr "Enlace Ativo" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Lista dos servidores DNS para " -"encaminhar as requisições" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" -"Lista dos R0KHs no mesmo Domínio de Mobilidade.
    Formato: Endereço " -"MAC, Identificador NAS, chave de 128 bits como cadeia hexadecimal.
    " -"Esta lista é usada para mapear o Identificador R0KH (Identificador NAS) para " -"um endereço MAC de destino ao solicitar a chave PMK-R1 a partir do R0KH que " -"o STA usado durante a Associação de Domínio de Mobilidade Inicial." - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" -"Lista dos R1KHs no mesmo Domínio de Mobilidade.
    Formato: Endereço " -"MAC, R1KH-ID como 6 octetos com dois pontos, chave de 128 bits como cadeia " -"hexadecimal.
    Esta lista é usada para mapear o identificador R1KH para " -"um endereço MAC de destino ao enviar a chave PMK-R1 a partir do R0KH. Esta é " -"também a lista de R1KHs autorizados no MD que podem solicitar chaves PMK-R1." - -msgid "List of SSH key files for auth" -msgstr "Lista de arquivos de chaves SSH para autenticação" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" -"Lista dos domínios para os quais será permitido respostas apontando para " -"redes privadas (RFC1918)" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" -"Lista de servidores DNS que " -"fornecem resultados errados para consultas a domínios inexistentes (NX)" - -msgid "Listen Interfaces" -msgstr "Interfaces de Escuta" - -msgid "Listen Port" -msgstr "Porta de Escuta" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Escuta apenas na interface especificada. Se não especificado, escuta em todas" - -msgid "Listening port for inbound DNS queries" -msgstr "Porta de escuta para a entrada das consultas DNS" - -msgid "Load" -msgstr "Carga" - -msgid "Load Average" -msgstr "Carga Média" - -msgid "Loading" -msgstr "Carregando" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "Endereço IP local para atribuir" - -msgid "Local IPv4 address" -msgstr "Endereço IPv4 local" - -msgid "Local IPv6 address" -msgstr "Endereço IPv6 local" - -msgid "Local Service Only" -msgstr "Somente Serviço Local" - -msgid "Local Startup" -msgstr "Iniciação Local" - -msgid "Local Time" -msgstr "Hora Local" - -msgid "Local domain" -msgstr "Domínio Local" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Especificação do domínio local. Nomes que casam com este domínio nunca serão " -"encaminhados e são resolvidos somente pelo DHCP ou pelo arquivos de " -"equipamentos conhecidos (hosts)" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Sufixo do domínio local adicionado aos nomes no DHCP e nas entradas dos " -"arquivo de equipamentos conhecidos (hosts)" - -msgid "Local server" -msgstr "Servidor local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Localizar o nome do equipamento dependendo da subrede requisitante se " -"mútliplos endereços IPs estiverem disponíveis" - -msgid "Localise queries" -msgstr "Localizar consultas" - -msgid "Locked to channel %s used by: %s" -msgstr "Travado no canal %s usado por: %s" - -msgid "Log output level" -msgstr "Nível de detalhamento de saída dos registros" - -msgid "Log queries" -msgstr "Registar as consultas" - -msgid "Logging" -msgstr "Registrando os eventos" - -msgid "Login" -msgstr "Entrar" - -msgid "Logout" -msgstr "Sair" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" -"Segundos de Perda de Sinal (LOSS)" - -msgid "Lowest leased address as offset from the network address." -msgstr "O endereço mais baixo concedido como deslocamento do endereço da rede." - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "Endereço MAC" - -msgid "MAC-Address Filter" -msgstr "Filtro de Endereço MAC" - -msgid "MAC-Filter" -msgstr "Filtro de MAC" - -msgid "MAC-List" -msgstr "Lista de MAC" - -msgid "MAP / LW4over6" -msgstr "MAP / LW4over6" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "MD5" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "" -"MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" -"Certifique-se que clonou o sistema de arquivos raiz com algo como o comando " -"abaixo:" - -msgid "Manual" -msgstr "Manual" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" -"Taxa de Dados Atingível Máxima (ATTNDR)" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Número máximo permitido de alocações DHCP ativas" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Número máximo permitido de consultas DNS concorrentes" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Tamanho máximo permitido dos pacotes UDP EDNS.0" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Tempo máximo, em segundos, para esperar que o modem fique pronto" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" -"Comprimento máximo do nome é de 15 caracteres, incluindo o prefixo " -"automático do protocolo/ponte (br-, 6in4- pppoe-, etc.)" - -msgid "Maximum number of leased addresses." -msgstr "Número máximo de endereços atribuídos." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Memória" - -msgid "Memory usage (%)" -msgstr "Uso da memória (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Métrica" - -msgid "Mirror monitor port" -msgstr "Porta de monitoramento do espelho" - -msgid "Mirror source port" -msgstr "Porta de origem do espelho" - -msgid "Missing protocol extension for proto %q" -msgstr "Extensão para o protocolo %q está ausente" - -msgid "Mobility Domain" -msgstr "Domínio da Mobilidade" - -msgid "Mode" -msgstr "Modo" - -msgid "Model" -msgstr "Modelo" - -msgid "Modem device" -msgstr "Dispositivo do Modem" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "Estouro de tempo da iniciação do modem" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Entrada de Montagem" - -msgid "Mount Point" -msgstr "Ponto de Montagem" - -msgid "Mount Points" -msgstr "Pontos de Montagem" - -msgid "Mount Points - Mount Entry" -msgstr "Pontos de Montagem - Entrada de Montagem" - -msgid "Mount Points - Swap Entry" -msgstr "Pontos de Montagem - Entrada da Swap" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Pontos de montagem definem em que ponto um dispositivo de armazenamento será " -"anexado ao sistema de arquivos" - -msgid "Mount filesystems not specifically configured" -msgstr "Monte sistemas de arquivos não especificamente configurados" - -msgid "Mount options" -msgstr "Opções de montagem" - -msgid "Mount point" -msgstr "Ponto de montagem" - -msgid "Mount swap not specifically configured" -msgstr "Montar espalho de troca (swap) não especificamente configurado" - -msgid "Mounted file systems" -msgstr "Sistemas de arquivos montados" - -msgid "Move down" -msgstr "Mover para baixo" - -msgid "Move up" -msgstr "Mover para cima" - -msgid "Multicast address" -msgstr "Endereço de Multicast" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "Modo NAT-T" - -msgid "NAT64 Prefix" -msgstr "Prefixo NAT64" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "Proxy NDP" - -msgid "NT Domain" -msgstr "Domínio NT" - -msgid "NTP server candidates" -msgstr "Candidatos a servidor NTP" - -msgid "Name" -msgstr "Nome" - -msgid "Name of the new interface" -msgstr "Nome da nova interface" - -msgid "Name of the new network" -msgstr "Nome da nova rede" - -msgid "Navigation" -msgstr "Navegação" - -msgid "Netmask" -msgstr "Máscara de rede" - -msgid "Network" -msgstr "Rede" - -msgid "Network Utilities" -msgstr "Utilitários de Rede" - -msgid "Network boot image" -msgstr "Imagem de boot pela rede" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "Rede sem interfaces." - -msgid "Next »" -msgstr "Próximo »" - -msgid "No DHCP Server configured for this interface" -msgstr "Nenhum Servidor DHCP configurado para esta interface" - -msgid "No NAT-T" -msgstr "Sem NAT-T" - -msgid "No chains in this table" -msgstr "Nenhuma cadeira nesta tabela" - -msgid "No files found" -msgstr "Nenhum arquivo encontrado" - -msgid "No information available" -msgstr "Nenhuma informação disponível" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "Nenhum cache negativo" - -msgid "No network configured on this device" -msgstr "Nenhuma rede configurada neste dispositivo" - -msgid "No network name specified" -msgstr "Nenhum nome de rede foi especificado" - -msgid "No package lists available" -msgstr "Nenhuma lista de pacotes disponível" - -msgid "No password set!" -msgstr "Nenhuma senha definida!" - -msgid "No rules in this chain" -msgstr "Sem regras nesta cadeia" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Nenhuma zona definida" - -msgid "Noise" -msgstr "Ruído" - -msgid "Noise Margin (SNR)" -msgstr "Margem de Ruído (SNR)" - -msgid "Noise:" -msgstr "Ruído:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" -"Erros CRC Não PreemptivosCRC_P" - -msgid "Non-wildcard" -msgstr "Sem caracter curinga" - -msgid "None" -msgstr "Nenhum" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Não Encontrado" - -msgid "Not associated" -msgstr "Não conectado" - -msgid "Not connected" -msgstr "Não conectado" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: Os arquivos de configuração serão apagados." - -msgid "Note: interface name length" -msgstr "Aviso: tamanho do nome da interface" - -msgid "Notice" -msgstr "Aviso" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Configuração-OPKG" - -msgid "Obfuscated Group Password" -msgstr "Senha Ofuscada do Grupo" - -msgid "Obfuscated Password" -msgstr "Senha Ofuscada" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "Atraso no estado de desligado" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Nesta página pode configurar as interfaces de rede. Esta interface pode " -"formar uma ponte juntando várias interfaces. Para isto, marque o campo " -"\"Juntar interfaces em uma ponte\" e informar as várias interfaces de rede. " -"Pode também usar a notação para VLAN INTERFACE.VLANNR (ex.: " -"eth0.1)." - -msgid "On-State Delay" -msgstr "Atraso no estado de conexões" - -msgid "One of hostname or mac address must be specified!" -msgstr "" -"É necessário especificar ao menos um nome de equipamento ou endereço MAC!" - -msgid "One or more fields contain invalid values!" -msgstr "Um ou mais campos contém valores inválidos!" - -msgid "One or more invalid/required values on tab" -msgstr "Um ou mais valores inválidos/obrigatórios na aba" - -msgid "One or more required fields have no value!" -msgstr "Um ou mais campos obrigatórios não tem valor!" - -msgid "Open list..." -msgstr "Abrir lista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "OpenConnect (CISCO AnyConnect)" - -msgid "Operating frequency" -msgstr "Frequência de Operação" - -msgid "Option changed" -msgstr "Opção alterada" - -msgid "Option removed" -msgstr "Opção removida" - -msgid "Optional" -msgstr "Opcional" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" -"Opcional. Adiciona uma camada extra de cifragem simétrica para resistência " -"pós quântica." - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "Opcional. Cria rotas para endereços IP Autorizados para este parceiro." - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" -"Opcional. Equipamento do parceiro. Nomes serão resolvido antes de levantar a " -"interface." - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "Opcional. Unidade Máxima de Transmissão da interface do túnel." - -msgid "Optional. Port of peer." -msgstr "Opcional. Porta do parceiro." - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" -"Opcional. Segundos entre mensagens para manutenção da conexão. O padrão é 0 " -"(desabilitado). O valor recomendado caso este dispositivo esteja atrás de " -"uma NAT é 25." - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "opcional. Porta UDP usada para pacotes saintes ou entrantes." - -msgid "Options" -msgstr "Opções" - -msgid "Other:" -msgstr "Outro:" - -msgid "Out" -msgstr "Saída" - -msgid "Outbound:" -msgstr "Saindo:" - -msgid "Output Interface" -msgstr "Interface de Saída" - -msgid "Override MAC address" -msgstr "Sobrescrever o endereço MAC" - -msgid "Override MTU" -msgstr "" -"Sobrescrever o MTU" - -msgid "Override TOS" -msgstr "Sobrescrever o TOS" - -msgid "Override TTL" -msgstr "Sobrescrever o TTL" - -msgid "Override default interface name" -msgstr "Sobrescrever o nome da nova interface" - -msgid "Override the gateway in DHCP responses" -msgstr "Sobrescrever o roteador padrão nas respostas do DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Sobrescrever a máscara de rede enviada aos clientes. Normalmente, ela é " -"calculada a partir da máscara da subrede de onde o cliente solicitou o " -"endereço." - -msgid "Override the table used for internal routes" -msgstr "Sobrescrever a tabela usada para as rotas internas" - -msgid "Overview" -msgstr "Visão geral" - -msgid "Owner" -msgstr "Dono" - -msgid "PAP/CHAP password" -msgstr "Senha do PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Usuário do PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "PMK R1 Push" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Encapsulamento PPPoA " - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "Deslocamento PSID" - -msgid "PSID-bits length" -msgstr "Comprimento dos bits PSID" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "PTM/EFM (Modo de Transferência de Pacotes)" - -msgid "Package libiwinfo required!" -msgstr "O pacote libiwinfo é necessário!" - -msgid "Package lists are older than 24 hours" -msgstr "As listas de pacotes são mais antigas do que 24 horas" - -msgid "Package name" -msgstr "Nome do Pacote" - -msgid "Packets" -msgstr "Pacotes" - -msgid "Part of zone %q" -msgstr "Parte da zona %q" - -msgid "Password" -msgstr "Senha" - -msgid "Password authentication" -msgstr "Autenticação por senha" - -msgid "Password of Private Key" -msgstr "Senha da Chave Privada" - -msgid "Password of inner Private Key" -msgstr "Senha da Chave Privada interna" - -msgid "Password successfully changed!" -msgstr "A senha foi alterada com sucesso!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Caminho para o Certificado da AC" - -msgid "Path to Client-Certificate" -msgstr "Caminho para o Certificado do Cliente" - -msgid "Path to Private Key" -msgstr "Caminho para a Chave Privada" - -msgid "Path to inner CA-Certificate" -msgstr "Caminho para os certificados CA interno" - -msgid "Path to inner Client-Certificate" -msgstr "Caminho para o Certificado do Cliente interno" - -msgid "Path to inner Private Key" -msgstr "Caminho para a Chave Privada interna" - -msgid "Peak:" -msgstr "Pico:" - -msgid "Peer IP address to assign" -msgstr "Endereço IP do parceiro para atribuir" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "Parceiros" - -msgid "Perfect Forward Secrecy" -msgstr "Sigilo Encaminhado Perfeito" - -msgid "Perform reboot" -msgstr "Reiniciar o sistema" - -msgid "Perform reset" -msgstr "Zerar configuração" - -msgid "Persistent Keep Alive" -msgstr "Manutenção da Conexão Persistente" - -msgid "Phy Rate:" -msgstr "Taxa física:" - -msgid "Physical Settings" -msgstr "Configurações Físicas" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pcts." - -msgid "Please enter your username and password." -msgstr "Entre com o seu usuário e senha." - -msgid "Policy" -msgstr "Política" - -msgid "Port" -msgstr "Porta" - -msgid "Port status:" -msgstr "Status da porta" - -msgid "Power Management Mode" -msgstr "Modo de Gerenciamento de Energia" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" -"Erros CRC PreemptivosCRCP_P" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "Prefixo Delegado" - -msgid "Preshared Key" -msgstr "Chave Compartilhada" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Assumir que o parceiro está morto depois de uma data quantidade de falhas de " -"echo do LCP. Use 0 para ignorar as falhas" - -msgid "Prevent listening on these interfaces." -msgstr "Evite escutar nestas Interfaces." - -msgid "Prevents client-to-client communication" -msgstr "Impede a comunicação de cliente para cliente" - -msgid "Private Key" -msgstr "Chave Privada" - -msgid "Proceed" -msgstr "Proceder" - -msgid "Processes" -msgstr "Processos" - -msgid "Profile" -msgstr "Perfil" - -msgid "Prot." -msgstr "Protocolo" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Protocol family" -msgstr "Família do protocolo" - -msgid "Protocol of the new interface" -msgstr "Protocolo para a nova interface" - -msgid "Protocol support is not installed" -msgstr "O suporte ao protocolo não está instalado" - -msgid "Provide NTP server" -msgstr "Fornecer serviço NTP" - -msgid "Provide new network" -msgstr "Prover nova rede" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Ad-Hoc falso (ahdemo)" - -msgid "Public Key" -msgstr "Chave Pública" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" -"Prefixo público roteado para este dispositivo para distribuição a seus " -"clientes." - -msgid "QMI Cellular" -msgstr "Celular QMI" - -msgid "Quality" -msgstr "Qualidade" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "Validade da Chave R0" - -msgid "R1 Key Holder" -msgstr "Detentor da Chave R1" - -msgid "RFC3947 NAT-T mode" -msgstr "Modo NAT-T (RFC3947)" - -msgid "RTS/CTS Threshold" -msgstr "Limiar RTS/CTS" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Taxa de RX" - -msgid "Radius-Accounting-Port" -msgstr "Porta de contabilidade do RADIUS" - -msgid "Radius-Accounting-Secret" -msgstr "Segredo da contabilidade do RADIUS" - -msgid "Radius-Accounting-Server" -msgstr "Servidor da contabilidade do RADIUS" - -msgid "Radius-Authentication-Port" -msgstr "Porta de autenticação do RADIUS" - -msgid "Radius-Authentication-Secret" -msgstr "Segredo da autenticação do RADIUS" - -msgid "Radius-Authentication-Server" -msgstr "Servidor da autenticação do RADIUS" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Ler /etc/ethers para configurar o Servidor-DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Realmente excluir esta interface Wireless? A exclusão não pode ser " -"desfeita!\n" -"Você poderá perder o acesso a este dispositivo se você estiver conectado " -"através desta interface." - -msgid "Really reset all changes?" -msgstr "Realmente limpar todas as mudanças?" - -msgid "Really switch protocol?" -msgstr "Realmente trocar o protocolo?" - -msgid "Realtime Connections" -msgstr "Conexões em Tempo Real" - -msgid "Realtime Graphs" -msgstr "Gráficos em Tempo Real" - -msgid "Realtime Load" -msgstr "Carga em Tempo Real" - -msgid "Realtime Traffic" -msgstr "Tráfego em Tempo Real" - -msgid "Realtime Wireless" -msgstr "Rede sem fio em Tempo Real" - -msgid "Reassociation Deadline" -msgstr "Limite para Reassociação" - -msgid "Rebind protection" -msgstr "Proteção contra \"Rebind\"" - -msgid "Reboot" -msgstr "Reiniciar" - -msgid "Rebooting..." -msgstr "Reiniciando..." - -msgid "Reboots the operating system of your device" -msgstr "Reinicia o sistema operacional do seu dispositivo" - -msgid "Receive" -msgstr "Receber" - -msgid "Receiver Antenna" -msgstr "Antena de Recepção" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "Recomendado. Endereços IP da interface do WireGuard." - -msgid "Reconnect this interface" -msgstr "Reconectar esta interface" - -msgid "References" -msgstr "Referências" - -msgid "Relay" -msgstr "Retransmissor" - -msgid "Relay Bridge" -msgstr "Ponte por Retransmissão" - -msgid "Relay between networks" -msgstr "Encaminha o tráfego entre as redes" - -msgid "Relay bridge" -msgstr "Ponte por retransmissão" - -msgid "Remote IPv4 address" -msgstr "Endereço IPv4 remoto" - -msgid "Remote IPv4 address or FQDN" -msgstr "Endereço IPv4 remoto ou FQDN" - -msgid "Remove" -msgstr "Remover" - -msgid "Repeat scan" -msgstr "Repetir busca" - -msgid "Replace entry" -msgstr "Substituir entrada" - -msgid "Replace wireless configuration" -msgstr "Substituir a configuração da rede sem fio" - -msgid "Request IPv6-address" -msgstr "Solicita endereço IPv6" - -msgid "Request IPv6-prefix of length" -msgstr "Solicita prefixo IPv6 de tamanho" - -msgid "Required" -msgstr "Necessário" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" -"Obrigatório para alguns provedores de internet, ex. Charter com DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "Obrigatório. Chave privada codificada em Base64 para esta interface." - -msgid "Required. Base64-encoded public key of peer." -msgstr "Necessário. Chave Pública do parceiro codificada como Base64." - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" -"Obrigatório. Endereços IP e prefixos que este parceiro está autorizado a " -"usar dentro do túnel. Normalmente é o endereço IP do parceiro no túnel e as " -"redes que o parceiro roteia através do túnel." - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "Obrigatório. Chave Pública do parceiro." - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" -"Exige o suporte DNSSEC do servidor superior; verifica se resposta não " -"assinadas realmente vẽm de domínios não assinados." - -msgid "Reset" -msgstr "Limpar" - -msgid "Reset Counters" -msgstr "Reiniciar contadores" - -msgid "Reset to defaults" -msgstr "Redefinir para os valores padrão" - -msgid "Resolv and Hosts Files" -msgstr "Arquivos de Resolv e Hosts" - -msgid "Resolve file" -msgstr "Arquivo Resolv" - -msgid "Restart" -msgstr "Reiniciar" - -msgid "Restart Firewall" -msgstr "Reiniciar o firewall" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Restauração" - -msgid "Restore backup" -msgstr "Restaurar cópia de segurança" - -msgid "Reveal/hide password" -msgstr "Relevar/esconder senha" - -msgid "Revert" -msgstr "Reverter" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Raiz" - -msgid "Root directory for files served via TFTP" -msgstr "Diretório raiz para arquivos disponibilizados pelo TFTP" - -msgid "Root preparation" -msgstr "Prepação da raiz (/)" - -msgid "Route Allowed IPs" -msgstr "Roteie Andereços IP Autorizados" - -msgid "Route type" -msgstr "Tipo de rota" - -msgid "Router Advertisement-Service" -msgstr "Serviço de Anúncio de Roteador" - -msgid "Router Password" -msgstr "Senha do Roteador" - -msgid "Routes" -msgstr "Rotas" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"As rotas especificam através de qual interface e roteador um certo destino " -"podem ser alcançado." - -msgid "Run a filesystem check before mounting the device" -msgstr "" -"Execute a verificação do sistema de arquivos antes da montagem do dispositivo" - -msgid "Run filesystem check" -msgstr "Execute a verificação do sistema de arquivos " - -msgid "SHA256" -msgstr "SHA256" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "Acesso SSH" - -msgid "SSH server address" -msgstr "Endereço do servidor SSH" - -msgid "SSH server port" -msgstr "Porta do servidor SSH" - -msgid "SSH username" -msgstr "Usuário do SSH" - -msgid "SSH-Keys" -msgstr "Chaves SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Salvar" - -msgid "Save & Apply" -msgstr "Salvar & Aplicar" - -msgid "Scan" -msgstr "Procurar" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Tarefas Agendadas" - -msgid "Section added" -msgstr "Seção adicionada" - -msgid "Section removed" -msgstr "Seção removida" - -msgid "See \"mount\" manpage for details" -msgstr "Veja o manual (man) do comando \"mount\" para detalhes" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Enviar requisições de eco do LCP no dado intervalo em segundos. Somente " -"efetivo em conjunto com o limite de falhas." - -msgid "Separate Clients" -msgstr "Isolar Clientes" - -msgid "Server Settings" -msgstr "Configurações do Servidor" - -msgid "Service Name" -msgstr "Nome do Serviço" - -msgid "Service Type" -msgstr "Tipo do Serviço" - -msgid "Services" -msgstr "Serviços" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "Configurar a Sincronização do Horário" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "Configurar Servidor DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" -"Segundos com erro severos (SES)" - -msgid "Short GI" -msgstr "Intervalo de guarda curto" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "Mostra a lista atual de arquivos para a cópia de segurança" - -msgid "Shutdown this interface" -msgstr "Desligar esta interface" - -msgid "Signal" -msgstr "Sinal" - -msgid "Signal Attenuation (SATN)" -msgstr "Atenuação do Sinal (SATN)" - -msgid "Signal:" -msgstr "Sinal:" - -msgid "Size" -msgstr "Tamanho" - -msgid "Size (.ipk)" -msgstr "Tamanho (.ipk)" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Pular" - -msgid "Skip to content" -msgstr "Pular para o conteúdo" - -msgid "Skip to navigation" -msgstr "Pular para a navegação" - -msgid "Slot time" -msgstr "Intervalo de tempo" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "VLAN em Software" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Alguns campos estão inválidos e os valores não podem ser salvos!" - -msgid "Sorry, the object you requested was not found." -msgstr "Desculpe o objeto solicitado não foi encontrado" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Desculpe, o servidor encontrou um erro inesperado." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"Sinto muito, não existe suporte para o sysupgrade. Uma nova imagem de " -"firmware deve ser gravada manualmente. Por favor, consulte a wiki para " -"instruções específicas da instalação deste dispositivo." - -msgid "Source" -msgstr "Origem" - -msgid "Specifies the directory the device is attached to" -msgstr "Especifica o diretório que o dispositivo está conectado" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Especifica a porta de escuta deste Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Especifica a quantidade máxima de requisições ARP falhadas antes de " -"considerar que um equipamento está morto" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Especifica a quantidade máxima de segundos antes de considerar que um " -"equipamento está morto" - -msgid "Specify a TOS (Type of Service)." -msgstr "Especifique um Tipo de Serviço (TOS)" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" -"Especifica o tempo de vida (TTL) para os " -"pacotes encapsulados ao invés do padrão (64)." - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" -"Especifica a unidade máxima de transmissão (MTU) ao invés do valor padrão (1280 bytes)" - -msgid "Specify the secret encryption key here." -msgstr "Especifique a chave de cifragem secreta aqui." - -msgid "Start" -msgstr "Iniciar" - -msgid "Start priority" -msgstr "Prioridade de iniciação" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Iniciação" - -msgid "Static IPv4 Routes" -msgstr "Rotas Estáticas IPv4" - -msgid "Static IPv6 Routes" -msgstr "Rotas Estáticas IPv6" - -msgid "Static Leases" -msgstr "Alocações Estáticas" - -msgid "Static Routes" -msgstr "Rotas Estáticas" - -msgid "Static address" -msgstr "Endereço Estático" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Alocações estáticas são usadas para definir um endereço IP fixo e nome " -"simbólico para os clientes do DHCP. Elas também são necessárias para " -"configurações não dinâmicas onde um computador com a alocação correspondente " -"é provido." - -msgid "Status" -msgstr "Estado" - -msgid "Stop" -msgstr "Parar" - -msgid "Strict order" -msgstr "Ordem Exata" - -msgid "Submit" -msgstr "Enviar" - -msgid "Suppress logging" -msgstr "Suprimir registros (log)" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "Suprimir registros (log) de operações rotineiras destes protocolos" - -msgid "Swap" -msgstr "Espaço de Troca (swap)" - -msgid "Swap Entry" -msgstr "Entrada do espaço de troca (Swap)" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "Switch %q" - -msgid "Switch %q (%s)" -msgstr "Switch %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" -"O Switch %q tem uma topologia desconhecida - as configurações de VLAN podem " -"não ser precisas." - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "Switch VLAN" - -msgid "Switch protocol" -msgstr "Trocar o protocolo" - -msgid "Sync with browser" -msgstr "Sincronizar com o navegador" - -msgid "Synchronizing..." -msgstr "Sincronizando..." - -msgid "System" -msgstr "Sistema" - -msgid "System Log" -msgstr "Registo do Sistema" - -msgid "System Properties" -msgstr "Propriedades do Sistema" - -msgid "System log buffer size" -msgstr "Tamanho do buffer de registro do sistema" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Configurações do TFTP" - -msgid "TFTP server root" -msgstr "Raiz do servidor TFTP" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "Taxa de TX" - -msgid "Table" -msgstr "Tabela" - -msgid "Target" -msgstr "Destino" - -msgid "Target network" -msgstr "Rede de destino" - -msgid "Terminate" -msgstr "Terminar" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"A seção da Configuração do Dispositivo engloba as configurações " -"físicas do rádio como canal, potência de transmissão ou seleção da antena. " -"Estas configurações são compartilhadas entre todas as redes sem fio (se o " -"hardware for capaz de utilizar múltiplas SSID). As configurações específicas " -"de cada rede, como cifragem ou modo de operação estão agrupadas na " -"Configuração da Interface." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"O pacote libiwinfo-lua não está instalado. Você precisa instalar " -"este componente para ter uma configuração da rede sem fio funcional!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" -"A configuração da atualização de pontas HE.net mudou. Você deve agora usar o " -"nome do usuário ao invés do identificador do usuário!" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "O endereço IPv4 ou o nome completo (FQDN) da ponta remota do túnel." - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"O prefixo IPv6 atribuído pelo provedor, geralmente termina com::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Os caracteres permitidos são: A-Z, a-z, 0-9 e _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" -"O arquivo de configuração não pode ser carregado devido ao seguinte erro:" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"O arquivo do dispositivo de armazenamento ou da partição (ex: /dev/" -"sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"O sistema de arquivos que foi usado para formatar a unidade de armazenamento " -"(ex. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"A imagem do firmware foi enviada. Abaixo estão a soma de verificação " -"(checksum) e o tamanho dom arquivo. Compare-os com o arquivo original para " -"garantir a integridade dos dados.
    Clique em \"Proceder\" para iniciar " -"o procedimetno de gravação." - -msgid "The following changes have been reverted" -msgstr "As seguintes alterações foram revertidas" - -msgid "The following rules are currently active on this system." -msgstr "As seguintes regras estão atualmente ativas neste sistema." - -msgid "The given network name is not unique" -msgstr "O nome de rede informado não é único" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Este equipamento não é capaz de utilizar SSID múltiplos e as configurações " -"existentes serão substituídas se você proceder." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"O comprimento do prefixo IPv4 em bits, o restante é usado nos endereços IPv6." - -msgid "The length of the IPv6 prefix in bits" -msgstr "O comprimento do prefixo IPv6 em bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "O endereço IPv4 local sobre o qual o túnel será criado (opcional)." - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"As portas de rede neste dispositivo podem ser configuradas em diversas VLANs nas quais computadores em uma " -"mesma VLAN podem se comunicar " -"diretamente. VLANs são muitas " -"vezes utilizadas para separar diferentes segmentos de rede. Em geral, existe " -"uma porta para o enlace superior (uplink) e as demais portas são utilizadas " -"para a rede local." - -msgid "The selected protocol needs a device assigned" -msgstr "O protocolo selecionado necessita estar associado a um dispositivo" - -msgid "The submitted security token is invalid or already expired!" -msgstr "A chave eletrônica enviada é inválida ou já expirou!" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"O sistema está apagando agora a partição da configuração e irá reiniciar " -"quando terminado." - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"O sistema está gravando o firmware para a flash.
    NÃO DESLIGUE O " -"EQUIPAMENTO!
    Espere alguns minutos até tentar reconectar. Dependendo " -"da sua configuração, pode ser necessário renovar o endereço do seu " -"computador para poder conectar novamente ao roteador." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"A imagem carregada não contém um formato suportado. Confirme que você " -"escolheu uma imagem para a sua plataforma." - -msgid "There are no active leases." -msgstr "Não existem alocações ativas." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "Não existem modificações pendentes para reverter!" - -msgid "There are no pending changes!" -msgstr "Não existem modificações pendentes!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Ainda não existe um dispositivo associado. Por favor, associe um dispositivo " -"de rede na aba \"Configurações Físicas\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Não existem uma senha definida para este roteador. Por favor, configure uma " -"senha para o root para proteger a interface WEB e habilitar o SSH." - -msgid "This IPv4 address of the relay" -msgstr "Este endereço IPv4 do repassar" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" -"Este arquivo deve conter linhas como 'server=/domain/1.2.3.4' ou " -"'server=1.2.3.4' para servidores DNS por domínio ou completos." - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Esta é a lista dos padrões de expressão shell para casar com os arquivos e " -"diretórios incluídos durante a atualização do sistema. Arquivos modificados " -"em /etc/config/ e alguns outros arquivos de configuração são automaticamente " -"preservados." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" -"Isto é a \"Update Key\" configurada para o túnel ou a senha da cpnta se não " -"tem uma \"Update Keu\" configurada" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Este é o conteúdo do /etc/rc.local. Insira seus próprios comandos aqui " -"(antes de 'exit 0') para executá-los no final do processo de boot." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" -"Este é o endereço da ponta local designado pelo agente de túnel. normalmente " -"ele termina com ...:2/64" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Este é o único DHCP na rede local" - -msgid "This is the plain username for logging into the account" -msgstr "Este é o nome do usuário em para se autenticar na sua conta" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" -"Este é o prefixo roteado pelo agente do tunel para você usar com seus " -"clientes" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Este é o sistema de agendamento de tarefas." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Este é normalmente o endereço do PoP mais próximo operado pelo agente de túnel" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Esta lista fornece uma visão geral sobre os processos em execução no sistema." - -msgid "This page gives an overview over currently active network connections." -msgstr "Esta página fornece informações sobre as conexões de rede ativas." - -msgid "This section contains no values yet" -msgstr "Esta seção ainda não contêm valores" - -msgid "Time Synchronization" -msgstr "Sincronização de horário" - -msgid "Time Synchronization is not configured yet." -msgstr "A sincronização do horário ainda não está configurada." - -msgid "Timezone" -msgstr "Fuso Horário" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Para recuperar os arquivos de configuração, você pode enviar aqui uma cópia " -"de segurança anterior. Para retornar o roteador para o seu estado inicial, " -"clique em \"Zerar configuração\" (somente possível para imagens squashfs)." - -msgid "Tone" -msgstr "Tom" - -msgid "Total Available" -msgstr "Total Disponível" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Tráfego" - -msgid "Transfer" -msgstr "Transferências" - -msgid "Transmission Rate" -msgstr "Taxa de Transmissão" - -msgid "Transmit" -msgstr "Transmitir" - -msgid "Transmit Power" -msgstr "Potência de Transmissão" - -msgid "Transmitter Antenna" -msgstr "Antena de Transmissão" - -msgid "Trigger" -msgstr "Disparo" - -msgid "Trigger Mode" -msgstr "Modo de disparo" - -msgid "Tunnel ID" -msgstr "Identificador do Túnel" - -msgid "Tunnel Interface" -msgstr "Interface de Tunelamento" - -msgid "Tunnel Link" -msgstr "Enlace do túnel" - -msgid "Tx-Power" -msgstr "Potência de transmissão" - -msgid "Type" -msgstr "Tipo" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "UMTS somente" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Dispositivo USB" - -msgid "USB Ports" -msgstr "Portas USB" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "Não é possível a expedição" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" -"Segundos de indisponibilidade (UAS)" - -msgid "Unknown" -msgstr "Desconhecido" - -msgid "Unknown Error, password not changed!" -msgstr "Erro Desconhecido, a senha não foi alterada!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "Não gerenciado" - -msgid "Unmount" -msgstr "Desmontar" - -msgid "Unsaved Changes" -msgstr "Alterações Não Salvas" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Tipo de protocolo não suportado." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Atualizar listas" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Envia uma imagem compatível do sistema para substituir o firmware em " -"execução. Marque \"Manter configurações\" para manter as configurações " -"atuais (requer uma imagem compatível)." - -msgid "Upload archive..." -msgstr "Enviar arquivo..." - -msgid "Uploaded File" -msgstr "Arquivo Carregado" - -msgid "Uptime" -msgstr "Tempo de atividade" - -msgid "Use /etc/ethers" -msgstr "Usar /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Use o roteador do DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Use os servidores DNS anunciados pelo parceiro" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Usar códigos de países ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "" -"Use o MTU na interface do túnel" - -msgid "Use TTL on tunnel interface" -msgstr "Use TTL na interface do túnel" - -msgid "Use as external overlay (/overlay)" -msgstr "Use como uma sobreposição externa (/overlay)" - -msgid "Use as root filesystem (/)" -msgstr "Usar como o sistema de arquivos raiz (/)" - -msgid "Use broadcast flag" -msgstr "Use a marcação de broadcast" - -msgid "Use builtin IPv6-management" -msgstr "Use o gerenciamento do IPv6 embarcado" - -msgid "Use custom DNS servers" -msgstr "Use servidores DNS personalizados" - -msgid "Use default gateway" -msgstr "Use o roteador padrão" - -msgid "Use gateway metric" -msgstr "Use a métrica do roteador" - -msgid "Use routing table" -msgstr "Use a tabela de roteamento" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Use o botão Adicionar para adicionar uma nova entrada de " -"atribuição. O endereço MAC-Address identifica o equipamento, o " -"endereço IPv4 especifica o endereço fixo para usar e o nome do " -"equipamento é designado como nome simbólico (DNS) para o equipamento " -"requisitante." - -msgid "Used" -msgstr "Usado" - -msgid "Used Key Slot" -msgstr "Posição da Chave Usada" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" -"Usado para dois diferentes propósitos: identificador do RADIUS NAS e do " -"802.11r R0KH. Não necessário com o WPA(2)-PSK normal." - -msgid "User certificate (PEM encoded)" -msgstr "Certificado do usuário (codificado em formato PEM)" - -msgid "User key (PEM encoded)" -msgstr "Chave do usuário (codificada em formato PEM)" - -msgid "Username" -msgstr "Usuário" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "VLANs em %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs em %q (%s)" - -msgid "VPN Local address" -msgstr "Endereço Local da VPN" - -msgid "VPN Local port" -msgstr "Porta Local da VPN" - -msgid "VPN Server" -msgstr "Servidor VPN" - -msgid "VPN Server port" -msgstr "Porta do Servidor VPN" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "Resumo digital SHA1 do certificado do servidor VPN" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "VPNC (VPN do CISCO 3000 (e outros))" - -msgid "Vendor" -msgstr "Fabricante" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Classe do fabricante para enviar quando requisitar o DHCP" - -msgid "Verify" -msgstr "Verificar" - -msgid "Version" -msgstr "Versão" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP Sistema Aberto" - -msgid "WEP Shared Key" -msgstr "WEP Chave Compartilhada" - -msgid "WEP passphrase" -msgstr "WEP Senha" - -msgid "WMM Mode" -msgstr "Modo WMM" - -msgid "WPA passphrase" -msgstr "WPA Senha" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"A cifragem WPA requer a instalação do wpa_supplicant (para modo cliente) ou " -"do hostapd (para modo AP ou ad-hoc)." - -msgid "Waiting for changes to be applied..." -msgstr "Esperando a aplicação das mudanças..." - -msgid "Waiting for command to complete..." -msgstr "Esperando o término do comando..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "Esperando pelo dispositivo..." - -msgid "Warning" -msgstr "Atenção" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "Atenção: Existem mudanças não salvas que serão perdidas ao reiniciar!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "Largura" - -msgid "WireGuard VPN" -msgstr "VPN WireGuard" - -msgid "Wireless" -msgstr "Rede sem fio" - -msgid "Wireless Adapter" -msgstr "Dispositivo de Rede sem Fio" - -msgid "Wireless Network" -msgstr "Rede sem Fio" - -msgid "Wireless Overview" -msgstr "Visão Geral da Rede sem Fio" - -msgid "Wireless Security" -msgstr "Segurança da Rede sem Fio" - -msgid "Wireless is disabled" -msgstr "Rede sem fio está desabilitada" - -msgid "Wireless is not associated" -msgstr "Rede sem fio está não conectada" - -msgid "Wireless is restarting..." -msgstr "A rede sem fio está reiniciando..." - -msgid "Wireless network is disabled" -msgstr "A rede sem fio está desabilitada" - -msgid "Wireless network is enabled" -msgstr "A rede sem fio está habilitada" - -msgid "Write received DNS requests to syslog" -msgstr "Escreva as requisições DNS para o servidor de registro (syslog)" - -msgid "Write system log to file" -msgstr "Escrever registo do sistema (log) no arquivo" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Neste local, você pode ativar ou desativar os scripts de iniciação " -"instalados. As mudanças serão aplicadas após a reiniciação do equipamento." -"
    Aviso: Se você desativar algum script de iniciação essencial " -"como por exemplo \"rede/network\", o dispositivo poderá tornar-se " -"inacessível!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Você precisa habilitar o JavaScript no seu navegador ou o LuCI não irá " -"funcionar corretamente." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"Seu Internet Explorer é muito velho para mostrar esta página corretamente. " -"Por favor, atualiza para, ao menos, a versão 7 ou use outro navegador como o " -"Firefox, Opera ou Safari." - -msgid "any" -msgstr "qualquer" - -msgid "auto" -msgstr "automático" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "em ponte" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "criar" - -msgid "creates a bridge over specified interface(s)" -msgstr "cria uma ponte sobre determinada(s) interface(s)" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "desativar" - -msgid "disabled" -msgstr "desabilitado" - -msgid "expired" -msgstr "expirado" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Arquivo onde as alocações DHCP são armazenadas" - -msgid "forward" -msgstr "encaminhar" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "half-duplex" - -msgid "hidden" -msgstr "ocultar" - -msgid "hybrid mode" -msgstr "Modo Híbrido" - -msgid "if target is a network" -msgstr "se o destino for uma rede" - -msgid "input" -msgstr "entrada" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "" -"Arquivo local de DNS" - -msgid "minutes" -msgstr "minutos" - -msgid "mixed WPA/WPA2" -msgstr "" - -# Is this yes/no or no like in no one? -msgid "no" -msgstr "não" - -msgid "no link" -msgstr "sem link" - -msgid "none" -msgstr "nenhum" - -msgid "not present" -msgstr "não presente " - -msgid "off" -msgstr "desligado" - -msgid "on" -msgstr "ligado" - -msgid "open" -msgstr "aberto" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "sobreposição" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "modo retransmissor" - -msgid "routed" -msgstr "roteado" - -msgid "server mode" -msgstr "modo servidor" - -msgid "stateful-only" -msgstr "somente com estado" - -msgid "stateless" -msgstr "sem estado" - -msgid "stateless + stateful" -msgstr "sem estado + com estado" - -msgid "tagged" -msgstr "etiquetado" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "unidades de tempo (TUs / 1.024 ms) [1000-65535]" - -msgid "unknown" -msgstr "desconhecido" - -msgid "unlimited" -msgstr "ilimitado" - -msgid "unspecified" -msgstr "não especificado" - -msgid "unspecified -or- create:" -msgstr "não especificado -ou- criar:" - -msgid "untagged" -msgstr "não etiquetado" - -msgid "yes" -msgstr "sim" - -msgid "« Back" -msgstr "« Voltar" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Ativar esta rede" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Hermes 802.11b Wireless Controlador" - -#~ msgid "Interface is shutting down..." -#~ msgstr "A interface está desligando..." - -#~ msgid "Interface reconnected" -#~ msgstr "Interface reconectada" - -#~ msgid "Interface shut down" -#~ msgstr "Interface desligada" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Prism2/2.5/3 802.11b Wireless Controlador" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "RaLink 802.11%s Wireless Controlador" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "Realmente desligar esta interface\"%s\" ?\n" -#~ "Você poderá perder o acesso a este dispositivo se você estiver conectado " -#~ "através desta interface." - -#~ msgid "Reconnecting interface" -#~ msgstr "Reconectando interface" - -#~ msgid "Shutdown this network" -#~ msgstr "Desligar esta rede" - -#~ msgid "Wireless restarted" -#~ msgstr "A rede sem fio reiniciou" - -#~ msgid "Wireless shut down" -#~ msgstr "Rede sem fio desligada" - -#~ msgid "DHCP Leases" -#~ msgstr "Alocações do DHCP" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "Alocações DHCPv6" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "Realmente excluir esta interface? A exclusão não pode ser desfeita!\n" -#~ " Você poderá perder o acesso a este dispositivo se você estiver conectado " -#~ "através desta interface." - -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "Realmente desligar esta rede\"%s\" ?\n" -#~ "Você poderá perder o acesso a este dispositivo se você estiver conectado " -#~ "através desta interface." - -#~ msgid "Sort" -#~ msgstr "Ordenar" - -#~ msgid "help" -#~ msgstr "ajuda" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "Estado IPv4 da WAN" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "Estado IPv6 da WAN" diff --git a/luci-base/po/pt/base.po b/luci-base/po/pt/base.po deleted file mode 100644 index d548b7c8d..000000000 --- a/luci-base/po/pt/base.po +++ /dev/null @@ -1,4198 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-05-26 19:03+0200\n" -"PO-Revision-Date: 2013-09-22 18:50+0200\n" -"Last-Translator: Low \n" -"Language-Team: LANGUAGE \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(janela de %d minutos, intervalo de %d segundos)" - -msgid "(%s available)" -msgstr "(%s disponível)" - -msgid "(empty)" -msgstr "(vazio)" - -msgid "(no interfaces attached)" -msgstr "(não existem interfaces ligadas)" - -msgid "-- Additional Field --" -msgstr "-- Campo Adicional --" - -msgid "-- Please choose --" -msgstr "-- Por favor escolha --" - -msgid "-- custom --" -msgstr "-- personalizado --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Carga de 1 Minuto:" - -msgid "15 Minute Load:" -msgstr "Carga de 15 minutos:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Carga 5 Minutos:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" -"BSSID" - -msgid "DNS query port" -msgstr "" -"Porta de consulta de DNS" - -msgid "DNS server port" -msgstr "" -"Porta do servidorDNS" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"Os servidores de DNS " -"serão consultados pela ordem no ficheiro resolv" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "Endereço IPv4" - -msgid "IPv4-Gateway" -msgstr "Gateway IPv4" - -msgid "IPv4-Netmask" -msgstr "" -"Máscara de rede IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Endereço ou Rede " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "Gateway IPv6" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "Configuração do LED" - -msgid "LED Name" -msgstr "Nome da LED" - -msgid "MAC-Address" -msgstr "Endereço MAC" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Max. de concessõesDHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Tamanho Max. do pacote EDNS0 " - -msgid "Max. concurrent queries" -msgstr "Max. consultas concorrentes" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Limiar de tentativas ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Bridges ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "Identificador Canais Virtuais ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "Identificador de Caminho Virtual ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"As bridges ATM expõem o encapsulamento ethernet em ligações AAL5 como uma " -"interface de Rede Virtual Linux que pode ser usada em conjugação com o DHCP " -"ou PPP para marcar para a rede ISP." - -msgid "ATM device number" -msgstr "Número de Dispositivo ATM" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Concentrador de Acesso" - -msgid "Access Point" -msgstr "Access Point (AP)" - -msgid "Actions" -msgstr "Acções" - -msgid "Active IPv4-Routes" -msgstr "" -"Rotas-IPv4 ativas" - -msgid "Active IPv6-Routes" -msgstr "" -"Rotas-IPv6 ativas" - -msgid "Active Connections" -msgstr "Ligações Ativas" - -msgid "Active DHCP Leases" -msgstr "Concessões DHCP Ativas" - -msgid "Active DHCPv6 Leases" -msgstr "Concessões DHCPv6 Ativas" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Adicionar" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Adicionar um sufixo de domínio local aos nomes servidos dos ficheiros de " -"hosts" - -msgid "Add new interface..." -msgstr "Adicionar uma nova interface..." - -msgid "Additional Hosts files" -msgstr "Ficheiro Adicional de Hosts" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Endereço" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "Administração" - -msgid "Advanced Settings" -msgstr "Definições Avançadas" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alerta" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Permitir autenticação SSH por senha" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Permitir todos, excepto os listados" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Permitir somente os listados" - -msgid "Allow localhost" -msgstr "Permitir localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Permitir que hosts remotos se conectem às portas encaminhadas do SSH local" - -msgid "Allow root logins with password" -msgstr "Permitir o login como root só com password" - -msgid "Allow the root user to login with password" -msgstr "Permitir que o utilizador root faça login só com password" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Permitir respostas a montante na gama 127.0.0.1/8, p.e. para serviços RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "Configuração das Antenas" - -msgid "Any zone" -msgstr "Qualquer zona" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Atribuir interfaces..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Estações Associadas" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autenticação" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritário" - -msgid "Authorization Required" -msgstr "Autorização Requerida" - -msgid "Auto Refresh" -msgstr "Actualização Automática" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Disponível" - -msgid "Available packages" -msgstr "Pacotes disponíveis" - -msgid "Average:" -msgstr "Média:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Voltar" - -msgid "Back to Overview" -msgstr "Voltar à Visão Global" - -msgid "Back to configuration" -msgstr "Voltar à configuração" - -msgid "Back to overview" -msgstr "Voltar à vista global" - -msgid "Back to scan results" -msgstr "Voltar aos resultados do scan" - -msgid "Backup" -msgstr "Backup" - -msgid "Backup / Flash Firmware" -msgstr "Backup / Flashar Firmware" - -msgid "Backup file list" -msgstr "Lista de ficheiros para backup" - -msgid "Bad address specified!" -msgstr "Endereço mal especificado!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Abaixo está a lista de ficheiros para backup. Este consiste nos ficheiros de " -"configuração alterados e marcados pelo opkg, ficheiros base essenciais e " -"padrões de backup definidos pelo utilizador." - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Taxa de bits" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "Bridge" - -msgid "Bridge interfaces" -msgstr "Ativar brigde nas interfaces" - -msgid "Bridge unit number" -msgstr "Número de unidade da bridge" - -msgid "Bring up on boot" -msgstr "Levantar no arranque" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Controlador Wireless Broadcom 802.11%s" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Controlador Wireless Broadcom BCM%04x 802.11" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Uso da CPU (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Cadeia" - -msgid "Changes" -msgstr "Alterações" - -msgid "Changes applied." -msgstr "Alterações aplicadas." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Altera a password de administrador para acesso ao dispositivo" - -msgid "Channel" -msgstr "Canal" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Verificar" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Checksum" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Escolha a zona de firewall que pretende associar a esta interface. Escolha " -"não especificado para remover a interface da zona associada ou " -"coloque em branco o campo criar para definir a nova zona e ligar-" -"lhe a interface." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Escolha a rede(s) à(s) qual(is) deseja ligar esta interface wireless ou " -"preencha o campo criar para definir a nova rede." - -msgid "Cipher" -msgstr "Cifra" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Clique em \"Gerar arquivo\" para descarregar o ficheiro tar com os actuais " -"ficheiros de configuração." - -msgid "Client" -msgstr "Cliente" - -msgid "Client ID to send when requesting DHCP" -msgstr "ID de cliente a enviar para pedidos de DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Fechar ligação inativa após um dado tempo em segundos, usando 0 a ligação é " -"persistente" - -msgid "Close list..." -msgstr "Fechar lista..." - -msgid "Collecting data..." -msgstr "A obter dados..." - -msgid "Command" -msgstr "Comando" - -msgid "Common Configuration" -msgstr "Configuração comum" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configuração" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Os ficheiros de configuração serão mantidos." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Confirmação" - -msgid "Connect" -msgstr "Ligar" - -msgid "Connected" -msgstr "Ligado" - -msgid "Connection Limit" -msgstr "Limite de Ligações" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Ligações" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "País" - -msgid "Country Code" -msgstr "Código do País" - -msgid "Cover the following interface" -msgstr "Abranger a seguinte interface" - -msgid "Cover the following interfaces" -msgstr "Abranger as seguintes interfaces" - -msgid "Create / Assign firewall-zone" -msgstr "Criar / Atribuir a uma zona de firewall" - -msgid "Create Interface" -msgstr "Criar interface" - -msgid "Create a bridge over multiple interfaces" -msgstr "Criar uma bridge entre múltiplas interfaces " - -msgid "Critical" -msgstr "Critico" - -msgid "Cron Log Level" -msgstr "Nível de Log do Cron" - -msgid "Custom Interface" -msgstr "Interface Personalizada" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Customiza o comportamento dos LEDs, se possível." - -msgid "DHCP Server" -msgstr "Servidor DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP e DNS" - -msgid "DHCP client" -msgstr "Cliente DHCP" - -msgid "DHCP-Options" -msgstr "Opções DHCP" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Encaminhamentos DNS" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "Depurar" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "Gateway predefinido" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Estado predefinido" - -msgid "Define a name for this network." -msgstr "Definir um nome para esta rede." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Definir opções adicionais de DHCP, por exemplo " -"\"6,192.168.2.1,192.168.2.2\" informa os clientes de diferentes " -"servidores DNS." - -msgid "Delete" -msgstr "Apagar" - -msgid "Delete this network" -msgstr "Apagar esta rede" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Descrição" - -msgid "Design" -msgstr "Tema" - -msgid "Destination" -msgstr "Destino" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Device Configuration" -msgstr "Configuração do Dispositivo" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnósticos" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Directório" - -msgid "Disable" -msgstr "Desativar" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Desativar DHCP para esta interface." - -msgid "Disable DNS setup" -msgstr "Desativar configuração de DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Desativado" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Descartar respostas RFC1918 a montante" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "Mostrar somente pacotes contendo" - -msgid "Distance Optimization" -msgstr "Optimização de Distância" - -msgid "Distance to farthest network member in meters." -msgstr "Distância para o último host da rede em metros." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversidade" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq é um servidor combinado de DHCP e DNS para firewalls NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" -"Não colocar em cache as respostas negativas, p.e. para dominios inexistentes" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Não encaminhar pedidos que não possam ser respondidos por servidor públicos " -"de nomes" - -msgid "Do not forward reverse lookups for local networks" -msgstr "Não encaminhar lookups reversos para as redes locais" - -msgid "Domain required" -msgstr "Requerer domínio" - -msgid "Domain whitelist" -msgstr "Lista Branca do Dominio" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Não encaminhar consultas DNS sem o nome do DNS" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Descarregar e instalar pacote" - -msgid "Download backup" -msgstr "Descarregar backup" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instância do Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear oferece um acesso shell seguro à rede SSH e um servidor SCP integrado" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"DHCP " -"Dinâmico" - -msgid "Dynamic tunnel" -msgstr "Túnel dinâmico" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Alocar dinamicamente endereços DHCP para clientes. Se desativado, só os " -"clientes com reservas estáticas serão servidos." - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "Metodo-EAP" - -msgid "Edit" -msgstr "Editar" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Editar esta interface" - -msgid "Edit this network" -msgstr "Editar esta rede" - -msgid "Emergency" -msgstr "Emergência" - -msgid "Enable" -msgstr "Ativar" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Ativar STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Ativar a atualização dinâmica de ponto final HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Ativar a negociação IPv6 no link PPP" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Ativar a passagem de Jumbo Frames" - -msgid "Enable NTP client" -msgstr "Ativar o cliente NTP" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Ativar o servidor TFTP" - -msgid "Enable VLAN functionality" -msgstr "Ativar a funcionalidade VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "Ativar aprendizagem e envelhecimento" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Ativar este mount" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "Ativar esta swap" - -msgid "Enable/Disable" -msgstr "Ativar/Desativar" - -msgid "Enabled" -msgstr "Ativado" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Ativa o Spanning Tree nesta bridge" - -msgid "Encapsulation mode" -msgstr "Modo de encapsulamento" - -msgid "Encryption" -msgstr "Encriptação" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "A apagar..." - -msgid "Error" -msgstr "Erro" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Adaptador Ethernet" - -msgid "Ethernet Switch" -msgstr "Switch Ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "Expandir hosts" - -msgid "Expires" -msgstr "Expira" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"O tempo de caducidade dos endereços concessionados, minimo de 2 minutos " -"(2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Servidor externo de logs de sistema" - -msgid "External system log server port" -msgstr "Porta do Servidor externo de logs de sistema" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Ficheiro" - -msgid "Filename of the boot image advertised to clients" -msgstr "Nome de ficheiro da imagem de boot a anunciar aos clientes" - -msgid "Filesystem" -msgstr "Sistema de ficheiros" - -msgid "Filter" -msgstr "Filtro" - -msgid "Filter private" -msgstr "Filtrar endereços privados" - -msgid "Filter useless" -msgstr "Filtro inútil" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Procurar e ligar rede" - -msgid "Find package" -msgstr "Procurar pacote" - -msgid "Finish" -msgstr "Terminar" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Definições da Firewall" - -msgid "Firewall Status" -msgstr "Estado da Firewall" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Versão do Firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Porta fixa de origem para saída das consultas DNS" - -msgid "Flash Firmware" -msgstr "Gravar Firmware" - -msgid "Flash image..." -msgstr "Flashar imagem..." - -msgid "Flash new firmware image" -msgstr "Flashar nova imagem do firmware" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "A programar...." - -msgid "Force" -msgstr "Forçar" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Forçar CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Forçar DHCP nesta rede mesmo se outro servidor for detectado." - -msgid "Force TKIP" -msgstr "Forçar TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forçar TKIP e CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Encaminhar tráfego DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "Encaminhar trafego de broadcast" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Modo de encaminhamento" - -msgid "Fragmentation Threshold" -msgstr "Margem de Fragmentação" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Livre" - -msgid "Free space" -msgstr "Espaço livre" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Só GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Portas de gateway" - -msgid "General Settings" -msgstr "Definições Gerais" - -msgid "General Setup" -msgstr "Configuração Geral" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Gerar arquivo" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Controlador Wireless Genérico 802.11%s" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" -"A confirmação de password não corresponde, a password não foi alterada!" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "Ir para a configuração da password" - -msgid "Go to relevant configuration page" -msgstr "Ir para a página respectiva de configuração" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "Password HE.net" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Suspender" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Aqui pode configurar os aspectos básicos do seu equipamento, como o nome do " -"host ou o fuso horário." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Aqui pode colar as chaves SSH (uma por linha) para a autenticação SSH por " -"chave pública." - -msgid "Hide ESSID" -msgstr "" -"Ocultar ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Entradas de hosts" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" -"IP do host ou rede" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Hostname to send when requesting DHCP" -msgstr "Hostname a enviar quando houver solicitação por DHCP" - -msgid "Hostnames" -msgstr "Hostnames" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Endereço IP" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Firewall IPv4" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "Endereço IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 e IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "Broadcast IPv4" - -msgid "IPv4 gateway" -msgstr "Gateway IPv4" - -msgid "IPv4 netmask" -msgstr "Máscara IPv4" - -msgid "IPv4 only" -msgstr "Só IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "Comprimento do prefixo IPv4" - -msgid "IPv4-Address" -msgstr "Endereço-IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Firewall IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "Endereço IPv6" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "Gateway IPv6" - -msgid "IPv6 only" -msgstr "Só IPv6" - -msgid "IPv6 prefix" -msgstr "Prefixo IPv6" - -msgid "IPv6 prefix length" -msgstr "Comprimento do prefixo IPv6" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "Endereço-IPv6" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-em-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-sobre-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-sobre-IPv4 (6to4)" - -msgid "Identity" -msgstr "Identidade" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "Se desmarcado, não é configurada uma rota pré-definida" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Se desmarcado, os endereços servidor DNS anunciados são ignorados " - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Se a memória física for insuficiente, os dados poderão ser trocados " -"temporariamente para um dispositivo swap, resultando em uma maior quantidade " -"de memória utilizável RAM. Esteja ciente de que a troca de dados (swap) é um processo muito " -"lento pois o dispositivo swap não pode ser acedido com um nível elevado de " -"memória RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ignorar /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignorar interface" - -msgid "Ignore resolve file" -msgstr "Ignorar ficheiro resolv.conf" - -msgid "Image" -msgstr "Imagem" - -msgid "In" -msgstr "Entrada" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "Tempo de inatividade" - -msgid "Inbound:" -msgstr "Entrada:" - -msgid "Info" -msgstr "Info" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Script de inicialização" - -msgid "Initscripts" -msgstr "Scripts de Inicialização" - -msgid "Install" -msgstr "Instalar" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instalar pacote %q" - -msgid "Install protocol extensions..." -msgstr "Instalar extensões do protocolo..." - -msgid "Installed packages" -msgstr "Instalar pacotes" - -msgid "Interface" -msgstr "Interface" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configuração da Interface" - -msgid "Interface Overview" -msgstr "Visão Geral da Interface" - -msgid "Interface is reconnecting..." -msgstr "A interface está a religar..." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Interface não presente ou ainda não ligada." - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Erro Interno do Servidor" - -msgid "Invalid" -msgstr "Valor inválido" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"O ID de VLAN fornecido é inválido! Só os IDs entre %d e %d são permitidos." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "O ID de VLAN fornecido é inválido! Só os IDs únicos são permitidos." - -msgid "Invalid username and/or password! Please try again." -msgstr "Username inválido e/ou a password! Por favor, tente novamente." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"A imagem que está a tentar carregar aparenta não caber na flash do " -"equipamento. Por favor verifique o ficheiro de imagem." - -msgid "JavaScript required!" -msgstr "É necessário JavaScript!" - -msgid "Join Network" -msgstr "Associar Rede" - -msgid "Join Network: Wireless Scan" -msgstr "Associar Rede: Procurar Redes Wireless" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Manter definições" - -msgid "Kernel Log" -msgstr "Registo do Kernel" - -msgid "Kernel Version" -msgstr "Versão do Kernel" - -msgid "Key" -msgstr "Chave" - -msgid "Key #%d" -msgstr "Chave #%d" - -msgid "Kill" -msgstr "Matar" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Servidor L2TP" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "Intervalo de echo LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Etiqueta" - -msgid "Language" -msgstr "Idioma" - -msgid "Language and Style" -msgstr "Língua e Tema" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "Tempo de validade da concessão" - -msgid "Leasefile" -msgstr "Ficheiro de concessões" - -msgid "Leasetime remaining" -msgstr "Tempo de atribuição restante" - -msgid "Leave empty to autodetect" -msgstr "Deixar em branco para auto-detecção" - -msgid "Leave empty to use the current WAN address" -msgstr "Deixar em branco para usar o endereço WAN actual" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limite" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Link Ativo" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Lista de servidores DNS para " -"onde encaminhar os pedidos" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Lista de dominios que permitem respostas RFC1918 para" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Escutar apenas na interface fornecida ou, se não especificada, em todas" - -msgid "Listening port for inbound DNS queries" -msgstr "Porta de escuta para entrada de consultas DNS" - -msgid "Load" -msgstr "Carga" - -msgid "Load Average" -msgstr "Carga Média" - -msgid "Loading" -msgstr "A carregar" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Endereço IPv4 Local" - -msgid "Local IPv6 address" -msgstr "Endereço IPv6 Local" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "Arranque Local" - -msgid "Local Time" -msgstr "Hora Local" - -msgid "Local domain" -msgstr "Domínio local" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Especificação de dominio local. Os nomes que correspondam a este dominio " -"nunca são encaminhados e resolvidos do DHCP ou do ficheiro de hosts" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Sufixos de dominio local a juntar aos nomes DHCP e às entradas do ficheiro " -"de hosts" - -msgid "Local server" -msgstr "Servidor local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Localizar consultas" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "Nível de output do log" - -msgid "Log queries" -msgstr "Registo das consultas" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Login" - -msgid "Logout" -msgstr "Logout" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "Endereço-MAC" - -msgid "MAC-Address Filter" -msgstr "Filtro de Endereço-MAC" - -msgid "MAC-Filter" -msgstr "Filtro-MAC" - -msgid "MAC-List" -msgstr "Lista-MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Número máximo permitido de concessões DHCP ativas" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Número máximo permitido de consultas DNS permitidas" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Número máximo de segundos a esperar pelo modem para ficar pronto" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "Número máximo de endereços concessionados." - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Memória" - -msgid "Memory usage (%)" -msgstr "Uso de memória (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Métrica" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "Falta a extensão de protocolo para o protocolo %q" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Modo" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Dispositivo do modem" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "Montar Entrada" - -msgid "Mount Point" -msgstr "Ponto de Montagem" - -msgid "Mount Points" -msgstr "Pontos de Montagem" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Pontos de montagem definem em que ponto um dispositivo de memória será " -"anexado ao sistema de arquivos" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "Ponto de montagem" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Sistemas de arquivos montados" - -msgid "Move down" -msgstr "Subir" - -msgid "Move up" -msgstr "Descer" - -msgid "Multicast address" -msgstr "Endereço de multicast" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "Candidatos a servidor NTP" - -msgid "Name" -msgstr "Nome" - -msgid "Name of the new interface" -msgstr "Nome da nova interface" - -msgid "Name of the new network" -msgstr "Nome da nova rede" - -msgid "Navigation" -msgstr "Navegação" - -msgid "Netmask" -msgstr "Mascara de rede" - -msgid "Network" -msgstr "Rede" - -msgid "Network Utilities" -msgstr "Ferramentas de Rede" - -msgid "Network boot image" -msgstr "Imagem de arranque via rede" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "Rede sem interfaces." - -msgid "Next »" -msgstr "Seguinte »" - -msgid "No DHCP Server configured for this interface" -msgstr "Sem Servidor DHCP configurado nesta interface" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Tabela sem chains" - -msgid "No files found" -msgstr "Não foram encontrados ficheiros" - -msgid "No information available" -msgstr "Sem informação disponível" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "Sem cache negativa" - -msgid "No network configured on this device" -msgstr "Nenhuma rede configurada no dispositivo" - -msgid "No network name specified" -msgstr "Nome de rede não especificado" - -msgid "No package lists available" -msgstr "Não há listas de pacotes disponiveis" - -msgid "No password set!" -msgstr "Sem password definida!" - -msgid "No rules in this chain" -msgstr "Sem regras nesta cadeia" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Sem zona atribuída" - -msgid "Noise" -msgstr "Ruído" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Ruído:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Nenhum" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Não encontrado" - -msgid "Not associated" -msgstr "Não associado" - -msgid "Not connected" -msgstr "Não ligado" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: Os ficheiros de configuração serão apagados." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Reparo" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Configuração-OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "Atraso do Off-State" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Nesta página pode configurar as interfaces de rede. Pode ter várias " -"interfaces do tipo bridge, assinalando o campo \"interfaces bridge\" e " -"inserir os nomes de várias interfaces de rede separadas por espaços. Pode " -"também usar a notação para VLAN " -"INTERFACE.VLANNR (ex.: " -"eth0.1)." - -msgid "On-State Delay" -msgstr "Atraso do On-State" - -msgid "One of hostname or mac address must be specified!" -msgstr "Um nome de host ou endereço MAC deve ser especificado!" - -msgid "One or more fields contain invalid values!" -msgstr "Um ou mais campos contêm valores inválidos!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Um ou mais campos obrigatórios não têm valores!" - -msgid "Open list..." -msgstr "Abrir lista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Opção alterada" - -msgid "Option removed" -msgstr "Opção removida" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Opções" - -msgid "Other:" -msgstr "Outro:" - -msgid "Out" -msgstr "Saída" - -msgid "Outbound:" -msgstr "Saída:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Visão Geral" - -msgid "Owner" -msgstr "Dono" - -msgid "PAP/CHAP password" -msgstr "Password PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Utilizador PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Encapsulamento PPPoA " - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtp" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "O pacote libiwinfo é necessário!" - -msgid "Package lists are older than 24 hours" -msgstr "As listas de pacotes têm mais de 24 horas" - -msgid "Package name" -msgstr "Nome do pacote" - -msgid "Packets" -msgstr "Pacotes" - -msgid "Part of zone %q" -msgstr "Parte da zona %q" - -msgid "Password" -msgstr "Senha" - -msgid "Password authentication" -msgstr "Autenticação por senha" - -msgid "Password of Private Key" -msgstr "Senha da Chave Privada" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Password alterada com sucesso!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Directorio do Certificado CA" - -msgid "Path to Client-Certificate" -msgstr "Caminho para o Certificado de Cliente" - -msgid "Path to Private Key" -msgstr "Caminho da Chave Privada" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Pico:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Executar reinicialização" - -msgid "Perform reset" -msgstr "Executar reset" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Definições Físicas" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pkts." - -msgid "Please enter your username and password." -msgstr "Insira o seu username e password." - -msgid "Policy" -msgstr "Política" - -msgid "Port" -msgstr "Porta" - -msgid "Port status:" -msgstr "Estado da porta:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Impede a comunicação cliente-a-cliente" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Proceder" - -msgid "Processes" -msgstr "Processos" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Protocolo" - -msgid "Protocol" -msgstr "Protocolo" - -msgid "Protocol family" -msgstr "Família do protocolo" - -msgid "Protocol of the new interface" -msgstr "Protocolo da nova interface" - -msgid "Protocol support is not installed" -msgstr "O protocolo suportado não está instalado" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Qualidade" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS Threshold" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "Taxa RX" - -msgid "Radius-Accounting-Port" -msgstr "Porta-Conta-Radius" - -msgid "Radius-Accounting-Secret" -msgstr "Segredo-Conta-Radius" - -msgid "Radius-Accounting-Server" -msgstr "Servidor-Conta-Radius" - -msgid "Radius-Authentication-Port" -msgstr "Porta-Autenticação-Radius" - -msgid "Radius-Authentication-Secret" -msgstr "Segredo-Autenticação-Radius" - -msgid "Radius-Authentication-Server" -msgstr "Servidor-Autenticação-Radius" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Ler /etc/ethers para configurar o Servidor-DHCP" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Deseja mesmo apagar esta rede? A eliminação não poder desfeita!\n" -"Pode perde a ligação ao dispositivo, caso esta ligado através desta rede." - -msgid "Really reset all changes?" -msgstr "Deseja mesmo limpar todas as alterações?" - -msgid "Really switch protocol?" -msgstr "Deseja mesmo trocar o protocolo?" - -msgid "Realtime Connections" -msgstr "Ligações em Tempo Real" - -msgid "Realtime Graphs" -msgstr "Gráficos em Tempo Real" - -msgid "Realtime Load" -msgstr "Carga em Tempo Real" - -msgid "Realtime Traffic" -msgstr "Tráfego em Tempo Real" - -msgid "Realtime Wireless" -msgstr "Wireless em Tempo Real" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "Religar protecção" - -msgid "Reboot" -msgstr "Reiniciar" - -msgid "Rebooting..." -msgstr "A reiniciar..." - -msgid "Reboots the operating system of your device" -msgstr "Reinicia o seu dispositivo" - -msgid "Receive" -msgstr "Receber" - -msgid "Receiver Antenna" -msgstr "Antena de Recepção" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Reconetar esta interface" - -msgid "References" -msgstr "Referências" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "Endereço IPv4 remoto" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Remover" - -msgid "Repeat scan" -msgstr "Repetir scan" - -msgid "Replace entry" -msgstr "Substituir entrada" - -msgid "Replace wireless configuration" -msgstr "Substituir configuração wireless" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Necessário para certos ISPs, p.ex. Charter with DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Limpar contadores" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "Ficheiros Resolv e Hosts" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "Reiniciar" - -msgid "Restart Firewall" -msgstr "Reiniciar Firewall" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Restauração" - -msgid "Restore backup" -msgstr "Restaurar backup" - -msgid "Reveal/hide password" -msgstr "Revelar/esconder password" - -msgid "Revert" -msgstr "Reverter" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Password do Router" - -msgid "Routes" -msgstr "Rotas" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"As rotas especificam através de que interfaces ou gateways podem ser " -"alcançados determinadas redes ou hosts." - -msgid "Run a filesystem check before mounting the device" -msgstr "" -"Correr uma verificação do sistema de ficheiros antes de montar um dispositivo" - -msgid "Run filesystem check" -msgstr "Correr uma verificação do sistema de ficheiros" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Acesso SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Chaves-SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Salvar" - -msgid "Save & Apply" -msgstr "Salvar & Aplicar" - -msgid "Scan" -msgstr "Procurar" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Tarefas Agendadas" - -msgid "Section added" -msgstr "Secção adicionada" - -msgid "Section removed" -msgstr "Secção removida" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Isolar Clientes" - -msgid "Server Settings" -msgstr "" - -msgid "Service Name" -msgstr "Nome do Serviço" - -msgid "Service Type" -msgstr "Tipo de Serviço" - -msgid "Services" -msgstr "Serviços" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Configurar Sincronização Horária" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "Configurar Servidor DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "Mostrar lista ficheiros para backup" - -msgid "Shutdown this interface" -msgstr "Desligar esta interface" - -msgid "Signal" -msgstr "Sinal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Sinal:" - -msgid "Size" -msgstr "Tamanho" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Saltar" - -msgid "Skip to content" -msgstr "Ir para o conteúdo" - -msgid "Skip to navigation" -msgstr "Ir para a navegação" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Alguns campos são inválidos, não é possível gravar valores!" - -msgid "Sorry, the object you requested was not found." -msgstr "Lamento, o objecto que pediu não foi encontrado." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Lamento, o servidor encontrou um erro inesperado." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "Origem" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Especifica as portas de escuta desta instância Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Iniciar" - -msgid "Start priority" -msgstr "Prioridade de inicialização" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "Rotas Estáticas IPv4" - -msgid "Static IPv6 Routes" -msgstr "Rotas Estáticas IPv6" - -msgid "Static Leases" -msgstr "Atribuições Estáticas" - -msgid "Static Routes" -msgstr "Rotas Estáticas" - -msgid "Static address" -msgstr "Endereço estático" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Parar" - -msgid "Strict order" -msgstr "Ordem exacta" - -msgid "Submit" -msgstr "Enviar" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "Switch" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "Sincronizar com o browser" - -msgid "Synchronizing..." -msgstr "A sincronizar..." - -msgid "System" -msgstr "Sistema" - -msgid "System Log" -msgstr "Registo do Sistema" - -msgid "System Properties" -msgstr "Propriedades do Sistema" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Definições TFTP" - -msgid "TFTP server root" -msgstr "Raíz do servidor TFTP" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Tabela" - -msgid "Target" -msgstr "Destino" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Terminar" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"O pacote libiwinfo-lua não está instalado. Precisa de instalar este " -"pacote para que a configuração wireless funcione!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"O prefixo IPv6 atribuído ao provider, habitualmente termina com ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Os caracteres permitidos são: A-Z, a-z, 0-9 e _" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"O arquivo do dispositivo de memória ou da partição (ex. /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"O sistema que foi usado para formatar a memória (ex. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"A imagem foi carregada. Abaixo está o checksum e o tamanho dos ficheiros, " -"compare com o ficheiro original para assegurar a integração de dados.
    " -"Click em \"Proceder\" para iniciar o procedimento." - -msgid "The following changes have been reverted" -msgstr "Foram recuperadas as seguintes alterações " - -msgid "The following rules are currently active on this system." -msgstr "As seguintes regras estão actualmente acivas neste sistema." - -msgid "The given network name is not unique" -msgstr "O nome dado não é único" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"O hardware não é comporta multi-SSIDs a configuração será substituída se " -"prosseguir." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"O tamanho do perfico IPv4 em bits, o restante é usado em endereços IPv6." - -msgid "The length of the IPv6 prefix in bits" -msgstr "O comprimento do prefixo IPv6 em bits" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"As portas de rede neste dispositivo podem ser combinadas com várias VLANs onde os computadores podem " -"comunicar directamente entre eles. VLANs são muito utilizadas para separar dois segmentos de rede " -"diferentes. Muitas vezes existe por defeito uma porta de Uplink para uma " -"ligação para a rede acima como a internet ou outras portas de uma rede local." - -msgid "The selected protocol needs a device assigned" -msgstr "O protocolo escolhido precisa de um dispositivo atribuído." - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"O sistema está agora a limpar a partição de configuração e irá reiniciar-se " -"quando terminar." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"O sistema está a carregar o firmware para a flash.
    NÃO DESLIGUE O " -"EQUIPAMENTO!
    Espere alguns minutos até tentar uma ligação. Dependendo " -"da sua configuração, ode ser necessário renovar o endereço do seu computador " -"para poder ligar novamente ao router." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"A imagem carregada não contém um formato suportado. Confirme que escolhe uma " -"imagem genérica para a sua plataforma." - -msgid "There are no active leases." -msgstr "Não há concessões ativas." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "Não há alterações pendentes para reverter!" - -msgid "There are no pending changes!" -msgstr "Não há alterações pendentes!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Ainda não há um dispositivo atribuído, por favor ligue um dispositivo de " -"rede nas \"Definições Físicas\"" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Não há uma password definida neste router. Por favor defina uma senha de " -"root para proteger a interface web e ativar o SSH." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Este é o conteúdo de /etc/rc.local. Insira os seus próprios comandos aqui " -"(antes de 'exit 0') para executá-los no final do processo de arranque." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Este é o único DHCP na rede local" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Este é o sistema de agendamento de tarefas." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"Esta lista fornece uma visão geral sobre os processos em execução no sistema." - -msgid "This page gives an overview over currently active network connections." -msgstr "Esta página fornece informações sobre as ligações de rede ativas." - -msgid "This section contains no values yet" -msgstr "Esta secção ainda não contêm valores" - -msgid "Time Synchronization" -msgstr "Sincronização Horária" - -msgid "Time Synchronization is not configured yet." -msgstr "A sincronização horária ainda não está configurada." - -msgid "Timezone" -msgstr "Fuso Horário" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Para restaurar os ficheiros de configuração, pode carregar aqui um ficheiro " -"de backup gerado anteriormente. Para voltar as definições originais do " -"firmware, clique \" Fazer reset\" (só possível com imagens squashfs)." - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Total Disponível" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Tráfego" - -msgid "Transfer" -msgstr "Transferências" - -msgid "Transmission Rate" -msgstr "Taxa de Transmissão" - -msgid "Transmit" -msgstr "Transmitir" - -msgid "Transmit Power" -msgstr "Potência de Transmissão" - -msgid "Transmitter Antenna" -msgstr "Antena de Transmissão" - -msgid "Trigger" -msgstr "Trigger" - -msgid "Trigger Mode" -msgstr "Modo de Trigger" - -msgid "Tunnel ID" -msgstr "ID do Túnel" - -msgid "Tunnel Interface" -msgstr "Interface de Túnel" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Potência de Tx" - -msgid "Type" -msgstr "Tipo" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Só UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "Dispositivo USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Desconhecido" - -msgid "Unknown Error, password not changed!" -msgstr "Erro Desconhecido, a password não foi alterada!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "Não gerido" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Alterações não Guardadas" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Tipo de protocolo não suportado." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Actualizar listas" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "Carregar arquivo..." - -msgid "Uploaded File" -msgstr "Ficheiro carregado" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Usar /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Usar a gateway do DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Usar os servidores DNS fornecidos pelo parceiro" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Usar servidores DNS personalizados" - -msgid "Use default gateway" -msgstr "Usar gateway pre-definida" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "Usar tabela de roteamento" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Usado" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Utilizador" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANs em %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANs em %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "Servidor VPN" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "Verificar" - -msgid "Version" -msgstr "Versão" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Sistema Aberto WEP" - -msgid "WEP Shared Key" -msgstr "Chave partilhada WEP" - -msgid "WEP passphrase" -msgstr "Palavra-Passe WEP" - -msgid "WMM Mode" -msgstr "Modo WMM" - -msgid "WPA passphrase" -msgstr "Palavra-Passe WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"A encriptação-WPA necessita do wpa_supplicant (para modo cliente) ou do " -"hostapd (para modo AP ou ah-hoc) esteja instalado." - -msgid "Waiting for changes to be applied..." -msgstr "A aguardar que as mudanças sejam aplicadas..." - -msgid "Waiting for command to complete..." -msgstr "A aguardar que o comando termine..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Aviso" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Rede Wireless" - -msgid "Wireless Adapter" -msgstr "Adaptador Wireless" - -msgid "Wireless Network" -msgstr "Rede Wireless" - -msgid "Wireless Overview" -msgstr "Vista Global Wireless" - -msgid "Wireless Security" -msgstr "Segurança Wireless" - -msgid "Wireless is disabled" -msgstr "Wireless desativada" - -msgid "Wireless is not associated" -msgstr "Wireless não associada" - -msgid "Wireless is restarting..." -msgstr "A Wireless está a reiniciar..." - -msgid "Wireless network is disabled" -msgstr "Wireless está desativado." - -msgid "Wireless network is enabled" -msgstr "A rede wireless está ativada" - -msgid "Write received DNS requests to syslog" -msgstr "Escrever os pedidos de DNS para o syslog" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Você pode ativar ou desativar os scripts de inicialização instalados aqui. " -"As mudanças serão aplicadas após a reinicialização do equipamento.
    Aviso: Se você desativar algum script de inicialização essencial " -"como por exemplo \"rede/network\", o dispositivo poderá tornar-se " -"inacessível!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Tem de activar o JavaScript no seu browser ou a LuCI não funcionará " -"corretamente." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "qualquer" - -msgid "auto" -msgstr "automático" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "criar:" - -msgid "creates a bridge over specified interface(s)" -msgstr "cria uma bridge sobre determinada(s) interface(s)" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "desativar" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "expirou" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Ficheiro onde as atribuições DHCP são armazenadas" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "half-duplex" - -msgid "hidden" -msgstr "escondido" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "se o destino for uma rede" - -msgid "input" -msgstr "entrada" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "" -"Ficheiro local de DNS" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "não" - -msgid "no link" -msgstr "sem link" - -msgid "none" -msgstr "nenhum" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "desligado" - -msgid "on" -msgstr "ligado" - -msgid "open" -msgstr "abrir" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "desconhecido" - -msgid "unlimited" -msgstr "ilimitado" - -msgid "unspecified" -msgstr "não especificado" - -msgid "unspecified -or- create:" -msgstr "" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "sim" - -msgid "« Back" -msgstr "« Voltar" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Ativar esta rede" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Controlador Wireless Hermes 802.11b" - -#~ msgid "Interface is shutting down..." -#~ msgstr "A interface está a desligar..." - -#~ msgid "Interface reconnected" -#~ msgstr "Interface religada" - -#~ msgid "Interface shut down" -#~ msgstr "Desligar interface" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Controlador Wireless Prism2/2.5/3 802.11b" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "Controlador Wireless RaLink 802.11%s" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "Deseja mesmo desligar a interface \"%s\" ?\n" -#~ "Pode perder o acesso ao dispositivo se estiver ligado através desta " -#~ "interface." - -#~ msgid "Reconnecting interface" -#~ msgstr "A reconectar interface" - -#~ msgid "Shutdown this network" -#~ msgstr "Desligar esta rede" - -#~ msgid "Wireless restarted" -#~ msgstr "Rede wireless reiniciada" - -#~ msgid "Wireless shut down" -#~ msgstr "Desligar wireless" - -#~ msgid "DHCP Leases" -#~ msgstr "Concessões DHCP" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "Concessões DHCPv6" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "Deseja mesmo apagar esta interface? A eliminação não poder desfeita!\n" -#~ "Pode perde a ligação ao dispositivo, caso esta ligado através desta " -#~ "interface." - -#, fuzzy -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "Deseja mesmo desligar esta rede?\n" -#~ "Pode perder o acesso ao dispositivo se estiver ligado através desta rede." - -#~ msgid "Sort" -#~ msgstr "Ordenar" - -#~ msgid "help" -#~ msgstr "ajuda" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "Estado WAN IPv4" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "Estado WAN IPv6" - -#~ msgid "Apply" -#~ msgstr "Aplicar" - -#~ msgid "Applying changes" -#~ msgstr "A aplicar as alterações" - -#~ msgid "Configuration applied." -#~ msgstr "Configuração aplicada." - -#~ msgid "Save & Apply" -#~ msgstr "Salvar & Aplicar" - -#~ msgid "The following changes have been committed" -#~ msgstr "As seguintes alterações foram escritas" - -#~ msgid "There are no pending changes to apply!" -#~ msgstr "Não há alterações pendentes para aplicar!" - -#~ msgid "Action" -#~ msgstr "Acção" - -#~ msgid "Buttons" -#~ msgstr "Botões" - -#~ msgid "Handler" -#~ msgstr "Handler" - -#~ msgid "Maximum hold time" -#~ msgstr "Tempo máximo de espera" - -#~ msgid "Minimum hold time" -#~ msgstr "Tempo de retenção mínimo" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "Caminho do executável que lida com o botão de eventos" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "" -#~ "Esta página permite a configuração de botões para acções personalizadas." - -#~ msgid "Leasetime" -#~ msgstr "Tempo de concessão" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "estático" - -#~ msgid "AR Support" -#~ msgstr "Suporte AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Controlador Wireless Atheros 802.11%s" - -#~ msgid "Background Scan" -#~ msgstr "Procurar em Segundo Plano" - -#~ msgid "Compression" -#~ msgstr "Compressão" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Desativar temporizador de HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Não enviar respostas a sondas" - -#~ msgid "Fast Frames" -#~ msgstr "Frames Rápidas" - -#~ msgid "Maximum Rate" -#~ msgstr "Taxa Máxima" - -#~ msgid "Minimum Rate" -#~ msgstr "Taxa Mínima" - -#~ msgid "Multicast Rate" -#~ msgstr "Taxa de Multicast" - -#~ msgid "Outdoor Channels" -#~ msgstr "Canais de Outdoor" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domínio Regulatório" - -#~ msgid "Separate WDS" -#~ msgstr "Separar WDS" - -#~ msgid "Static WDS" -#~ msgstr "WDS Estático" - -#~ msgid "Turbo Mode" -#~ msgstr "Modo Turbo" - -#~ msgid "XR Support" -#~ msgstr "Suporte XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "Uma rede adicional será criada se deixar isto desmarcado." - -#~ msgid "Join Network: Settings" -#~ msgstr "Associar Rede: Definições" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "Porta %d" - -#~ msgid "VLAN Interface" -#~ msgstr "Interface VLAN" diff --git a/luci-base/po/ro/base.po b/luci-base/po/ro/base.po deleted file mode 100644 index a28235bbd..000000000 --- a/luci-base/po/ro/base.po +++ /dev/null @@ -1,3983 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-04-01 23:12+0200\n" -"Last-Translator: xcentric \n" -"Language-Team: none\n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d fereastra minute, %d interval secunde)" - -msgid "(%s available)" -msgstr "(%s disponibil)" - -msgid "(empty)" -msgstr "(gol)" - -msgid "(no interfaces attached)" -msgstr "(nici o interfata atasata)" - -msgid "-- Additional Field --" -msgstr "-- Camp suplimentar --" - -msgid "-- Please choose --" -msgstr "-- Te rog sa alegi --" - -msgid "-- custom --" -msgstr "-- particularizat --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Incarcarea in ultimul minut" - -msgid "15 Minute Load:" -msgstr "Incarcarea in ultimele 15 minute" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Incarcarea in ultimele 5 minute" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNSport de apelare" - -msgid "DNS server port" -msgstr "DNS port server" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS serverul va interoga in " -"vederea procesarii fisierului" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "Adresa IPv4" - -msgid "IPv4-Gateway" -msgstr "IPv4-Poarta Acces " - -msgid "IPv4-Netmask" -msgstr "Masca de retea IPv4" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Addresa retea (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Poarta Acces" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Configurare" - -msgid "LED Name" -msgstr "LED Nume" - -msgid "MAC-Address" -msgstr "MAC-Addresa" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Max. EDNS0 marime pachet" - -msgid "Max. concurrent queries" -msgstr "Max. interogari simultane" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP prag reincercare" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "Punti ATM" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM Indentificator Canal Virtual (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM Indentificator Cale Virtual(VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Puntile ATM expune reteaua intergrata în conexiunile AAL5 ca interfețe " -"virtuale de rețea Linux care pot fi utilizate în asociere cu DHCP sau PPP " -"pentru a forma în rețeaua furnizorului." - -msgid "ATM device number" -msgstr "ATM numar echipament" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Concentrator de Access " - -msgid "Access Point" -msgstr "Punct de Acces" - -msgid "Actions" -msgstr "Actiune" - -msgid "Active IPv4-Routes" -msgstr "Rute active IPv4" - -msgid "Active IPv6-Routes" -msgstr "Rute active IPv6" - -msgid "Active Connections" -msgstr "Conexiuni active" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Adauga" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Adauga un sufix local numelor servite din fisierele de tip hosts" - -msgid "Add new interface..." -msgstr "Adauga interfata noua.." - -msgid "Additional Hosts files" -msgstr "Fisiere de tip hosts aditionale" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresa" - -msgid "Address to access local relay bridge" -msgstr "Adresa de acces punte locala repetor" - -msgid "Administration" -msgstr "Administrare" - -msgid "Advanced Settings" -msgstr "Setari avansate" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Alerta" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" -"Permite autentificarea prin parola a SSH " - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Permite toate cu exceptia celor listate" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Permite doar cele listate" - -msgid "Allow localhost" -msgstr "Permite localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "Permite statiilor externe sa se conecteze la porturile SSH locale" - -msgid "Allow root logins with password" -msgstr "Permite autentificarea contului root cu parola" - -msgid "Allow the root user to login with password" -msgstr "Permite contului root sa se autentifice cu parola" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Permite raspuns upstream in plaja 127.0.0.0/8, e.g. pentru serviciile RBL" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "Antena 1" - -msgid "Antenna 2" -msgstr "Antena 2" - -msgid "Antenna Configuration" -msgstr "Configurarea Antenei" - -msgid "Any zone" -msgstr "Orice Zona" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Inregistreaza interfetele" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Statiile asociate" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Autentificare" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Autoritare" - -msgid "Authorization Required" -msgstr "Necesita Autorizare" - -msgid "Auto Refresh" -msgstr "Reimprospatare automata" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Disponibil" - -msgid "Available packages" -msgstr "Pachete disponibile" - -msgid "Average:" -msgstr "Medie:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Inapoi" - -msgid "Back to Overview" -msgstr "Inapoi la sumar" - -msgid "Back to configuration" -msgstr "Inapoi la Configurare" - -msgid "Back to overview" -msgstr "Inapoi la vedere generala" - -msgid "Back to scan results" -msgstr "Inapoi la rezultatele scanarii" - -msgid "Backup" -msgstr "Salveaza" - -msgid "Backup / Flash Firmware" -msgstr "Salveaza / Scrie Firmware" - -msgid "Backup file list" -msgstr "Salveaza lista fisiere" - -msgid "Bad address specified!" -msgstr "Adresa specificata gresit !" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bitrate" - -msgid "Bogus NX Domain Override" -msgstr "Bogus NX Domain Override" - -msgid "Bridge" -msgstr "Punte" - -msgid "Bridge interfaces" -msgstr "Leaga interfetele" - -msgid "Bridge unit number" -msgstr "Numarul unitatii in punte" - -msgid "Bring up on boot" -msgstr "Activeaza la pornire" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s Controller Fara Fir" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 Controller Fara Fir" - -msgid "Buffered" -msgstr "Incarcat" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "Utilizarea procesorului (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Anuleaza" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "Lant" - -msgid "Changes" -msgstr "Modificari" - -msgid "Changes applied." -msgstr "Modificari aplicate." - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Schimba parola administratorului pentru accesarea dispozitivului" - -msgid "Channel" -msgstr "Canal" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Verificare" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Suma de verificare" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Alege zona paravanului care doresti sa o aloci acestei interfete. Selecteaza " -"nespecificat pentru a sterge interfata sau golire creaza " -"camp ce defineste o zona noua asociata interfetei." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "Colectez datele.." - -msgid "Command" -msgstr "Comanda" - -msgid "Common Configuration" -msgstr "Configurarea obisnuita" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Configurare" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Fisierele de configurare vor fi pastrate." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Confirmare" - -msgid "Connect" -msgstr "Conectare" - -msgid "Connected" -msgstr "Conectat" - -msgid "Connection Limit" -msgstr "Limita de conexiune" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Conexiuni" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "Tara" - -msgid "Country Code" -msgstr "Codul de tara" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "" - -msgid "Create Interface" -msgstr "Creaza interfata" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "Critic" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" - -msgid "DHCP Server" -msgstr "Server DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP si DNS" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "Optiuni DHCP" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Stare implicita" - -msgid "Define a name for this network." -msgstr "Definiti un nume pentru aceasta retea." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "Sterge" - -msgid "Delete this network" -msgstr "Sterge aceasta retea" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Descriere" - -msgid "Design" -msgstr "" - -msgid "Destination" -msgstr "Destinatie" - -msgid "Device" -msgstr "Dispozitiv" - -msgid "Device Configuration" -msgstr "Configurarea dispozitivului" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "Diagnosticuri" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "Director" - -msgid "Disable" -msgstr "Dezactiveaza" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Dezactiveaza DHCP " -"pentru aceasta interfata." - -msgid "Disable DNS setup" -msgstr "Dezactiveaza configuratia DNS" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Dezactivat" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "Optimizarea distantei" - -msgid "Distance to farthest network member in meters." -msgstr "Distanta catre cel mai departat membru din retea in metri." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Diversitate" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Domeniul necesar" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Descarca si instaleaza pachetul" - -msgid "Download backup" -msgstr "Descarca backup" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Instanta dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "Editeaza" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Editeaza aceasta interfata" - -msgid "Edit this network" -msgstr "Editeaza aceasta retea" - -msgid "Emergency" -msgstr "Urgenta" - -msgid "Enable" -msgstr "Activeaza" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Activeaza STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Activeaza serverul TFTP" - -msgid "Enable VLAN functionality" -msgstr "Activeaza VLAN-urile" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "Activeaza/Dezactiveaza" - -msgid "Enabled" -msgstr "Activat" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "Modul de incapsulare" - -msgid "Encryption" -msgstr "Criptare" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Stergere..." - -msgid "Error" -msgstr "Eroare" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Adaptor de retea ethernet" - -msgid "Ethernet Switch" -msgstr "Switch-ul ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "Expira" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "Server de log-uri extern" - -msgid "External system log server port" -msgstr "Portul serverului de log-uri extern" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Fisier" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "Sistem de fisiere" - -msgid "Filter" -msgstr "Filtreaza" - -msgid "Filter private" -msgstr "Filtreaza privatele" - -msgid "Filter useless" -msgstr "Filtreaza nefolositele" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Gaseste si alatura in retea" - -msgid "Find package" -msgstr "Gaseste pachet" - -msgid "Finish" -msgstr "Termina" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Setarile firewall-ului" - -msgid "Firewall Status" -msgstr "Status la firewall" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Versiunea de firmware" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Portul sursa pentru intrebarile DNS catre exterior" - -msgid "Flash Firmware" -msgstr "Rescrie firmware" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "Forteaza" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Forteaza CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" -"Forteaza facilitatea DHCP in aceasta retea chiar daca alt server DHCP exista." - -msgid "Force TKIP" -msgstr "Forteaza TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Forteaza TKIP si CCMP (AES)" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "Liber" - -msgid "Free space" -msgstr "Spatiu liber" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "Doar GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Porturile gateway" - -msgid "General Settings" -msgstr "Setari principale" - -msgid "General Setup" -msgstr "Configurare generala" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Confirmarea parolei nu se potriveste cu prima, parola neschimbata !" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Aici poti configura aspectele de baza ale dispozitivului cum ar fi numele " -"sau fusul orar." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hide ESSID" -msgstr "Ascunde ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Intrari de tip host" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Numele de host" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Nume de host" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Adresa IP" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Firewall IPv4" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "Adresa IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 si IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "Doar IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "Adresa IPv4" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Firewall IPv6" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "Adresa IPv6" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "Doar IPv6" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "Identitate" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "" - -msgid "Ignore resolve file" -msgstr "" - -msgid "Image" -msgstr "Imagine" - -msgid "In" -msgstr "" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "Intrare:" - -msgid "Info" -msgstr "Informatii" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Script de initializare" - -msgid "Initscripts" -msgstr "Scripturi de initializare" - -msgid "Install" -msgstr "Instalati" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "Instalati pachetul %q" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "Pachete instalate" - -msgid "Interface" -msgstr "Interfata" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Configurarea interfetei" - -msgid "Interface Overview" -msgstr "Prezentare interfata" - -msgid "Interface is reconnecting..." -msgstr "Interfata se reconecteaza.." - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "Interfata nu e prezenta sau nu este conectata inca." - -msgid "Interfaces" -msgstr "Interfete" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "Eroare interna de server" - -msgid "Invalid" -msgstr "Invalid" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Utilizator si/sau parola invalide! Incearcati din nou." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Se pare ca ai incercat sa rescrii o imagine care nu are loc in memoria " -"flash, verifica fisierul din nou!" - -msgid "JavaScript required!" -msgstr "Ai nevoie de JavaScript !" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "Pastrati setarile" - -msgid "Kernel Log" -msgstr "Log-ul kernelului" - -msgid "Kernel Version" -msgstr "Versiunea de kernel" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "Opreste" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "Eticheta" - -msgid "Language" -msgstr "Limba" - -msgid "Language and Style" -msgstr "Limba si stilul interfetei" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "Legenda:" - -msgid "Limit" -msgstr "Limita" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Incarcarea" - -msgid "Load Average" -msgstr "Incarcarea medie" - -msgid "Loading" -msgstr "Incarcare" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Adresa IPv4 locala" - -msgid "Local IPv6 address" -msgstr "Adresa IPv6 locala" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "Ora locala" - -msgid "Local domain" -msgstr "Domeniu local" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "Server local" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Autentificare" - -msgid "Logout" -msgstr "Iesire" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "" - -msgid "MAC-Filter" -msgstr "" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Numarul maxim de intrebari DNS simultane" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Memorie" - -msgid "Memory usage (%)" -msgstr "Utilizarea memoriei (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metrica" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Mod" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "Name" -msgstr "Nume" - -msgid "Name of the new interface" -msgstr "Numele interfetei noi" - -msgid "Name of the new network" -msgstr "Numele interfetei noi" - -msgid "Navigation" -msgstr "Navigare" - -msgid "Netmask" -msgstr "Netmask" - -msgid "Network" -msgstr "Retea" - -msgid "Network Utilities" -msgstr "Utilitare de retea" - -msgid "Network boot image" -msgstr "" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "Mai departe »" - -msgid "No DHCP Server configured for this interface" -msgstr "Nici un server DHCP configurat pentru aceasta interfata" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "Nici un fisier gasit" - -msgid "No information available" -msgstr "Nici o informatie disponibila" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "Nici o retea configurata pe acest dispozitiv" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "Nici o parola setata !" - -msgid "No rules in this chain" -msgstr "" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "Zgomot" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Zgomot:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Nu a fost gasit" - -msgid "Not associated" -msgstr "Nu este asociat." - -msgid "Not connected" -msgstr "Nu este conectat" - -msgid "Note: Configuration files will be erased." -msgstr "Nota: fisierele de configurare vor fi sterse." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "Notificare" - -msgid "Nslookup" -msgstr "" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Configuratia-OPKG" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "Unul sau mai multe campuri contin valori invalide !" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "Unul sau mai multe campuri nu contin valori !" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Optiunea schimbata" - -msgid "Option removed" -msgstr "Optiunea eliminata" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Optiuni" - -msgid "Other:" -msgstr "Altele:" - -msgid "Out" -msgstr "Iesire" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Prezentare generala" - -msgid "Owner" -msgstr "Proprietar" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "Incapsulare PPPoA" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Pachetul libiwinfo este necesar !" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "Numele pachetului" - -msgid "Packets" -msgstr "Pachete" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "Parola" - -msgid "Password authentication" -msgstr "Autentificarea cu parola" - -msgid "Password of Private Key" -msgstr "Parola cheii private" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "Parola schimbata cu succes !" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Calea catre certificatul CA" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Calea catre cheia privata" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "Maxim:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Restarteaza" - -msgid "Perform reset" -msgstr "Reseteaza" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "Rata phy:" - -msgid "Physical Settings" -msgstr "Setarile fizice" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "Packete." - -msgid "Please enter your username and password." -msgstr "Introdu utilizatorul si parola." - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Stare port:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Continua" - -msgid "Processes" -msgstr "Procese" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "" - -msgid "Protocol" -msgstr "Protocol" - -msgid "Protocol family" -msgstr "Familia de protocol" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "Calitate" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Citeste fisierul /etc/ethers pentru configurarea serverului " -"DHCP-" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "Conexiuni in timp real" - -msgid "Realtime Graphs" -msgstr "Grafice in timp real" - -msgid "Realtime Load" -msgstr "Incarcarea in timp real" - -msgid "Realtime Traffic" -msgstr "Traficul in timp real" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Rebooteaza" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "Rebooteaza sistemul de operare al dispozitivului tau" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "Antena receptorului" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "Reconecteaza aceasta interfata" - -msgid "References" -msgstr "Referinte" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Elimina" - -msgid "Repeat scan" -msgstr "Repeta scanarea" - -msgid "Replace entry" -msgstr "Inlocuieste intrarea" - -msgid "Replace wireless configuration" -msgstr "Inlocuieste configuratia wireless" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Reseteaza counterii" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "Fisierele de rezolvare si hosturi DNS" - -msgid "Resolve file" -msgstr "Fisierul de rezolvare" - -msgid "Restart" -msgstr "Restart" - -msgid "Restart Firewall" -msgstr "Restarteaza firewallul" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Restaureaza" - -msgid "Restore backup" -msgstr "Reface backup-ul" - -msgid "Reveal/hide password" -msgstr "Arata / ascunde parola" - -msgid "Revert" -msgstr "" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Parola routerului" - -msgid "Routes" -msgstr "Rute" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "Acces SSH" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "Cheile SSH" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Salveaza" - -msgid "Save & Apply" -msgstr "Salveaza si aplica" - -msgid "Scan" -msgstr "Scan" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Operatiuni programate" - -msgid "Section added" -msgstr "Sectiune adaugata" - -msgid "Section removed" -msgstr "Sectiune eliminata" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "Setarile serverului" - -msgid "Service Name" -msgstr "Nume serviciu" - -msgid "Service Type" -msgstr "Tip de serviciu" - -msgid "Services" -msgstr "Servicii" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "Configurare sincronizare timp" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "Seteaza serverul DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "Opreste aceasta interfata" - -msgid "Signal" -msgstr "Semnal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Semnal:" - -msgid "Size" -msgstr "Marime" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "" - -msgid "Skip to navigation" -msgstr "" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Software" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "Sursa" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Start" - -msgid "Start priority" -msgstr "" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Pornire" - -msgid "Static IPv4 Routes" -msgstr "Rute statice IPv4" - -msgid "Static IPv6 Routes" -msgstr "Rute statice IPv6" - -msgid "Static Leases" -msgstr "" - -msgid "Static Routes" -msgstr "Rute statice" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "Stop" - -msgid "Strict order" -msgstr "" - -msgid "Submit" -msgstr "Trimite" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "Sistem" - -msgid "System Log" -msgstr "Log de sistem" - -msgid "System Properties" -msgstr "Proprietati sistem" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "Setarile TFTP" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Tabel" - -msgid "Target" -msgstr "Tinta" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Termina" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "Nu exista modificari in asteptare de anulat !" - -msgid "There are no pending changes!" -msgstr "Nu exista modificari in asteptare !" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Nu exista o parola pe acest router. Configureaza o parola la contul root " -"pentru a proteja interfata web si porni SSH." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "Fusul orar" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "Total disponibil" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "Trafic" - -msgid "Transfer" -msgstr "Transfer" - -msgid "Transmission Rate" -msgstr "Rata de transmitere" - -msgid "Transmit" -msgstr "" - -msgid "Transmit Power" -msgstr "Puterea de transmitere" - -msgid "Transmitter Antenna" -msgstr "Antena de transmitere" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "Interfata de tunel" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Puterea TX" - -msgid "Type" -msgstr "Tip" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Doar UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "Dispozitiv USB" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "Necunoscut" - -msgid "Unknown Error, password not changed!" -msgstr "Eroare necunoscuta, parola neschimbata !" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "Neadministrate" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Modificari nesalvate" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Tipul de protocol neacceptat." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Fisier incarcat" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Foloseste /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Foloseste codurile de tara ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Folosit" - -msgid "Used Key Slot" -msgstr "Slot de cheie folosit" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Utilizator" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLANuri pe %q" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "Versiune" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Sistem deschis WEP" - -msgid "WEP Shared Key" -msgstr "Sistem de cheie impartasita WEP" - -msgid "WEP passphrase" -msgstr "Parola WEP" - -msgid "WMM Mode" -msgstr "Mod WMM" - -msgid "WPA passphrase" -msgstr "Parola WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"Criptarea WPA necesita wpa_supplicant (pentru modul client) sau hostapd " -"(pentru modul AP sau ad-hoc) instalate." - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Avertizare" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Wireless" - -msgid "Wireless Adapter" -msgstr "Adaptorul wireless" - -msgid "Wireless Network" -msgstr "Retea wireless" - -msgid "Wireless Overview" -msgstr "Sumarul wireless" - -msgid "Wireless Security" -msgstr "Securitate wireless" - -msgid "Wireless is disabled" -msgstr "Wireless-ul este dezactivat" - -msgid "Wireless is not associated" -msgstr "Wireless-ul este ne-asociat" - -msgid "Wireless is restarting..." -msgstr "Wireless-ul se restarteaza.." - -msgid "Wireless network is disabled" -msgstr "Reteaua wireless este dezactivata" - -msgid "Wireless network is enabled" -msgstr "Reteaua wireless este activata" - -msgid "Write received DNS requests to syslog" -msgstr "Scrie cererile DNS primite in syslog" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "oricare" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "dezactiveaza" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "expirat" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "hidden" -msgstr "ascuns" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "daca tinta este o retea" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "nu" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "rutat" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "etichetat" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "necunoscut" - -msgid "unlimited" -msgstr "nelimitat" - -msgid "unspecified" -msgstr "nespecificat" - -msgid "unspecified -or- create:" -msgstr "" - -msgid "untagged" -msgstr "neetichetat" - -msgid "yes" -msgstr "da" - -msgid "« Back" -msgstr "« Inapoi" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Activeaza aceasta retea" - -#~ msgid "Interface is shutting down..." -#~ msgstr "Interfata se opreste.." - -#~ msgid "Interface reconnected" -#~ msgstr "Interfata reconectata" - -#~ msgid "Interface shut down" -#~ msgstr "Interfata oprita" - -#~ msgid "Reconnecting interface" -#~ msgstr "Interfata se reconecteaza chiar acum" - -#~ msgid "Shutdown this network" -#~ msgstr "Opreste aceasta retea" - -#~ msgid "Wireless restarted" -#~ msgstr "Wireless-ul restartat" - -#~ msgid "Wireless shut down" -#~ msgstr "Wireless-ul oprit" - -#~ msgid "DHCP Leases" -#~ msgstr "Conexiuni DHCP" - -#~ msgid "help" -#~ msgstr "ajutor" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "Statusul IPv4 pe WAN" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "Statusul IPv6 pe WAN" - -#~ msgid "Apply" -#~ msgstr "Aplica" - -#~ msgid "Applying changes" -#~ msgstr "Se aplica modificarile" - -#~ msgid "Configuration applied." -#~ msgstr "Configurarea aplicata." - -#~ msgid "Save & Apply" -#~ msgstr "Salveaza & Aplica" - -#~ msgid "There are no pending changes to apply!" -#~ msgstr "Nu exista modificari in asteptare de aplicat !" - -#~ msgid "Action" -#~ msgstr "Actiune" - -#~ msgid "Buttons" -#~ msgstr "Butoane" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "Calea catre executabilul care se ocupa de evenimentul butonului" - -#~ msgid "AR Support" -#~ msgstr "Suport AR" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s Controler Fara Fir" - -#~ msgid "Background Scan" -#~ msgstr "Scanare in fundal" - -#~ msgid "Compression" -#~ msgstr "Comprimare" - -#~ msgid "Maximum Rate" -#~ msgstr "Rata maxima" - -#~ msgid "Minimum Rate" -#~ msgstr "Rata minima" - -#~ msgid "Multicast Rate" -#~ msgstr "Rata de multicast" - -#~ msgid "Regulatory Domain" -#~ msgstr "Domeniu regulatoriu" - -#~ msgid "Turbo Mode" -#~ msgstr "Mod turbo" - -#~ msgid "XR Support" -#~ msgstr "Suport XR" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "" -#~ "Daca lasati aceasta optiune neselectata va fi creata o retea aditionala" - -#~ msgid "CPU" -#~ msgstr "Procesor" - -#~ msgid "Port %d" -#~ msgstr "Port %d" - -#~ msgid "VLAN Interface" -#~ msgstr "Interfata VLAN" diff --git a/luci-base/po/ru/base.po b/luci-base/po/ru/base.po deleted file mode 100644 index 8d542e601..000000000 --- a/luci-base/po/ru/base.po +++ /dev/null @@ -1,4241 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: LuCI: base\n" -"POT-Creation-Date: 2010-05-09 01:01+0300\n" -"PO-Revision-Date: 2018-07-21 08:10+0300\n" -"Language-Team: http://cyber-place.ru\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.7.1\n" -"Last-Translator: Anton Kikin \n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"Language: ru\n" -"Project-Info: Это технический перевод, не дословный. Главное-удобный русский " -"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n" - -msgid "%.1f dB" -msgstr "%.1f дБ" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s не тегирован в множестве VLAN!" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d минутное окно, %d секундный интервал)" - -msgid "(%s available)" -msgstr "(%s доступно)" - -msgid "(empty)" -msgstr "(пусто)" - -msgid "(no interfaces attached)" -msgstr "(нет связанных интерфейсов)" - -msgid "-- Additional Field --" -msgstr "-- Дополнительно --" - -msgid "-- Please choose --" -msgstr "-- Сделайте выбор --" - -msgid "-- custom --" -msgstr "-- пользовательский --" - -msgid "-- match by device --" -msgstr "-- проверка по устройству --" - -msgid "-- match by label --" -msgstr "-- проверка по метке --" - -msgid "-- match by uuid --" -msgstr "-- проверка по uuid --" - -msgid "-- please select --" -msgstr "-- сделайте выбор --" - -msgid "1 Minute Load:" -msgstr "Загрузка за 1 минуту:" - -msgid "15 Minute Load:" -msgstr "Загрузка за 15 минут:" - -msgid "4-character hexadecimal ID" -msgstr "4-х значный шестнадцатеричный ID" - -msgid "464XLAT (CLAT)" -msgstr "464XLAT (CLAT)" - -msgid "5 Minute Load:" -msgstr "Загрузка за 5 минут:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "6-октетный идентификатор в виде шестнадцатеричной строки без двоеточий" - -msgid "802.11r Fast Transition" -msgstr "802.11r Быстрый Роуминг" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "802.11w Association SA Query максимальное время ожидания" - -msgid "802.11w Association SA Query retry timeout" -msgstr "802.11w время ожидания повтора Association SA Query" - -msgid "802.11w Management Frame Protection" -msgstr "802.11w Management Frame Protection" - -msgid "802.11w maximum timeout" -msgstr "802.11w максимальное время ожидания" - -msgid "802.11w retry timeout" -msgstr "802.11w время ожидания повтора" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS порт запроса" - -msgid "DNS server port" -msgstr "DNS порт сервера" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS сервера будут опрошены в " -"порядке, определенном в resolvfile файле." - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-адрес" - -msgid "IPv4-Gateway" -msgstr "IPv4-шлюз" - -msgid "IPv4-Netmask" -msgstr "IPv4-маска сети" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-адрес или сеть (CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-шлюз" - -msgid "IPv6-Suffix (hex)" -msgstr "IPv6-суффикс (hex)" - -msgid "LED Configuration" -msgstr "Настройка LED индикации" - -msgid "LED Name" -msgstr "Имя LED" - -msgid "MAC-Address" -msgstr "MAC-адрес" - -msgid "DUID" -msgstr "DUID" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Макс. кол-во аренд DHCP аренды" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Макс.EDNS0 размер пакета" - -msgid "Max. concurrent queries" -msgstr "" -"Макс. кол-во одновременных запросов" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    Внимание: вы должны вручную перезапустить службу cron, если этот файл " -"был пустым перед внесением ваших изменений." - -msgid "A43C + J43 + A43" -msgstr "A43C + J43 + A43" - -msgid "A43C + J43 + A43 + V43" -msgstr "A43C + J43 + A43 + V43" - -msgid "ADSL" -msgstr "ADSL" - -msgid "ANSI T1.413" -msgstr "ANSI T1.413" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "Порог повтора ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "ATM (режим асинхронной передачи)" - -msgid "ATM Bridges" -msgstr "ATM мосты" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM идентификатор виртуального канала (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM идентификатор виртуального пути (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"Мосты ATM предоставляют собой инкапсулированные ethernet соединения в AAL5, " -"как виртуальные сетевые интерфейсы Linux, которые могут использоваться " -"совместно с DHCP или PPP для набора номера в сети провайдера." - -msgid "ATM device number" -msgstr "ATM номер устройства" - -msgid "ATU-C System Vendor ID" -msgstr "ATU-C идентификатор производителя" - -msgid "Access Concentrator" -msgstr "Концентратор доступа" - -msgid "Access Point" -msgstr "Точка доступа" - -msgid "Actions" -msgstr "Действия" - -msgid "Active IPv4-Routes" -msgstr "Active IPv4-маршруты" - -msgid "Active IPv6-Routes" -msgstr "Active IPv6-маршруты" - -msgid "Active Connections" -msgstr "Активные соединения" - -msgid "Active DHCP Leases" -msgstr "Активные DHCP аренды" - -msgid "Active DHCPv6 Leases" -msgstr "Активные DHCPv6 аренды" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Добавить" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" -"Добавить локальный суффикс домена для имен из файла хостов (/etc/hosts)." - -msgid "Add new interface..." -msgstr "Добавить новый интерфейс" - -msgid "Additional Hosts files" -msgstr "Дополнительный hosts файл" - -msgid "Additional servers file" -msgstr "Дополнительные файлы серверов" - -msgid "Address" -msgstr "Адрес" - -msgid "Address to access local relay bridge" -msgstr "Адрес для доступа к локальному мосту-ретранслятору" - -msgid "Administration" -msgstr "Управление" - -msgid "Advanced Settings" -msgstr "Дополнительные настройки" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "Aggregate Transmit Power (ACTATP)" - -msgid "Alert" -msgstr "Тревога" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" -"Выделять IP адреса последовательно, начинать с меньшего доступного адреса." - -msgid "Allocate IP sequentially" -msgstr "Выделять IP-адреса последовательно" - -msgid "Allow SSH password authentication" -msgstr "" -"Разрешить SSH аутентификацию с помощью " -"пароля." - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Разрешить все, кроме перечисленных" - -msgid "Allow legacy 802.11b rates" -msgstr "Разрешить использование стандарта 802.11b" - -msgid "Allow listed only" -msgstr "Разрешить только перечисленные" - -msgid "Allow localhost" -msgstr "Разрешить локальный хост" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Разрешить удаленным хостам подключаться к локальным перенаправленным портам " -"SSH." - -msgid "Allow root logins with password" -msgstr "Root входит по паролю" - -msgid "Allow the root user to login with password" -msgstr "" -"Разрешить пользователю root входить в систему с помощью пароля." - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Разрешить ответы внешней сети в диапазоне 127.0.0.0/8, например, для RBL-" -"сервисов." - -msgid "Allowed IPs" -msgstr "Разрешенные IP-адреса" - -msgid "Always announce default router" -msgstr "Объявлять всегда, как маршрутизатор по умолчанию" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "Annex" - -msgid "Annex A + L + M (all)" -msgstr "Annex A + L + M (all)" - -msgid "Annex A G.992.1" -msgstr "Annex A G.992.1" - -msgid "Annex A G.992.2" -msgstr "Annex A G.992.2" - -msgid "Annex A G.992.3" -msgstr "Annex A G.992.3" - -msgid "Annex A G.992.5" -msgstr "Annex A G.992.5" - -msgid "Annex B (all)" -msgstr "Annex B (all)" - -msgid "Annex B G.992.1" -msgstr "Annex B G.992.1" - -msgid "Annex B G.992.3" -msgstr "Annex B G.992.3" - -msgid "Annex B G.992.5" -msgstr "Annex B G.992.5" - -msgid "Annex J (all)" -msgstr "Annex J (all)" - -msgid "Annex L G.992.3 POTS 1" -msgstr "Annex L G.992.3 POTS 1" - -msgid "Annex M (all)" -msgstr "Annex M (all)" - -msgid "Annex M G.992.3" -msgstr "Annex M G.992.3" - -msgid "Annex M G.992.5" -msgstr "Annex M G.992.5" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" -"Объявить маршрутизатором по умолчанию, даже если общедоступный префикс " -"недоступен." - -msgid "Announced DNS domains" -msgstr "Объявить DNS домены" - -msgid "Announced DNS servers" -msgstr "Объявить DNS сервера" - -msgid "Anonymous Identity" -msgstr "Анонимная идентификация" - -msgid "Anonymous Mount" -msgstr "Неизвестный раздел" - -msgid "Anonymous Swap" -msgstr "Неизвестный swap" - -msgid "Antenna 1" -msgstr "Антенна 1" - -msgid "Antenna 2" -msgstr "Антенна 2" - -msgid "Antenna Configuration" -msgstr "Настройка антенн" - -msgid "Any zone" -msgstr "Любая зона" - -msgid "Apply request failed with status %h" -msgstr "Ошибка %h запроса на применение" - -msgid "Apply unchecked" -msgstr "Применить без проверки" - -msgid "Architecture" -msgstr "Архитектура" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" -"Задайте часть данной длины, каждому публичному IPv6-префиксу этого " -"интерфейса." - -msgid "Assign interfaces..." -msgstr "Назначить интерфейсы..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" -"Назначьте префикс части, используя этот шестнадцатеричный ID вложенного " -"исправления для этого интерфейса." - -msgid "Associated Stations" -msgstr "Подключенные клиенты" - -msgid "Associations" -msgstr "Ассоциации" - -msgid "Auth Group" -msgstr "Группа аутентификации" - -msgid "Authentication" -msgstr "Аутентификация" - -msgid "Authentication Type" -msgstr "Тип аутентификации" - -msgid "Authoritative" -msgstr "Основной" - -msgid "Authorization Required" -msgstr "Выполните аутентификацию" - -msgid "Auto Refresh" -msgstr "Автообновление" - -msgid "Automatic" -msgstr "Автоматически" - -msgid "Automatic Homenet (HNCP)" -msgstr "Автоматическая Homenet (HNCP)" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" -"Автоматическая проверка файловой системы раздела на ошибки, перед " -"монтированием." - -msgid "Automatically mount filesystems on hotplug" -msgstr "" -"Автоматическое монтирование раздела, при подключении к системе во время ее " -"работы, без выключения питания и остановки системы (hotplug)." - -msgid "Automatically mount swap on hotplug" -msgstr "" -"Автоматическое монтирование swap-а при подключении к системе во время ее " -"работы без выключения питания и остановки системы (hotplug)." - -msgid "Automount Filesystem" -msgstr "Hotplug раздела" - -msgid "Automount Swap" -msgstr "Hotplug swap раздела" - -msgid "Available" -msgstr "Доступно" - -msgid "Available packages" -msgstr "Доступные пакеты" - -msgid "Average:" -msgstr "Средняя:" - -msgid "B43 + B43C" -msgstr "B43 + B43C" - -msgid "B43 + B43C + V43" -msgstr "B43 + B43C + V43" - -msgid "BR / DMR / AFTR" -msgstr "BR / DMR / AFTR" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Назад" - -msgid "Back to Overview" -msgstr "Назад к обзору" - -msgid "Back to configuration" -msgstr "Назад к настройкам" - -msgid "Back to overview" -msgstr "Назад к обзору" - -msgid "Back to scan results" -msgstr "Назад к результатам поиска" - -msgid "Backup" -msgstr "Резервное копирование" - -msgid "Backup / Flash Firmware" -msgstr "Резервное копирование / Перепрошивка" - -msgid "Backup file list" -msgstr "Список файлов для резервного копирования" - -msgid "Bad address specified!" -msgstr "Указан неправильный адрес!" - -msgid "Band" -msgstr "Диапазон" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Ниже приводится определённый список файлов для резервного копирования. Он " -"состоит из измененных config файлов, отмеченных opkg, необходимых базовых " -"файлов, а также шаблонов резервного копирования, определенных пользователем." - -msgid "Bind interface" -msgstr "Открытый интерфейс" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" -"Соединение только с определенными интерфейсами, не использующими " -"подстановочные адреса (wildcard)." - -msgid "Bind the tunnel to this interface (optional)." -msgstr "Открытый туннель для этого интерфейса (необязательно)." - -msgid "Bitrate" -msgstr "Скорость" - -msgid "Bogus NX Domain Override" -msgstr "Переопределение поддельного NX-домена" - -msgid "Bridge" -msgstr "Мост" - -msgid "Bridge interfaces" -msgstr "Объединить в мост" - -msgid "Bridge unit number" -msgstr "Номер моста" - -msgid "Bring up on boot" -msgstr "Запустить при загрузке" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Беспроводной 802.11%s контроллер Broadcom" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Беспроводной 802.11 контроллер Broadcom BCM%04x" - -msgid "Buffered" -msgstr "Буферизировано" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"Build/distribution оригинальные feed-ы. Изменения в этом файле НЕ сохранятся " -"при перепрошивке sysupgrade-совместимым образом." - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" -"CA сертификат; если отсутствует, будет сохранен после первого соединения." - -msgid "CPU usage (%)" -msgstr "Загрузка ЦП (%)" - -msgid "Call failed" -msgstr "Ошибка вызова" - -msgid "Cancel" -msgstr "Отменить" - -msgid "Category" -msgstr "Категория" - -msgid "Chain" -msgstr "Цепочка" - -msgid "Changes" -msgstr "Изменения" - -msgid "Changes applied." -msgstr "Изменения приняты." - -msgid "Changes have been reverted." -msgstr "Изменения были возвращены назад." - -msgid "Changes the administrator password for accessing the device" -msgstr "Изменить пароль администратора для доступа к устройству." - -msgid "Channel" -msgstr "Канал" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" -"Канал %d не доступен в регуляторном домене %s и был автоматически изменен на " -"%d." - -msgid "Check" -msgstr "Проверить" - -msgid "Check filesystems before mount" -msgstr "Проверка файловых систем перед монтированием" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" -"Проверьте эту опцию, чтобы удалить существующие сети беспроводного " -"устройства." - -msgid "Checksum" -msgstr "Контрольная сумма" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Укажите зону, которую вы хотите прикрепить к этому интерфейсу. Выберите " -"'не определено', чтобы удалить этот интерфейс из зоны, или " -"заполните поле 'создать', чтобы определить новую зону и прикрепить " -"к ней этот интерфейс." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Выберите интерфейс или интерфейсы, которые вы хотите прикрепить к данной " -"беспроводной сети или заполните поле создать, чтобы создать новый " -"интерфейс." - -msgid "Cipher" -msgstr "Алгоритм шифрования" - -msgid "Cisco UDP encapsulation" -msgstr "Формирование пакетов данных Cisco UDP " - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Нажмите 'Создать архив', чтобы загрузить tar-архив текущих config файлов " -"прошивки устройства, таким образом вы сохраните его настройки." - -msgid "Client" -msgstr "Клиент" - -msgid "Client ID to send when requesting DHCP" -msgstr "ID клиента при DHCP-запросе" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Завершать неактивное соединение после заданного интервала (сек.), " -"используйте значение 0 для удержания неактивного соединения." - -msgid "Close list..." -msgstr "Закрыть список..." - -msgid "Collecting data..." -msgstr "Сбор данных..." - -msgid "Command" -msgstr "Команда" - -msgid "Common Configuration" -msgstr "Общие настройки" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" -"Усложняет атаки на переустановку ключа на стороне клиента, отключая " -"ретрансляцию фреймов EAPOL-Key, которые используются для установки ключей. " -"Может вызвать проблемы совместимости и снижение надежности согласования " -"нового ключа, при наличии большого трафика." - -msgid "Configuration" -msgstr "Настройка config файла" - -msgid "Configuration failed" -msgstr "Ошибка конфигурации" - -msgid "Configuration files will be kept." -msgstr "Config файлы будут сохранены." - -msgid "Configuration has been applied." -msgstr "Конфигурация применена" - -msgid "Configuration has been rolled back!" -msgstr "Конфигурация возвращена назад!" - -msgid "Confirmation" -msgstr "Подтверждение пароля" - -msgid "Connect" -msgstr "Соединить" - -msgid "Connected" -msgstr "Подключен" - -msgid "Connection Limit" -msgstr "Ограничение соединений" - -msgid "Connection attempt failed" -msgstr "Ошибка попытки соединения" - -msgid "Connections" -msgstr "Соединения" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" -"Не удалось восстановить доступ к устройству после применения конфигурации. " -"Возможно вам придется подключиться заново, если вы изменили сетевые " -"настройки, такие как IP-адрес или параметры доступа к беспроводной сети." - -msgid "Country" -msgstr "Страна" - -msgid "Country Code" -msgstr "Код страны" - -msgid "Cover the following interface" -msgstr "Включить следующий интерфейс" - -msgid "Cover the following interfaces" -msgstr "Включить следующие интерфейсы" - -msgid "Create / Assign firewall-zone" -msgstr "Создать / назначить зону сетевого экрана" - -msgid "Create Interface" -msgstr "Создать интерфейс" - -msgid "Create a bridge over multiple interfaces" -msgstr "Создать мост над несколькими интерфейсами" - -msgid "Critical" -msgstr "Критическая ситуация" - -msgid "Cron Log Level" -msgstr "Запись событий Cron" - -msgid "Custom Interface" -msgstr "Пользовательский интерфейс" - -msgid "Custom delegated IPv6-prefix" -msgstr "Установленный пользователем IPv6-prefix" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" -"Custom-ные feed-ы — это пользовательские feed-ы. Этот файл может быть " -"сохранен при перепрошивке sysupgrade-совместимым образом." - -msgid "Custom feeds" -msgstr "Список custom-ных feed-ов" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" -"Пользовательские файлы (сертификаты, скрипты) могут остаться в системе. " -"Чтобы этого не произошло, выполните сначала сброс к заводским настройкам." - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Настройка поведения светодиодной индикации LED устройства, если это возможно." - -msgid "DHCP Server" -msgstr "DHCP-сервер" - -msgid "DHCP and DNS" -msgstr "DHCP и DNS" - -msgid "DHCP client" -msgstr "DHCP-клиент" - -msgid "DHCP-Options" -msgstr "DHCP настройки" - -msgid "DHCPv6 client" -msgstr "DHCPv6 клиент" - -msgid "DHCPv6-Mode" -msgstr "DHCPv6 режим" - -msgid "DHCPv6-Service" -msgstr "DHCPv6 сервис" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Перенаправление запросов DNS" - -msgid "DNS-Label / FQDN" -msgstr "DNS-Label / FQDN" - -msgid "DNSSEC" -msgstr "DNSSEC" - -msgid "DNSSEC check unsigned" -msgstr "DNSSEC проверка без знака" - -msgid "DPD Idle Timeout" -msgstr "DPD время простоя" - -msgid "DS-Lite AFTR address" -msgstr "DS-Lite AFTR-адрес" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "Состояние DSL" - -msgid "DSL line mode" -msgstr "DSL линейный режим" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "Скорость передачи данных" - -msgid "Debug" -msgstr "Отладка" - -msgid "Default %d" -msgstr "По умолчанию %d" - -msgid "Default gateway" -msgstr "Шлюз по умолчанию" - -msgid "Default is stateless + stateful" -msgstr "Значение по умолчанию — 'stateless + stateful'." - -msgid "Default state" -msgstr "Начальное состояние" - -msgid "Define a name for this network." -msgstr "Укажите имя этой сети." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Определить дополнительные опции DHCP, например, " -"\"6,192.168.2.1,192.168.2.2\", чтобы известить клиентов о DNS-" -"серверах." - -msgid "Delete" -msgstr "Удалить" - -msgid "Delete this network" -msgstr "Удалить эту сеть" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Описание" - -msgid "Design" -msgstr "Тема" - -msgid "Destination" -msgstr "Направление" - -msgid "Device" -msgstr "Устройство" - -msgid "Device Configuration" -msgstr "Настройка устройства" - -msgid "Device is rebooting..." -msgstr "Перезагрузка..." - -msgid "Device unreachable!" -msgstr "Устройство недоступно" - -msgid "Device unreachable! Still waiting for device..." -msgstr "Устройство недоступно! Ожидание устройства..." - -msgid "Diagnostics" -msgstr "Диагностика" - -msgid "Dial number" -msgstr "Dial номер" - -msgid "Directory" -msgstr "Папка" - -msgid "Disable" -msgstr "Отключить" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Отключить DHCP " -"для этого интерфейса." - -msgid "Disable DNS setup" -msgstr "Отключить DNS настройки" - -msgid "Disable Encryption" -msgstr "Отключить шифрование" - -msgid "Disable this network" -msgstr "Отключить данную сеть" - -msgid "Disabled" -msgstr "Отключено" - -msgid "Disabled (default)" -msgstr "Отключено (по умолчанию)" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "Отбрасывать ответы внешней сети RFC1918." - -msgid "Disconnection attempt failed" -msgstr "Ошибка попытки отключения" - -msgid "Dismiss" -msgstr "Отклонить" - -msgid "Displaying only packages containing" -msgstr "Показываются только пакеты, содержащие" - -msgid "Distance Optimization" -msgstr "Оптимизация расстояния" - -msgid "Distance to farthest network member in meters." -msgstr "Расстояние до самого удалённого сетевого узла в метрах." - -msgid "Distribution feeds" -msgstr "Список feed-ов дистрибутива" - -msgid "Diversity" -msgstr "Разновидность антенн" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq содержит в себе DHCP-сервер и DNS-" -"прокси для сетевых экранов NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Не кешировать отрицательные ответы, в т.ч. для несуществующих доменов." - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Не перенаправлять запросы, которые не могут быть обработаны публичными DNS-" -"серверами." - -msgid "Do not forward reverse lookups for local networks" -msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей." - -msgid "Domain required" -msgstr "Требуется домен" - -msgid "Domain whitelist" -msgstr "Белый список доменов" - -msgid "Don't Fragment" -msgstr "Не фрагментировать" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Не перенаправлять DNS-запросы " -"без DNS-имени." - -msgid "Down" -msgstr "Вниз" - -msgid "Download and install package" -msgstr "Загрузить и установить пакет" - -msgid "Download backup" -msgstr "Загрузить резервную копию" - -msgid "Downstream SNR offset" -msgstr "SNR offset внутренней сети" - -msgid "Dropbear Instance" -msgstr "Экземпляр Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear — это SSH-сервер со встроенным " -"SCP." - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "Dual-Stack Lite (RFC6333)" - -msgid "Dynamic DHCP" -msgstr "" -"Динамический DHCP" - -msgid "Dynamic tunnel" -msgstr "Динамический туннель" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Динамически выделять DHCP-адреса клиентам. Если выключено, то будут " -"обслужены только клиенты с постоянно арендованными адресами." - -msgid "EA-bits length" -msgstr "EA-bits длина" - -msgid "EAP-Method" -msgstr "Метод EAP" - -msgid "Edit" -msgstr "Изменить" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" -"Изменить данные конфигурации raw выше, чтобы исправить любую ошибку и " -"нажмите 'Сохранить', чтобы перезагрузить страницу." - -msgid "Edit this interface" -msgstr "Изменить этот интерфейс" - -msgid "Edit this network" -msgstr "Редактировать эту сеть" - -msgid "Emergency" -msgstr "Чрезвычайная ситуация" - -msgid "Enable" -msgstr "Включить" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" -"Включить IGMP " -"snooping" - -msgid "Enable STP" -msgstr "Включить STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Включить динамическое обновление оконечной точки HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "Включить IPv6 negotiation" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Включить IPv6-согласование на PPP-соединении" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Пропускать Jumbo-кадры" - -msgid "Enable NTP client" -msgstr "Включить NTP-клиент" - -msgid "Enable Single DES" -msgstr "Включить Single DES" - -msgid "Enable TFTP server" -msgstr "Включить TFTP-сервер" - -msgid "Enable VLAN functionality" -msgstr "Включить поддержку VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "Включить WPS при нажатии на кнопку, в режиме WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "Включить защиту от атаки KRACK" - -msgid "Enable learning and aging" -msgstr "Включить изучение и устаревание (learning/aging)" - -msgid "Enable mirroring of incoming packets" -msgstr "Включить отражение входящих пакетов" - -msgid "Enable mirroring of outgoing packets" -msgstr "Включить отражение исходящих пакетов" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "Включите флаг DF (не Фрагментировать) инкапсулирующих пакетов." - -msgid "Enable this mount" -msgstr "Включить эту точку монтирования" - -msgid "Enable this network" -msgstr "Включить данную сеть" - -msgid "Enable this swap" -msgstr "Включить этот раздел подкачки" - -msgid "Enable/Disable" -msgstr "Включить/выключить" - -msgid "Enabled" -msgstr "Включено" - -msgid "Enables IGMP snooping on this bridge" -msgstr "Включает IGMP snooping на данном мосту" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" -"Включить быстрый роуминг между точками доступа, принадлежащими к тому же " -"домену мобильности" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Включает Spanning Tree Protocol на этом мосту." - -msgid "Encapsulation mode" -msgstr "Режим инкапсуляции" - -msgid "Encryption" -msgstr "Шифрование" - -msgid "Endpoint Host" -msgstr "Конечная точка Хоста" - -msgid "Endpoint Port" -msgstr "Конечная точка Порта" - -msgid "Enter custom value" -msgstr "Введите пользовательское значение" - -msgid "Enter custom values" -msgstr "Введите пользовательские значения" - -msgid "Erasing..." -msgstr "Стирание..." - -msgid "Error" -msgstr "Ошибка" - -msgid "Errored seconds (ES)" -msgstr "Ошибочные секунды (ES)" - -msgid "Ethernet Adapter" -msgstr "Ethernet-адаптер" - -msgid "Ethernet Switch" -msgstr "Ethernet-коммутатор" - -msgid "Exclude interfaces" -msgstr "Исключите интерфейсы" - -msgid "Expand hosts" -msgstr "Расширять имена узлов" - -msgid "Expires" -msgstr "Истекает" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" -"Время истечения срока аренды арендованных адресов, минимум 2 минуты " -"(2m)." - -msgid "External" -msgstr "Внешний" - -msgid "External R0 Key Holder List" -msgstr "Внешний R0 Key Holder List" - -msgid "External R1 Key Holder List" -msgstr "Внешний R0 Key Holder List" - -msgid "External system log server" -msgstr "Внешний сервер системного журнала" - -msgid "External system log server port" -msgstr "Порт внешнего сервера системного журнала" - -msgid "External system log server protocol" -msgstr "Внешний протокол лог-сервера" - -msgid "Extra SSH command options" -msgstr "Дополнительные опции команды SSH" - -msgid "FT over DS" -msgstr "FT над DS" - -msgid "FT over the Air" -msgstr "FT над the Air" - -msgid "FT protocol" -msgstr "FT протокол" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" -"Не удалось подтвердить применение в течении %d сек., ожидание отката..." - -msgid "File" -msgstr "Файл" - -msgid "Filename of the boot image advertised to clients" -msgstr "Имя загрузочного образа, извещаемого клиентам" - -msgid "Filesystem" -msgstr "Файловая система" - -msgid "Filter" -msgstr "Фильтр" - -msgid "Filter private" -msgstr "Фильтровать частные" - -msgid "Filter useless" -msgstr "Фильтровать бесполезные" - -msgid "Finalizing failed" -msgstr "Ошибка финализации" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" -"Найти все разделы включая swap и изменить config файл fstab с дефолтными " -"значениями всех обнаруженных разделов, т.е. выполнить команду 'block detect " -"> /etc/config/fstab'." - -msgid "Find and join network" -msgstr "Найти и присоединиться к сети" - -msgid "Find package" -msgstr "Найти пакет" - -msgid "Finish" -msgstr "Завершить" - -msgid "Firewall" -msgstr "Межсетевой экран" - -msgid "Firewall Mark" -msgstr "Метка межсетевого экрана" - -msgid "Firewall Settings" -msgstr "Настройки межсетевого экрана" - -msgid "Firewall Status" -msgstr "Состояние межсетевого экрана" - -msgid "Firmware File" -msgstr "Файл прошивки" - -msgid "Firmware Version" -msgstr "Версия прошивки" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Фиксированный порт для исходящих DNS-запросов." - -msgid "Flash Firmware" -msgstr "Установить прошивку" - -msgid "Flash image..." -msgstr "Установить..." - -msgid "Flash new firmware image" -msgstr "Установить новый образ прошивки" - -msgid "Flash operations" -msgstr "Операции с прошивкой" - -msgid "Flashing..." -msgstr "Прошивка..." - -msgid "Force" -msgstr "Назначить" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Назначить CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Назначить DHCP в этой сети, даже если найден другой сервер." - -msgid "Force TKIP" -msgstr "Назначить TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Назначить TKIP и CCMP (AES)" - -msgid "Force link" -msgstr "Активировать соединение" - -msgid "Force use of NAT-T" -msgstr "Принудительно использовать NAT-T" - -msgid "Form token mismatch" -msgstr "Несоответствие маркеров формы" - -msgid "Forward DHCP traffic" -msgstr "Перенаправлять трафик DHCP" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "Секунды прямой коррекции ошибок (FECS)" - -msgid "Forward broadcast traffic" -msgstr "Перенаправлять широковещательный траффик" - -msgid "Forward mesh peer traffic" -msgstr "Перенаправлять запросы трафика Mesh" - -msgid "Forwarding mode" -msgstr "Режим перенаправления" - -msgid "Fragmentation Threshold" -msgstr "Порог фрагментации" - -msgid "Frame Bursting" -msgstr "Пакетная передача кадров" - -msgid "Free" -msgstr "Свободно" - -msgid "Free space" -msgstr "Свободное место" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" -"Дополнительная информация о интерфейсах и партнерах WireGuard приведена в wireguard.com." - -msgid "GHz" -msgstr "ГГц" - -msgid "GPRS only" -msgstr "Только GPRS" - -msgid "Gateway" -msgstr "Шлюз" - -msgid "Gateway address is invalid" -msgstr "Неверный адрес шлюза" - -msgid "Gateway ports" -msgstr "Порты шлюза" - -msgid "General Settings" -msgstr "Основные настройки" - -msgid "General Setup" -msgstr "Основные настройки" - -msgid "General options for opkg" -msgstr "Основные настройки opkg." - -msgid "Generate Config" -msgstr "Создать config" - -msgid "Generate PMK locally" -msgstr "Создать PMK локально" - -msgid "Generate archive" -msgstr "Создать архив" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Беспроводной 802.11%s контроллер" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Введённые пароли не совпадают, пароль не изменён!" - -msgid "Global Settings" -msgstr "Основные настройки" - -msgid "Global network options" -msgstr "Основные настройки сети" - -msgid "Go to password configuration..." -msgstr "Перейти к настройке пароля..." - -msgid "Go to relevant configuration page" -msgstr "Перейти к странице настройки" - -msgid "Group Password" -msgstr "Групповой пароль" - -msgid "Guest" -msgstr "Гость" - -msgid "HE.net password" -msgstr "Пароль HE.net" - -msgid "HE.net username" -msgstr "HE.net логин" - -msgid "HT mode (802.11n)" -msgstr "HT режим (802.11n)" - -msgid "Hang Up" -msgstr "Перезапустить" - -msgid "Header Error Code Errors (HEC)" -msgstr "Ошибки контроля ошибок заголовка (HEC)" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"На странице вы можете настроить основные параметры вашего устройства, такие " -"как имя хоста или часовой пояс." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Здесь вы можете добавить открытые SSH ключи (один ключ на строку) для SSH " -"аутентификации." - -msgid "Hide ESSID" -msgstr "Скрыть ESSID" - -msgid "Host" -msgstr "Хост" - -msgid "Host entries" -msgstr "Список хостов" - -msgid "Host expiry timeout" -msgstr "Время ожидания хоста" - -msgid "Host-IP or Network" -msgstr "IP-адрес или сеть" - -msgid "Host-Uniq tag content" -msgstr "Содержимое Host-Uniq тега" - -msgid "Hostname" -msgstr "Имя хоста" - -msgid "Hostname to send when requesting DHCP" -msgstr "Имя хоста в DHCP-запросах" - -msgid "Hostnames" -msgstr "Имена хостов" - -msgid "Hybrid" -msgstr "Гибрид" - -msgid "IKE DH Group" -msgstr "IKE DH Group" - -msgid "IP Addresses" -msgstr "IP-адреса" - -msgid "IP address" -msgstr "IP-адрес" - -msgid "IP address in invalid" -msgstr "Неверный IP-адрес" - -msgid "IP address is missing" -msgstr "IP-адрес не указан" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Межсетевой экран IPv4" - -msgid "IPv4 Upstream" -msgstr "Основной IPv4" - -msgid "IPv4 address" -msgstr "IPv4-адрес" - -msgid "IPv4 and IPv6" -msgstr "IPv4 и IPv6" - -msgid "IPv4 assignment length" -msgstr "IPv4 assignment length" - -msgid "IPv4 broadcast" -msgstr "Широковещательный IPv4-адрес" - -msgid "IPv4 gateway" -msgstr "IPv4-адрес шлюза" - -msgid "IPv4 netmask" -msgstr "Маска сети IPv4" - -msgid "IPv4 only" -msgstr "Только IPv4" - -msgid "IPv4 prefix" -msgstr "IPv4 префикс" - -msgid "IPv4 prefix length" -msgstr "Длина префикса IPv4" - -msgid "IPv4-Address" -msgstr "IPv4-адрес" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "IPv4-in-IPv4 (RFC2003)" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Межсетевой экран IPv6" - -msgid "IPv6 Neighbours" -msgstr "IPv6 Neighbours" - -msgid "IPv6 Settings" -msgstr "IPv6 Настройки" - -msgid "IPv6 ULA-Prefix" -msgstr "IPv6 ULA-Prefix" - -msgid "IPv6 Upstream" -msgstr "Основной IPv6" - -msgid "IPv6 address" -msgstr "IPv6-адрес" - -msgid "IPv6 assignment hint" -msgstr "IPv6 подсказка присвоения" - -msgid "IPv6 assignment length" -msgstr "IPv6 назначение длины" - -msgid "IPv6 gateway" -msgstr "IPv6-адрес шлюза" - -msgid "IPv6 only" -msgstr "Только IPv6" - -msgid "IPv6 prefix" -msgstr "Префикс IPv6" - -msgid "IPv6 prefix length" -msgstr "Длина префикса IPv6" - -msgid "IPv6 routed prefix" -msgstr "IPv6 направление префикса" - -msgid "IPv6 suffix" -msgstr "IPv6 суффикс" - -msgid "IPv6-Address" -msgstr "IPv6-адрес" - -msgid "IPv6-PD" -msgstr "IPv6-PD" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6 в IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6 через IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6 через IPv4 (6to4)" - -msgid "Identity" -msgstr "Идентификация EAP" - -msgid "If checked, 1DES is enabled" -msgstr "Если выбрано, то 1DES включено" - -msgid "If checked, encryption is disabled" -msgstr "Если выбрано, то шифрование выключено" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Если выбрано, монтировать устройство используя его UUID, а не фиксированный " -"файл устройства." - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Если выбрано, монтировать устройство используя название его раздела, а не " -"фиксированный файл устройства." - -msgid "If unchecked, no default route is configured" -msgstr "Если не выбрано, то маршрут по умолчанию не настраивается." - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Если не выбрано, то извещаемые адреса DNS серверов игнорируются." - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Если физической памяти не достаточно, то неиспользуемые данные могут быть " -"временно перемещены в раздел подкачки, что в свою очередь приведет к " -"увеличению объёму свободной RAM. " -"Однако, перемещение в файл — это достаточно долгий процесс, так как " -"устройство, на котором располагается раздел подкачки, работает гораздо " -"медленнее, чем RAM." - -msgid "Ignore /etc/hosts" -msgstr "Игнорировать /etc/hosts" - -msgid "Ignore interface" -msgstr "Игнорировать интерфейс" - -msgid "Ignore resolve file" -msgstr "Игнорировать файл resolv" - -msgid "Image" -msgstr "Образ" - -msgid "In" -msgstr "В" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" -"Для предотвращения несанкционированного доступа к системе ваш запрос " -"заблокирован. Нажмите кнопку 'Продолжить' ниже, чтобы вернуться на " -"предыдущую страницу." - -msgid "Inactivity timeout" -msgstr "Промежуток времени бездействия" - -msgid "Inbound:" -msgstr "Входящий:" - -msgid "Info" -msgstr "Информация" - -msgid "Initialization failure" -msgstr "Ошибка инициализации" - -msgid "Initscript" -msgstr "Скрипт инициализации" - -msgid "Initscripts" -msgstr "Скрипты инциализации" - -msgid "Install" -msgstr "Установить" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "Для IPv6, установите пакет iputils-traceroute6." - -msgid "Install package %q" -msgstr "Установить пакет %q" - -msgid "Install protocol extensions..." -msgstr "Установить расширения протокола..." - -msgid "Installed packages" -msgstr "Установленные пакеты" - -msgid "Interface" -msgstr "Интерфейс" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "Интерфейс %q устройство авт.перемещается из %q в %q." - -msgid "Interface Configuration" -msgstr "Настройка сети" - -msgid "Interface Overview" -msgstr "Список интерфейсов" - -msgid "Interface is reconnecting..." -msgstr "Интерфейс переподключается..." - -msgid "Interface name" -msgstr "Имя интерфейса" - -msgid "Interface not present or not connected yet." -msgstr "Интерфейс не существует или пока не подключен." - -msgid "Interfaces" -msgstr "Интерфейсы" - -msgid "Internal" -msgstr "Внутренний" - -msgid "Internal Server Error" -msgstr "Внутренняя ошибка сервера" - -msgid "Invalid" -msgstr "Неверно" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"Указан неверный VLAN ID! Доступны только идентификаторы в диапазоне от %d до " -"%d." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "Указан неверный VLAN ID! Доступны только уникальные ID" - -msgid "Invalid username and/or password! Please try again." -msgstr "Неверный логин и/или пароль! Попробуйте снова." - -msgid "Isolate Clients" -msgstr "Изолировать клиентов" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Оказалось, что вы пытаетесь прошить устройство прошивкой, которая по размеру " -"не помещается в чип флэш-памяти, проверьте ваш файл прошивки!" - -msgid "JavaScript required!" -msgstr "Требуется JavaScript!" - -msgid "Join Network" -msgstr "Подключение к сети" - -msgid "Join Network: Wireless Scan" -msgstr "Найденные точки доступа Wi-Fi" - -msgid "Joining Network: %q" -msgstr "Подключение к сети: %q" - -msgid "Keep settings" -msgstr "Сохранить настройки" - -msgid "Kernel Log" -msgstr "Журнал ядра" - -msgid "Kernel Version" -msgstr "Версия ядра" - -msgid "Key" -msgstr "Пароль (ключ)" - -msgid "Key #%d" -msgstr "Ключ №%d" - -msgid "Kill" -msgstr "Принудительно завершить" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP-сервер" - -msgid "LCP echo failure threshold" -msgstr "Порог ошибок эхо-запросов LCP" - -msgid "LCP echo interval" -msgstr "Интервал эхо-запросов LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Метка" - -msgid "Language" -msgstr "Язык" - -msgid "Language and Style" -msgstr "Язык и тема" - -msgid "Latency" -msgstr "Задержка" - -msgid "Leaf" -msgstr "Лист" - -msgid "Lease time" -msgstr "Время аренды адреса" - -msgid "Lease validity time" -msgstr "Срок действия аренды" - -msgid "Leasefile" -msgstr "Файл аренд" - -msgid "Leasetime remaining" -msgstr "Оставшееся время аренды" - -msgid "Leave empty to autodetect" -msgstr "Оставьте поле пустым для автоопределения." - -msgid "Leave empty to use the current WAN address" -msgstr "Оставьте пустым для использования текущего адреса WAN" - -msgid "Legend:" -msgstr "События:" - -msgid "Limit" -msgstr "Предел" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "Ограничение сервиса DNS, для подсетей интерфейса используещего DNS." - -msgid "Limit listening to these interfaces, and loopback." -msgstr "Ограничьте прослушивание этих интерфейсов и замыкание на себя." - -msgid "Line Attenuation (LATN)" -msgstr "Затухание линии (LATN)" - -msgid "Line Mode" -msgstr "Режим линии" - -msgid "Line State" -msgstr "Состояние Линии" - -msgid "Line Uptime" -msgstr "Время бесперебойной работы линии" - -msgid "Link On" -msgstr "Подключение" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Список DNS-серверов для " -"перенаправления запросов." - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" -"Список R0KHs в том же мобильном домене.
    В формате: MAC-адрес,NAS-" -"идентификатор,128-битный ключ как hex строка.
    этот список используется " -"для сопоставления R0KH-ID (NAS ID) с целевым MAC-адресом при запросе ключа " -"PMK-R1 из R0KH , который использовался STA во время начальной ассоциации " -"доменов Mobility." - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" -"Список R1KHs в том же домене мобильности.
    Формат: MAC-адрес,R1KH-ID " -"как 6 октетов с двоеточиями, 128-битный ключ, как шестнадцатеричная строка. " -"
    Этот список используется для сопоставления R1KH-ID с целевым MAC-" -"адресом при отправке ключа PMK-R1 из R0KH. Это также список авторизованных " -"R1KHs в MD, которые могут запросить PMK-R1 ключи." - -msgid "List of SSH key files for auth" -msgstr "Список файлов ключей SSH для авторизации." - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Список доменов, для которых разрешены ответы RFC1918." - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Список хостов, поставляющих поддельные результаты домена NX." - -msgid "Listen Interfaces" -msgstr "Интерфейс для входящих соединений" - -msgid "Listen Port" -msgstr "Порт для входящих соединений" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Этот интерфейс работает с входящими соединениями или если интерфейс не " -"задан, значит все интерфейсы." - -msgid "Listening port for inbound DNS queries" -msgstr "Порт для входящих DNS-запросов." - -msgid "Load" -msgstr "Загрузка" - -msgid "Load Average" -msgstr "Средняя загрузка" - -msgid "Loading" -msgstr "Загрузка" - -msgid "Local IP address is invalid" -msgstr "Неверный локальный IP-адрес" - -msgid "Local IP address to assign" -msgstr "Присвоение локального IP-адреса" - -msgid "Local IPv4 address" -msgstr "Локальный IPv4-адрес" - -msgid "Local IPv6 address" -msgstr "Локальный IPv6-адрес" - -msgid "Local Service Only" -msgstr "Только локальный DNS" - -msgid "Local Startup" -msgstr "Запуск пакетов и служб пользователя, при включении устройства" - -msgid "Local Time" -msgstr "Дата и время" - -msgid "Local domain" -msgstr "Локальный домен" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Согласно требованиям, имена соответствующие этому домену, никогда не " -"передаются. И разрешаются только из файла DHCP (/etc/config/dhcp) или файла " -"хостов (/etc/hosts)." - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Суффикс локального домена, который будет добавлен к DHCP-именам и записи " -"файла хостов (/etc/hosts)." - -msgid "Local server" -msgstr "Локальный сервер" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Локализировать имя хоста в зависимости от запрашиваемой подсети, если " -"доступно несколько IP-адресов." - -msgid "Localise queries" -msgstr "Локализовывать запросы" - -msgid "Locked to channel %s used by: %s" -msgstr "Блокировать канал %s используемый: %s" - -msgid "Log output level" -msgstr "Запись событий" - -msgid "Log queries" -msgstr "Запись запросов" - -msgid "Logging" -msgstr "Настройка журнала" - -msgid "Login" -msgstr "Войти" - -msgid "Logout" -msgstr "Выйти" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "Потеря сигнала в секундах (LOSS)" - -msgid "Lowest leased address as offset from the network address." -msgstr "Минимальный адрес аренды." - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-адрес" - -msgid "MAC-Address Filter" -msgstr "Фильтр MAC-адресов" - -msgid "MAC-Filter" -msgstr "MAC-фильтр" - -msgid "MAC-List" -msgstr "Список MAC" - -msgid "MAP / LW4over6" -msgstr "MAP / LW4over6" - -msgid "MAP rule is invalid" -msgstr "Неверное MAP правило" - -msgid "MB/s" -msgstr "МБ/с" - -msgid "MD5" -msgstr "MD5" - -msgid "MHz" -msgstr "МГц" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" -"Прежде чем перенести корневую файловую систему на внешний носитель, " -"используйте команды приведенные ниже:" - -msgid "Manual" -msgstr "Вручную" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "Max. Attainable Data Rate (ATTNDR)" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Максимальное количество активных арендованных DHCP-адресов." - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Максимально допустимое количество одновременных DNS-запросов." - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Максимально допустимый размер UDP пакетов-EDNS.0." - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Максимальное время ожидания готовности модема (секунды)" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" -"Максимальная длина имени составляет 15 символов, включая префикс " -"автоматического протокола/моста (br-, 6in4-, pppoe- etc.)" - -msgid "Maximum number of leased addresses." -msgstr "Максимальное количество арендованных адресов." - -msgid "Mbit/s" -msgstr "Мбит/с" - -msgid "Memory" -msgstr "Оперативная память (RAM)" - -msgid "Memory usage (%)" -msgstr "Использование памяти (%)" - -msgid "Mesh Id" -msgstr "Mesh ID" - -msgid "Metric" -msgstr "Метрика" - -msgid "Mirror monitor port" -msgstr "Зеркальный порт наблюдения" - -msgid "Mirror source port" -msgstr "Зеркальный исходящий порт" - -msgid "Missing protocol extension for proto %q" -msgstr "Отсутствует расширение протокола %q" - -msgid "Mobility Domain" -msgstr "Мобильный домен" - -msgid "Mode" -msgstr "Режим" - -msgid "Model" -msgstr "Модель" - -msgid "Modem device" -msgstr "Модем" - -msgid "Modem information query failed" -msgstr "Ошибка запроса информации о модеме" - -msgid "Modem init timeout" -msgstr "Время ожидания инициализации модема" - -msgid "Monitor" -msgstr "Монитор" - -msgid "Mount Entry" -msgstr "Настройка config файла fstab (/etc/config/fstab)" - -msgid "Mount Point" -msgstr "Точка монтирования" - -msgid "Mount Points" -msgstr "Монтирование разделов" - -msgid "Mount Points - Mount Entry" -msgstr "Точки монтирования — Настройка разделов" - -msgid "Mount Points - Swap Entry" -msgstr "Точки монтирования — Настройка Swap" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Точки монтирования определяют, куда в файловой системе будут смонтированы " -"разделы запоминающего устройства." - -msgid "Mount filesystems not specifically configured" -msgstr "Монтирование не подготовленного раздела." - -msgid "Mount options" -msgstr "Опции монтирования" - -msgid "Mount point" -msgstr "Точка монтирования" - -msgid "Mount swap not specifically configured" -msgstr "Монтирование не подготовленного swap-а." - -msgid "Mounted file systems" -msgstr "Смонтированные разделы" - -msgid "Move down" -msgstr "Переместить вниз" - -msgid "Move up" -msgstr "Переместить вверх" - -msgid "Multicast address" -msgstr "Адрес мультивещания" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "NAT-T режим" - -msgid "NAT64 Prefix" -msgstr "NAT64 префикс" - -msgid "NCM" -msgstr "NCM" - -msgid "NDP-Proxy" -msgstr "NDP-прокси" - -msgid "NT Domain" -msgstr "NT домен" - -msgid "NTP server candidates" -msgstr "Список NTP-серверов" - -msgid "Name" -msgstr "Имя" - -msgid "Name of the new interface" -msgstr "Имя нового интерфейса" - -msgid "Name of the new network" -msgstr "Имя новой сети" - -msgid "Navigation" -msgstr "Навигация" - -msgid "Netmask" -msgstr "Маска сети" - -msgid "Network" -msgstr "Сеть" - -msgid "Network Utilities" -msgstr "Сетевые утилиты" - -msgid "Network boot image" -msgstr "Образ системы для сетевой загрузки" - -msgid "Network device is not present" -msgstr "Нет сетевого устройства" - -msgid "Network without interfaces." -msgstr "Сеть без интерфейсов." - -msgid "Next »" -msgstr "Следующий »" - -msgid "No DHCP Server configured for this interface" -msgstr "DHCP-сервер не настроен для этого интерфейса" - -msgid "No NAT-T" -msgstr "Без NAT-T" - -msgid "No chains in this table" -msgstr "Нет цепочек в этой таблице" - -msgid "No files found" -msgstr "Файлы не найдены" - -msgid "No information available" -msgstr "Нет доступной информации" - -msgid "No matching prefix delegation" -msgstr "Отсутствует соответствующая делегация префикса" - -msgid "No negative cache" -msgstr "Отключить кэш отрицательных ответов" - -msgid "No network configured on this device" -msgstr "Не настроена сеть на устройстве" - -msgid "No network name specified" -msgstr "Не задано имя сети" - -msgid "No package lists available" -msgstr "Список пакетов не доступен" - -msgid "No password set!" -msgstr "Пароль не установлен!" - -msgid "No rules in this chain" -msgstr "Нет правил в данной цепочке" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "Зона не присвоена" - -msgid "Noise" -msgstr "Шум" - -msgid "Noise Margin (SNR)" -msgstr "Соотношение сигнал/шум (SNR)" - -msgid "Noise:" -msgstr "Шум:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "Non Pre-emtive CRC errors (CRC_P)" - -msgid "Non-wildcard" -msgstr "Не использовать wildcard" - -msgid "None" -msgstr "Ничего" - -msgid "Normal" -msgstr "Нормально" - -msgid "Not Found" -msgstr "Не найдено" - -msgid "Not associated" -msgstr "Не связанный" - -msgid "Not connected" -msgstr "Не подключено" - -msgid "Note: Configuration files will be erased." -msgstr "Внимание: config файлы будут удалены." - -msgid "Note: interface name length" -msgstr "Внимание: длина имени интерфейса" - -msgid "Notice" -msgstr "Заметка" - -msgid "Nslookup" -msgstr "DNS-запрос" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" -"Количество кэшированных DNS записей (максимум — 10000, 0 — отключить " -"кэширование)" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Настройка OPKG" - -msgid "Obfuscated Group Password" -msgstr "Obfuscated Group Password" - -msgid "Obfuscated Password" -msgstr "Obfuscated Password" - -msgid "Obtain IPv6-Address" -msgstr "Получение IPv6-адреса" - -msgid "Off-State Delay" -msgstr "Задержка выключенного состояния" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"На этой странице вы можете настроить сетевые интерфейсы. Вы можете " -"объединить несколько интерфейсов в мост, выбрав опцию 'Объединить в мост' и " -"введя список интерфейсов, разделенных пробелами. Вы также можете " -"использовать VLAN-" -"обозначения вида ИНТЕРФЕЙС.НОМЕРVLAN (напр.: eth0.1)." - -msgid "On-State Delay" -msgstr "Задержка включенного состояния" - -msgid "One of hostname or mac address must be specified!" -msgstr "Должен быть указан либо MAC-адрес, либо имя хоста!" - -msgid "One or more fields contain invalid values!" -msgstr "Одно или несколько полей содержат недопустимые значения!" - -msgid "One or more invalid/required values on tab" -msgstr "Одно или несколько недопустимых / обязательных значений на странице" - -msgid "One or more required fields have no value!" -msgstr "Одно или несколько обязательных полей не заполнены!" - -msgid "Open list..." -msgstr "Открыть список..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "OpenConnect (CISCO AnyConnect)" - -msgid "Operating frequency" -msgstr "Настройка частоты" - -msgid "Option changed" -msgstr "Опция изменена" - -msgid "Option removed" -msgstr "Опция удалена" - -msgid "Optional" -msgstr "Необязательно" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" -"Необязательно. 32-разрядная метка для исходящих зашифрованных пакетов. " -"Введите значение в шестнадцатеричной форме, начиная с 0x." - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" -"Необязательно. Допустимые значения: 'eui64', 'random', фиксированное " -"значение например '::1' или '::1:2'. Когда IPv6 префикс такой как — ('a:b:c:" -"d::'), используйте суффикс на вроде ('::1') для этого IPv6 адреса ('a:b:c:" -"d::1') для этого интерфейса." - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" -"Необязательно. Base64-шифрованный общий ключ. Добавляет дополнительный слой " -"криптографии с симметричным ключом для пост-квантового сопротивления." - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" -"Необязательно. Создавать маршруты для разрешенных IP адресов для этого узла." - -msgid "Optional. Description of peer." -msgstr "Необязательно. Описание узла." - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" -"Необязательно. Запрашивающий хост. Имена разрешаются до появления интерфейса." - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "Необязательно. Максимальная единица передачи туннельного интерфейса." - -msgid "Optional. Port of peer." -msgstr "Необязательно. Порт узла." - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" -"Необязательно. Кол-во секунд между сохранением сообщений. По умолчанию равно " -"'0' (отключено). Рекомендуемое значение, если это устройство находится за " -"NAT 25." - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" -"Необязательно. Udp-порт, используемый для исходящих и входящих пакетов." - -msgid "Options" -msgstr "Опции" - -msgid "Other:" -msgstr "Другие:" - -msgid "Out" -msgstr "Вне" - -msgid "Outbound:" -msgstr "Исходящий:" - -msgid "Output Interface" -msgstr "Исходящий интерфейс" - -msgid "Override MAC address" -msgstr "Назначить MAC-адрес" - -msgid "Override MTU" -msgstr "Назначить MTU" - -msgid "Override TOS" -msgstr "Отвергать TOS" - -msgid "Override TTL" -msgstr "Отвергать TTL" - -msgid "Override default interface name" -msgstr "Назначить имя интерфейса по дефолту." - -msgid "Override the gateway in DHCP responses" -msgstr "Назначить шлюз в ответах DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Переопределите сетевую маску, отправленную клиентам. Обычно это вычислено от " -"подсети, которая подана." - -msgid "Override the table used for internal routes" -msgstr "Назначить таблицу внутренних маршрутов" - -msgid "Overview" -msgstr "Обзор" - -msgid "Owner" -msgstr "Пользователь" - -msgid "PAP/CHAP password" -msgstr "Пароль PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Имя пользователя PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "PIN код отвергнут" - -msgid "PMK R1 Push" -msgstr "PMK R1 Push" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Инкапсуляция PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "PSID смещение" - -msgid "PSID-bits length" -msgstr "PSID длина в битах" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "PTM/EFM (Packet Transfer Mode)" - -msgid "Package libiwinfo required!" -msgstr "Требуется пакет libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Список пакетов обновлялся более 24 часов назад" - -msgid "Package name" -msgstr "Имя пакета" - -msgid "Packets" -msgstr "Пакеты" - -msgid "Part of zone %q" -msgstr "Часть зоны %q" - -msgid "Password" -msgstr "Пароль" - -msgid "Password authentication" -msgstr "С помощью пароля" - -msgid "Password of Private Key" -msgstr "Пароль к Приватному ключу" - -msgid "Password of inner Private Key" -msgstr "Пароль к внутреннему Приватному ключу" - -msgid "Password successfully changed!" -msgstr "Пароль успешно изменён!" - -msgid "Password2" -msgstr "Пароль2" - -msgid "Path to CA-Certificate" -msgstr "Путь к CA-Сертификату" - -msgid "Path to Client-Certificate" -msgstr "Путь к Client-Сертификату" - -msgid "Path to Private Key" -msgstr "Путь к Приватному ключу" - -msgid "Path to inner CA-Certificate" -msgstr "Путь к внутренним CA-Сертификатам" - -msgid "Path to inner Client-Certificate" -msgstr "Путь к внутренним Client-Сертификатам" - -msgid "Path to inner Private Key" -msgstr "Путь к внутреннему Приватному ключу" - -msgid "Peak:" -msgstr "Пиковая:" - -msgid "Peer IP address to assign" -msgstr "Запрос IP адреса назначения" - -msgid "Peer address is missing" -msgstr "Отсутствует адрес пира" - -msgid "Peers" -msgstr "Пиры" - -msgid "Perfect Forward Secrecy" -msgstr "Perfect Forward Secrecy" - -msgid "Perform reboot" -msgstr "Выполнить перезагрузку" - -msgid "Perform reset" -msgstr "Выполнить сброс" - -msgid "Persistent Keep Alive" -msgstr "Постоянно держать включенным" - -msgid "Phy Rate:" -msgstr "Скорость:" - -msgid "Physical Settings" -msgstr "Настройки канала" - -msgid "Ping" -msgstr "Пинг-запрос" - -msgid "Pkts." -msgstr "Пакетов" - -msgid "Please enter your username and password." -msgstr "Введите логин и пароль." - -msgid "Policy" -msgstr "Политика" - -msgid "Port" -msgstr "Порт" - -msgid "Port status:" -msgstr "Состояние порта:" - -msgid "Power Management Mode" -msgstr "Режим управления питанием" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "Pre-emtive CRC errors (CRCP_P)" - -msgid "Prefer LTE" -msgstr "Предпочитать LTE" - -msgid "Prefer UMTS" -msgstr "Предпочитать UMTS" - -msgid "Prefix Delegated" -msgstr "Делегированный префикс" - -msgid "Preshared Key" -msgstr "Предварительный ключ" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Предполагать, что узел недоступен после указанного количества ошибок " -"получения эхо-пакета LCP, введите '0' для игнорирования ошибок." - -msgid "Prevent listening on these interfaces." -msgstr "Запретить прослушивание этих интерфейсов." - -msgid "Prevents client-to-client communication" -msgstr "Не позволяет клиентам обмениваться друг с другом информацией." - -msgid "Private Key" -msgstr "Приватный ключ" - -msgid "Proceed" -msgstr "Продолжить" - -msgid "Processes" -msgstr "Процессы" - -msgid "Profile" -msgstr "Профиль" - -msgid "Prot." -msgstr "Прот." - -msgid "Protocol" -msgstr "Протокол" - -msgid "Protocol family" -msgstr "Семейство протоколов" - -msgid "Protocol of the new interface" -msgstr "Протокол нового интерфейса" - -msgid "Protocol support is not installed" -msgstr "Поддержка протокола не установлена" - -msgid "Provide NTP server" -msgstr "Включить NTP-сервер" - -msgid "Provide new network" -msgstr "Предоставлять новую сеть" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Псевдо Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "Публичный ключ" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" -"Публичный префикс, направляемый на это устройство для распространения среди " -"клиентов." - -msgid "QMI Cellular" -msgstr "QMI сотовый" - -msgid "Quality" -msgstr "Качество" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "R0 Key время жизни" - -msgid "R1 Key Holder" -msgstr "R1 Key Holder" - -msgid "RFC3947 NAT-T mode" -msgstr "RFC3947 NAT-T режим" - -msgid "RTS/CTS Threshold" -msgstr "Порог RTS/CTS" - -msgid "RX" -msgstr "Получение (RX)" - -msgid "RX Rate" -msgstr "Скорость получения" - -msgid "Radius-Accounting-Port" -msgstr "Порт Radius-Accounting" - -msgid "Radius-Accounting-Secret" -msgstr "Секрет Radius-Accounting" - -msgid "Radius-Accounting-Server" -msgstr "Сервер Radius-Accounting" - -msgid "Radius-Authentication-Port" -msgstr "Порт Radius-Authentication" - -msgid "Radius-Authentication-Secret" -msgstr "Секрет Radius-Authentication" - -msgid "Radius-Authentication-Server" -msgstr "Сервер Radius-Authentication" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" -"Строка в шестнадцатеричном коде. Оставьте пустой, если ваш провайдер не " -"требует этого" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Читать /etc/ethers для настройки DHCP-сервера." - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" -"Действительно удалить этот интерфейс? Удаление не может быть отменено! Вы " -"можете потерять доступ к этому устройству, если вы подключены через данный " -"интерфейс." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Действительно удалить эту беспроводную сеть? Удаление не может быть отменено!" -"\\nВы можете потерять доступ к этому устройству, если вы подключены через " -"эту сеть." - -msgid "Really reset all changes?" -msgstr "Действительно сбросить все изменения?" - -msgid "Really switch protocol?" -msgstr "Вы действительно хотите изменить протокол?" - -msgid "Realtime Connections" -msgstr "Соединения в реальном времени" - -msgid "Realtime Graphs" -msgstr "Графики в реальном времени" - -msgid "Realtime Load" -msgstr "Загрузка в реальном времени" - -msgid "Realtime Traffic" -msgstr "Трафик в реальном времени" - -msgid "Realtime Wireless" -msgstr "Беспроводная сеть в реальном времени" - -msgid "Reassociation Deadline" -msgstr "Срок Реассоциации" - -msgid "Rebind protection" -msgstr "Защита от DNS Rebinding" - -msgid "Reboot" -msgstr "Перезагрузка" - -msgid "Rebooting..." -msgstr "Перезагрузка..." - -msgid "Reboots the operating system of your device" -msgstr "" -"Программная перезагрузка вашего устройства, т.е. выполнить команду 'reboot'." - -msgid "Receive" -msgstr "Приём" - -msgid "Receiver Antenna" -msgstr "Приёмная антенна" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "Рекомендуемый. IP адреса интерфейса WireGuard." - -msgid "Reconnect this interface" -msgstr "Переподключить этот интерфейс" - -msgid "References" -msgstr "Ссылки" - -msgid "Relay" -msgstr "Ретранслятор" - -msgid "Relay Bridge" -msgstr "Мост-Ретранслятор" - -msgid "Relay between networks" -msgstr "Ретранслятор между сетями" - -msgid "Relay bridge" -msgstr "Мост-ретранслятор" - -msgid "Remote IPv4 address" -msgstr "Удалённый IPv4-адрес" - -msgid "Remote IPv4 address or FQDN" -msgstr "Удалённый IPv4-адрес или FQDN" - -msgid "Remove" -msgstr "Удалить" - -msgid "Repeat scan" -msgstr "Повторить поиск" - -msgid "Replace entry" -msgstr "Заменить запись" - -msgid "Replace wireless configuration" -msgstr "Заменить настройку беспроводного соединения" - -msgid "Request IPv6-address" -msgstr "Запрос IPv6 адреса" - -msgid "Request IPv6-prefix of length" -msgstr "Запрос IPv6 префикс длины" - -msgid "Required" -msgstr "Требовать" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" -"Требуется для некоторых Интернет провайдеров, например глава с DOCSIS 3." - -msgid "Required. Base64-encoded private key for this interface." -msgstr "Требовать Приватный ключ в кодировке Base64 для этого интерфейса." - -msgid "Required. Base64-encoded public key of peer." -msgstr "Требовать Публичный ключ узла в кодировке Base64." - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" -"Требовать IP-адреса и префиксы, которые разрешено использовать этому " -"одноранговому узлу внутри туннеля. Обычно туннельные IP-адреса однорангового " -"узла и сети одноранговых маршрутов через туннель." - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" -"Требуется 'полная' версия wpad/hostapd и поддержка со стороны WiFi драйвера " -"в
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" -"Требуется поддержка внешней сетью DNSSEC; убедитесь, что ответы " -"неподписанного домена — действительно поступают от неподписанных доменов." - -msgid "Reset" -msgstr "Сбросить" - -msgid "Reset Counters" -msgstr "Сбросить счётчики" - -msgid "Reset to defaults" -msgstr "Сбросить на значения по умолчанию" - -msgid "Resolv and Hosts Files" -msgstr "Файлы resolv и hosts" - -msgid "Resolve file" -msgstr "Файл resolv" - -msgid "Restart" -msgstr "Перезапустить" - -msgid "Restart Firewall" -msgstr "Перезапустить межсетевой экран" - -msgid "Restart radio interface" -msgstr "Перезапустить радио-интерфейс" - -msgid "Restore" -msgstr "Восстановление" - -msgid "Restore backup" -msgstr "Восстановить резервную копию" - -msgid "Reveal/hide password" -msgstr "Показать/скрыть пароль" - -msgid "Revert" -msgstr "Вернуть" - -msgid "Revert changes" -msgstr "Вернуть изменения" - -msgid "Revert request failed with status %h" -msgstr "Ошибка %h отмены конфигурации" - -msgid "Reverting configuration…" -msgstr "Отмена конфигурации..." - -msgid "Root" -msgstr "Корень" - -msgid "Root directory for files served via TFTP" -msgstr "Корневая директория для файлов сервера, вроде TFTP" - -msgid "Root preparation" -msgstr "Подготовка корневой директории" - -msgid "Route Allowed IPs" -msgstr "Маршрут разрешенный для IP адресов" - -msgid "Route type" -msgstr "Тип маршрута" - -msgid "Router Advertisement-Service" -msgstr "Доступные режимы работы" - -msgid "Router Password" -msgstr "Пароль маршрутизатора" - -msgid "Routes" -msgstr "Маршруты" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Маршрутизация служит для определения через, какой интерфейс и шлюз можно " -"достичь определенного хоста или сети." - -msgid "Run a filesystem check before mounting the device" -msgstr "Проверять файловую систему перед монтированием раздела." - -msgid "Run filesystem check" -msgstr "Проверить" - -msgid "SHA256" -msgstr "SHA256" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "Доступ по SSH" - -msgid "SSH server address" -msgstr "Адрес сервера SSH" - -msgid "SSH server port" -msgstr "Порт сервера SSH" - -msgid "SSH username" -msgstr "SSH логин" - -msgid "SSH-Keys" -msgstr "SSH-ключи" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Сохранить" - -msgid "Save & Apply" -msgstr "Сохранить и применить" - -msgid "Scan" -msgstr "Поиск" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Запланированные задания" - -msgid "Section added" -msgstr "Строки добавлены" - -msgid "Section removed" -msgstr "Строки удалены" - -msgid "See \"mount\" manpage for details" -msgstr "Для подробной информации обратитесь к справке по 'mount' (man mount)." - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Отправлять эхо-пакеты LCP с указанным интервалом (секунды), эффективно " -"только в сочетании с порогом ошибок." - -msgid "Separate Clients" -msgstr "Разделять клиентов" - -msgid "Server Settings" -msgstr "Настройки сервера" - -msgid "Service Name" -msgstr "Имя службы" - -msgid "Service Type" -msgstr "Тип службы" - -msgid "Services" -msgstr "Сервисы" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" -"Автоматически активировать соединение, при подключении в разъем кабеля." - -msgid "Set up Time Synchronization" -msgstr "Настройка синхронизации времени" - -msgid "Setting PLMN failed" -msgstr "Ошибка установки PLMN" - -msgid "Setting operation mode failed" -msgstr "Ошибка установки режима работы" - -msgid "Setup DHCP Server" -msgstr "Настроить сервер DHCP" - -msgid "Severely Errored Seconds (SES)" -msgstr "Секунды с большим числом ошибок (SES)." - -msgid "Short GI" -msgstr "Short GI" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "Показать текущий список файлов резервной копии" - -msgid "Shutdown this interface" -msgstr "Выключить этот интерфейс" - -msgid "Signal" -msgstr "Сигнал" - -msgid "Signal Attenuation (SATN)" -msgstr "Затухание сигнала (SATN)" - -msgid "Signal:" -msgstr "Сигнал:" - -msgid "Size" -msgstr "Размер" - -msgid "Size (.ipk)" -msgstr "Размер (.ipk)" - -msgid "Size of DNS query cache" -msgstr "Размер кэша DNS запроса" - -msgid "Skip" -msgstr "Пропустить" - -msgid "Skip to content" -msgstr "Перейти к содержимому" - -msgid "Skip to navigation" -msgstr "Перейти к навигации" - -msgid "Slot time" -msgstr "Время слота" - -msgid "Software" -msgstr "Программное обеспечение" - -msgid "Software VLAN" -msgstr "Программное обеспечение VLAN" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Некоторые значения полей недопустимы, невозможно сохранить информацию!" - -msgid "Sorry, the object you requested was not found." -msgstr "Извините, запрошенный объект не был найден." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Извините, сервер столкнулся с неожиданной ошибкой." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"К сожалению, автоматическое обновление не поддерживается, новая прошивка " -"должна быть установлена вручную. Обратитесь к wiki для получения конкретных " -"инструкций для вашего устройства." - -msgid "Source" -msgstr "Источник" - -msgid "Specifies the directory the device is attached to" -msgstr "Папка, к которой монтируется раздел устройства." - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Порт данного процесса Dropbear." - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Максимальное количество неудачных запросов ARP, после которого узлы " -"считаются отключенными." - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Максимальное количество секунд, после которого узлы считаются отключёнными." - -msgid "Specify a TOS (Type of Service)." -msgstr "Укажите TOS (Тип обслуживания)." - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" -"Укажите значение TTL (Время Жизни) для инкапсуляции пакетов, по умолчанию " -"(64)." - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" -"Укажите MTU (Максимальный Объем Данных), отличный от стандартного (1280 " -"байт)." - -msgid "Specify the secret encryption key here." -msgstr "Укажите закрытый ключ." - -msgid "Start" -msgstr "Старт" - -msgid "Start priority" -msgstr "Приоритет" - -msgid "Starting configuration apply…" -msgstr "Применение конфигурации..." - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "Загрузка" - -msgid "Static IPv4 Routes" -msgstr "Статические маршруты IPv4" - -msgid "Static IPv6 Routes" -msgstr "Статические маршруты IPv6" - -msgid "Static Leases" -msgstr "Постоянные аренды" - -msgid "Static Routes" -msgstr "Статические маршруты" - -msgid "Static address" -msgstr "Статический адрес" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Постоянная аренда используется для присвоения фиксированных IP-адресов и " -"имён DHCP-клиентам. Постоянная аренда также необходима для статических " -"интерфейсов, в которых обслуживаются только клиенты с присвоенными адресами." - -msgid "Status" -msgstr "Состояние" - -msgid "Stop" -msgstr "Остановить" - -msgid "Strict order" -msgstr "Строгий порядок" - -msgid "Submit" -msgstr "Применить" - -msgid "Suppress logging" -msgstr "Подавить логирование" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "Подавить логирование стандартной работы этих протоколов." - -msgid "Swap" -msgstr "Раздел подкачки (Swap)" - -msgid "Swap Entry" -msgstr "Настройка config файла fstab (/etc/config/fstab)" - -msgid "Switch" -msgstr "Коммутатор" - -msgid "Switch %q" -msgstr "Коммутатор %q" - -msgid "Switch %q (%s)" -msgstr "Коммутатор %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" -"Коммутатор %q имеет неизвестную топологию — настройки VLAN не могут быть " -"точными." - -msgid "Switch Port Mask" -msgstr "Изменить маску порта" - -msgid "Switch VLAN" -msgstr "Изменить VLAN" - -msgid "Switch protocol" -msgstr "Изменить протокол" - -msgid "Sync with browser" -msgstr "Синхронизировать с браузером" - -msgid "Synchronizing..." -msgstr "Синхронизация..." - -msgid "System" -msgstr "Система" - -msgid "System Log" -msgstr "Системный журнал" - -msgid "System Properties" -msgstr "Свойства системы" - -msgid "System log buffer size" -msgstr "Размер системного журнала" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Настройки TFTP" - -msgid "TFTP server root" -msgstr "TFTP сервер root" - -msgid "TX" -msgstr "Передача (TX)" - -msgid "TX Rate" -msgstr "Cкорость передачи" - -msgid "Table" -msgstr "Таблица" - -msgid "Target" -msgstr "Назначение" - -msgid "Target network" -msgstr "Сеть назначения" - -msgid "Terminate" -msgstr "Завершить" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Вкладка меню 'Настройка устройства' содержит физические настройки " -"радиооборудования, такие как канал, мощность передачи или выбор антенны, " -"которые совместно используются всеми настроенными беспроводными сетями (если " -"радиооборудование поддерживает несколько SSID). Параметры сети, такие как " -"шифрование или режим работы, смотрите на вкладке 'Настройка сети'." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Пакет libiwinfo-lua не установлен. Для включения настроек " -"беспроводных сетей, вам необходимо установить этот компонент!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" -"HE.net конфигурация обновления конечной точки изменена, теперь вы должны " -"использовать простое имя пользователя вместо ID пользователя!" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "IPv4-адрес или полное доменное имя удаленного конца туннеля." - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Назначенный провайдеру префикс IPv6, обычно заканчивается на ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Допустимые символы: A-Z, a-z, 0-9 и " -"_" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "Архив резервной копии не является правильным gzip файлом." - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "Не удалось загрузить config файл из-за следующей ошибки:" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" -"Устройство недоступно в течение %d секунд после применения изменений. Это " -"привело к откату конфигурации из соображений безопасности. Если вы считаете, " -"что конфигурация верна, выполните настройку без проверки. Кроме того, вы " -"можете отклонить это предупреждение и отредактировать изменения перед " -"попыткой применить конфигурацию снова или отктить все изменения чтобы " -"сохранить рабочее состояние конфигурации." - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Устройство или раздел (напр. /dev/" -"sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Файловая система (напр. ext3)." - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Образ загружен. Сравните размер файла и контрольную сумму, чтобы " -"удостовериться в целостности данных.
    Нажмите 'Продолжить', чтобы " -"начать процедуру обновления прошивки." - -msgid "The following changes have been reverted" -msgstr "Ваши настройки были отвергнуты." - -msgid "The following rules are currently active on this system." -msgstr "На данном устройстве активны следующие правила." - -msgid "The given network name is not unique" -msgstr "Заданное имя сети не является уникальным." - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Аппаратное обеспечение не поддерживает Multi-SSID, и существующие настройки " -"будут изаменены, если вы продолжите." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" -"Длина префикса IPv4 в битах, оставшееся будет использоваться в IPv6-адресах." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Длина префикса IPv6 в битах" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "Локальный адрес IPv4, по которому создается туннель (необязательно)." - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Сетевые порты этого устройства могут быть объединены в несколько VLANов, в которых компьютеры могут " -"связываться напрямую между собой. VLANы часто используются для разделения нескольких сетевых " -"сегментов. Обычно по умолчанию используется один порт для подключения к " -"внешней сети, например к Интернету и другие порты предназначенные для " -"внутренней — локальной сети." - -msgid "The selected protocol needs a device assigned" -msgstr "Для выбранного протокола необходимо задать устройство" - -msgid "The submitted security token is invalid or already expired!" -msgstr "Представленный маркер безопасности недействителен или уже истек!" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "Идёт удаление настроек раздела с последующей перезагрузкой системы." - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Сейчас система перепрошивается.
    НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!
    Подождите несколько минут, прежде чем попытаться соединится. Возможно, " -"потребуется обновить адрес компьютера, чтобы снова подключится к устройству, " -"в зависимости от настроек." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Загруженный файл прошивки не поддерживается. Проверьте, что вы загрузили " -"подходящую прошивку для чипа вашего устройства." - -msgid "There are no active leases." -msgstr "Нет активных арендованных адресов." - -msgid "There are no changes to apply." -msgstr "Нет изменений для применения." - -msgid "There are no pending changes to revert!" -msgstr "Нет изменений, которые можно отменить!" - -msgid "There are no pending changes!" -msgstr "Нет изменений, которые можно применить!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Устройство не назначено. Назначьте сетевое устройство на странице 'Настройки " -"канала'." - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Пароль пользователя root не установлен. Установите пароль, чтобы защитить " -"веб-интерфейс и включить SSH." - -msgid "This IPv4 address of the relay" -msgstr "IPv4-адрес ретранслятора" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" -"Этот файл может содержать такие строки, как 'server=/domain/1.2.3.4' или " -"'server=1.2.3.4' fordomain-specific или полный список внешней сети DNS servers." - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Настройка данного config файла, позволит пользователю создать резервную " -"копию своих настроек. Копируются config файлы из папки /etc/config и " -"некоторые другие. При перепрошивке устройства sysupgrade-совместимым " -"образом, вы сможете воспользоваться резервной копией своих настроек." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" -"Это либо \"Update Key\", настроенный для туннеля, либо пароль учетной " -"записи, если ключ обновления не был настроен." - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Cодержимое config файла /etc/rc.local. Вы можете добавить свои команды " -"(перед 'exit 0'), чтобы выполнить их во время загрузки устройства." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" -"Это локальный адрес, назначенный туннельным брокером, обычно заканчивается " -"на ...:2/64." - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Это единственный DHCP-сервер в локальной сети." - -msgid "This is the plain username for logging into the account" -msgstr "Это просто имя пользователя, для входа в учетную запись." - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" -"Это префикс, направлен вам брокером туннелей для использования клиентами." - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Содержимое файла /etc/crontabs/root (задания crontab). Здесь вы можете " -"запланировать ваши задания." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "Это адрес ближайшей точки присутствия туннельного брокера." - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "Страница содержит работающие процессы и их состояние." - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Страница содержит список всех активных на данный момент сетевых соединений." - -msgid "This section contains no values yet" -msgstr "Здесь не содержатся необходимые значения" - -msgid "Time Synchronization" -msgstr "Синхронизация времени" - -msgid "Time Synchronization is not configured yet." -msgstr "Синхронизация времени ещё не настроена." - -msgid "Timezone" -msgstr "Часовой пояс" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Чтобы восстановить config файлы, ваши настройки прошивки устройства, вы " -"можете загрузить ранее созданный вами архив здесь. Для сброса настроек " -"прошивки к исходному состоянию нажмите 'Выполнить сброс' (возможно только " -"для squashfs-образов)." - -msgid "Tone" -msgstr "Тон" - -msgid "Total Available" -msgstr "Всего доступно" - -msgid "Traceroute" -msgstr "Трассировка" - -msgid "Traffic" -msgstr "Трафик" - -msgid "Transfer" -msgstr "Передача" - -msgid "Transmission Rate" -msgstr "Скорость передачи" - -msgid "Transmit" -msgstr "Передача" - -msgid "Transmit Power" -msgstr "Мощность передатчика" - -msgid "Transmitter Antenna" -msgstr "Передающая антенна" - -msgid "Trigger" -msgstr "Назначить" - -msgid "Trigger Mode" -msgstr "Режим работы" - -msgid "Tunnel ID" -msgstr "Идентификатор туннеля" - -msgid "Tunnel Interface" -msgstr "Интерфейс туннеля" - -msgid "Tunnel Link" -msgstr "Ссылка на туннель" - -msgid "Tx-Power" -msgstr "Мощность передатчика" - -msgid "Type" -msgstr "Тип" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Только UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB устройство" - -msgid "USB Ports" -msgstr "USB порты" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "Невозможно определить имя устройства" - -msgid "Unable to determine external IP address" -msgstr "Невозможно определить внешний IP-адрес" - -msgid "Unable to determine upstream interface" -msgstr "Невозможно определить основной интерфейс" - -msgid "Unable to dispatch" -msgstr "Невозможно обработать запрос для" - -msgid "Unable to obtain client ID" -msgstr "Невозможно получить идентификатор клиента" - -msgid "Unable to resolve AFTR host name" -msgstr "Не удалось разрешить AFTR имя хоста" - -msgid "Unable to resolve peer host name" -msgstr "Не удалось разрешить имя хоста пира" - -msgid "Unavailable Seconds (UAS)" -msgstr "Секунды неготовности (UAS)" - -msgid "Unknown" -msgstr "Неизвестно" - -msgid "Unknown Error, password not changed!" -msgstr "Неизвестная ошибка, пароль не был изменен!" - -msgid "Unknown error (%s)" -msgstr "Неизвестная ошибка (%s)" - -msgid "Unmanaged" -msgstr "Неуправляемый" - -msgid "Unmount" -msgstr "Отмонтировать" - -msgid "Unsaved Changes" -msgstr "Непринятые изменения" - -msgid "Unsupported MAP type" -msgstr "Неподдерживаемый тип MAP" - -msgid "Unsupported modem" -msgstr "Неподдерживаемый модем" - -msgid "Unsupported protocol type." -msgstr "Неподдерживаемый тип протокола." - -msgid "Up" -msgstr "Вверх" - -msgid "Update lists" -msgstr "Обновить списки" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Загрузите sysupgrade-совместимый образ, чтобы заменить текущую прошивку " -"устройства. Поставьте галочку 'Сохранить настройки', чтобы сохранить текущие " -"config файлы — ваши настройки устройства (требуется совместимый образ " -"прошивки)." - -msgid "Upload archive..." -msgstr "Загрузка архива..." - -msgid "Uploaded File" -msgstr "Загруженный файл" - -msgid "Uptime" -msgstr "Время работы" - -msgid "Use /etc/ethers" -msgstr "Использовать /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Использовать шлюз DHCP" - -msgid "Use DNS servers advertised by peer" -msgstr "Использовать объявляемые узлом DNS сервера" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Использовать коды стран ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "Использовать MTU на интерфейсе туннеля" - -msgid "Use TTL on tunnel interface" -msgstr "Использовать TTL на интерфейсе туннеля" - -msgid "Use as external overlay (/overlay)" -msgstr "Использовать как внешний overlay (/overlay)" - -msgid "Use as root filesystem (/)" -msgstr "Использовать как корень (/)" - -msgid "Use broadcast flag" -msgstr "Использовать широковещательный флаг" - -msgid "Use builtin IPv6-management" -msgstr "Использовать встроенный IPv6-менеджмент" - -msgid "Use custom DNS servers" -msgstr "Использовать собственные DNS сервера" - -msgid "Use default gateway" -msgstr "Использовать шлюз по умолчанию" - -msgid "Use gateway metric" -msgstr "Использовать метрику шлюза" - -msgid "Use routing table" -msgstr "Использовать таблицу маршрутизации" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Нажмите кнопку 'Добавить', чтобы добавить новую запись аренды. " -"'MAC-адрес' идентифицирует хост, 'IPv4-адрес' указывает " -"фиксированный адрес, а 'Имя хоста' присваивается в качестве " -"символьного имени для запрашивающего хоста. Необязательно 'Время аренды " -"адреса' может быть использовано для того, чтобы установить " -"индивидуальное время аренды, например 12h, 3d или бесконечное." - -msgid "Used" -msgstr "Использовано" - -msgid "Used Key Slot" -msgstr "Используемый слот ключа" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" -"Используется для двух различных целей: RADIUS NAS ID и 802.11r R0KH-ID. Не " -"используется с обычным WPA(2)-PSK." - -msgid "User certificate (PEM encoded)" -msgstr "Сертификат пользователя (PEM encoded)" - -msgid "User key (PEM encoded)" -msgstr "Ключ пользователя (PEM encoded)" - -msgid "Username" -msgstr "Имя пользователя" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "VLANы на %q" - -msgid "VLANs on %q (%s)" -msgstr "VLANы на %q (%s)" - -msgid "VPN Local address" -msgstr "Локальный адрес VPN" - -msgid "VPN Local port" -msgstr "Локальный порт VPN" - -msgid "VPN Server" -msgstr "Сервер VPN" - -msgid "VPN Server port" -msgstr "Порт VPN сервера" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "Сертификат SHA1 hash VPN сервера" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "VPNC (CISCO 3000 (and others) VPN)" - -msgid "Vendor" -msgstr "Производитель (Vendor)" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" -"Класс производителя (Vendor class), который отправлять при DHCP-запросах" - -msgid "Verify" -msgstr "Проверить" - -msgid "Version" -msgstr "Версия" - -msgid "Virtual dynamic interface" -msgstr "Виртуальный динамический винтерфейс" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Открытая система WEP" - -msgid "WEP Shared Key" -msgstr "Общий ключ WEP" - -msgid "WEP passphrase" -msgstr "Пароль WEP" - -msgid "WMM Mode" -msgstr "Режим WMM" - -msgid "WPA passphrase" -msgstr "Пароль WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"Необходимо установить wpa_supplicant (режим клиента) или hostapd (режим " -"точки доступа или ad-hoc) для поддержки шифрования WPA." - -msgid "Waiting for changes to be applied..." -msgstr "Ожидание применения изменений..." - -msgid "Waiting for command to complete..." -msgstr "Ожидание завершения выполнения команды..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "Ожидание применения конфигурации... %d сек." - -msgid "Waiting for device..." -msgstr "Ожидание подключения устройства..." - -msgid "Warning" -msgstr "Внимание" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" -"Предупреждение: Есть не сохраненные изменения, которые будут потеряны при " -"перезагрузке!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "При использовании PSK, PMK может быть создан локально, без AP в связи." - -msgid "Width" -msgstr "Ширина" - -msgid "WireGuard VPN" -msgstr "WireGuard VPN" - -msgid "Wireless" -msgstr "Wi-Fi" - -msgid "Wireless Adapter" -msgstr "Беспроводной адаптер" - -msgid "Wireless Network" -msgstr "Беспроводная сеть" - -msgid "Wireless Overview" -msgstr "Список беспроводных сетей" - -msgid "Wireless Security" -msgstr "Безопасность беспроводной сети" - -msgid "Wireless is disabled" -msgstr "Беспроводная сеть отключена" - -msgid "Wireless is not associated" -msgstr "Беспроводная сеть не связана" - -msgid "Wireless is restarting..." -msgstr "Беспроводная сеть перезапускается..." - -msgid "Wireless network is disabled" -msgstr "Беспроводная сеть отключена" - -msgid "Wireless network is enabled" -msgstr "Беспроводная сеть включена" - -msgid "Write received DNS requests to syslog" -msgstr "Записывать полученные DNS-запросы в системный журнал." - -msgid "Write system log to file" -msgstr "Записывать системные события в файл" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Здесь вы можете включить или выключить установленные скрипты инициализации. " -"Изменения вступят в силу после перезагрузки устройства. Внимание: " -"если вы выключите один из основных скриптов инициализации (например " -"'network'), ваше устройство может оказаться недоступным!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Вам необходимо включить JavaScript в вашем браузере для корректной работы " -"LuCI." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"Ваш Internet Explorer слишком стар, чтобы отобразить эту страницу правильно. " -"Обновите его до версии 7 или используйте другой браузер, например Firefox, " -"Opera или Safari." - -msgid "any" -msgstr "любой" - -msgid "auto" -msgstr "авто" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "соед. мостом" - -msgid "create" -msgstr "создать" - -msgid "create:" -msgstr "создать:" - -msgid "creates a bridge over specified interface(s)" -msgstr "Создаёт мост для выбранных сетевых интерфейсов." - -msgid "dB" -msgstr "дБ" - -msgid "dBm" -msgstr "дБм" - -msgid "disable" -msgstr "отключить" - -msgid "disabled" -msgstr "отключено" - -msgid "expired" -msgstr "истекло" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Файл, где хранятся арендованные DHCP-адреса." - -msgid "forward" -msgstr "перенаправить" - -msgid "full-duplex" -msgstr "полный дуплекс" - -msgid "half-duplex" -msgstr "полудуплекс" - -msgid "hidden" -msgstr "скрытый" - -msgid "hybrid mode" -msgstr "гибридный режим" - -msgid "if target is a network" -msgstr "если сеть" - -msgid "input" -msgstr "ввод" - -msgid "kB" -msgstr "кБ" - -msgid "kB/s" -msgstr "кБ/с" - -msgid "kbit/s" -msgstr "кбит/с" - -msgid "local DNS file" -msgstr "Локальный DNS-файл." - -msgid "minutes" -msgstr "минут(ы)" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "нет" - -msgid "no link" -msgstr "нет соединения" - -msgid "none" -msgstr "ничего" - -msgid "not present" -msgstr "не существует" - -msgid "off" -msgstr "выключено" - -msgid "on" -msgstr "включено" - -msgid "open" -msgstr "открыть" - -msgid "output" -msgstr "вывод" - -msgid "overlay" -msgstr "overlay" - -msgid "random" -msgstr "случайно" - -msgid "relay mode" -msgstr "режим передачи" - -msgid "routed" -msgstr "маршрутизируемый" - -msgid "server mode" -msgstr "режим сервера" - -msgid "stateful-only" -msgstr "stateful-only" - -msgid "stateless" -msgstr "stateless" - -msgid "stateless + stateful" -msgstr "stateless + stateful" - -msgid "tagged" -msgstr "с тегом" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "единицы измерения времени (TUs / 1.024 ms) [1000-65535]" - -msgid "unknown" -msgstr "неизвестный" - -msgid "unlimited" -msgstr "неограниченный" - -msgid "unspecified" -msgstr "не определено" - -msgid "unspecified -or- create:" -msgstr "не определено -или- создать:" - -msgid "untagged" -msgstr "без тега" - -msgid "yes" -msgstr "да" - -msgid "« Back" -msgstr "« Назад" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Активировать эту сеть" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Беспроводной 802.11b контроллер Hermes" - -#~ msgid "Interface is shutting down..." -#~ msgstr "Интерфейс отключается..." - -#~ msgid "Interface reconnected" -#~ msgstr "Интерфейс переподключен" - -#~ msgid "Interface shut down" -#~ msgstr "Интерфейс отключен" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Беспроводной 802.11b контроллер Prism2/2.5/3" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "Беспроводной 802.11%s контроллер RaLink" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "Действительно отключить интерфейс \"%s\"? Вы можете потерять доступ к " -#~ "этому устройству, если вы подключены через этот интерфейс." - -#~ msgid "Reconnecting interface" -#~ msgstr "Интерфейс переподключается" - -#~ msgid "Shutdown this network" -#~ msgstr "Выключить эту сеть" - -#~ msgid "Wireless restarted" -#~ msgstr "Беспроводная сеть перезапущена" - -#~ msgid "Wireless shut down" -#~ msgstr "Выключение беспроводной сети" - -#~ msgid "DHCP Leases" -#~ msgstr "Аренды DHCP" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "Аренды DHCPv6" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "Действительно удалить этот интерфейс? Удаление не может быть отменено!" -#~ "\\nВы можете потерять доступ к этому устройству, если вы подключены через " -#~ "этот интерфейс." - -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "Действительно отключить сеть? Вы можете потерять доступ к этому " -#~ "устройству, если вы подключены через этот интерфейс." - -#~ msgid "Sort" -#~ msgstr "Сортировка" - -#~ msgid "help" -#~ msgstr "помощь" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "Состояние IPv4 WAN" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "Состояние IPv6 WAN" diff --git a/luci-base/po/sk/base.po b/luci-base/po/sk/base.po deleted file mode 100644 index 7cf9f6feb..000000000 --- a/luci-base/po/sk/base.po +++ /dev/null @@ -1,3845 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Project-Id-Version: PACKAGE VERSION\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"MIME-Version: 1.0\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "" - -msgid "(%s available)" -msgstr "" - -msgid "(empty)" -msgstr "" - -msgid "(no interfaces attached)" -msgstr "" - -msgid "-- Additional Field --" -msgstr "" - -msgid "-- Please choose --" -msgstr "" - -msgid "-- custom --" -msgstr "" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "" - -msgid "15 Minute Load:" -msgstr "" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "DNS query port" -msgstr "" - -msgid "DNS server port" -msgstr "" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-Gateway" -msgstr "" - -msgid "IPv4-Netmask" -msgstr "" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" - -msgid "IPv6-Gateway" -msgstr "" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "" - -msgid "LED Name" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "" - -msgid "Actions" -msgstr "" - -msgid "Active IPv4-Routes" -msgstr "" - -msgid "Active IPv6-Routes" -msgstr "" - -msgid "Active Connections" -msgstr "" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "" - -msgid "Additional Hosts files" -msgstr "" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "" - -msgid "Advanced Settings" -msgstr "" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "" - -msgid "Antenna 2" -msgstr "" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "" - -msgid "Authorization Required" -msgstr "" - -msgid "Auto Refresh" -msgstr "" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "" - -msgid "Available packages" -msgstr "" - -msgid "Average:" -msgstr "" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "Back" -msgstr "" - -msgid "Back to Overview" -msgstr "" - -msgid "Back to configuration" -msgstr "" - -msgid "Back to overview" -msgstr "" - -msgid "Back to scan results" -msgstr "" - -msgid "Backup" -msgstr "" - -msgid "Backup / Flash Firmware" -msgstr "" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "" - -msgid "Bridge interfaces" -msgstr "" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "" - -msgid "Changes" -msgstr "" - -msgid "Changes applied." -msgstr "" - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "" - -msgid "Channel" -msgstr "" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Common Configuration" -msgstr "" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "" - -msgid "Connect" -msgstr "" - -msgid "Connected" -msgstr "" - -msgid "Connection Limit" -msgstr "" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" - -msgid "DHCP Server" -msgstr "" - -msgid "DHCP and DNS" -msgstr "" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Delete this network" -msgstr "" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Design" -msgstr "" - -msgid "Destination" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Device Configuration" -msgstr "" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "" - -msgid "Distance to farthest network member in meters." -msgstr "" - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "" - -msgid "Ethernet Switch" -msgstr "" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Filter" -msgstr "" - -msgid "Filter private" -msgstr "" - -msgid "Filter useless" -msgstr "" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "" - -msgid "Firewall Status" -msgstr "" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hide ESSID" -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "" - -msgid "Ignore resolve file" -msgstr "" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "" - -msgid "Install" -msgstr "" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "" - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "" - -msgid "Logout" -msgstr "" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "" - -msgid "MAC-Filter" -msgstr "" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory usage (%)" -msgstr "" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "OPKG-Configuration" -msgstr "" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Owner" -msgstr "" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "" - -msgid "Packets" -msgstr "" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Password authentication" -msgstr "" - -msgid "Password of Private Key" -msgstr "" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "References" -msgstr "" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "" - -msgid "Reset Counters" -msgstr "" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "" - -msgid "Restart Firewall" -msgstr "" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "" - -msgid "Restore backup" -msgstr "" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Save & Apply" -msgstr "" - -msgid "Scan" -msgstr "" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "" - -msgid "Skip to navigation" -msgstr "" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "" - -msgid "Start priority" -msgstr "" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "" - -msgid "Static IPv6 Routes" -msgstr "" - -msgid "Static Leases" -msgstr "" - -msgid "Static Routes" -msgstr "" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "" - -msgid "Submit" -msgstr "" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "" - -msgid "System Log" -msgstr "" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "" - -msgid "Transfer" -msgstr "" - -msgid "Transmission Rate" -msgstr "" - -msgid "Transmit" -msgstr "" - -msgid "Transmit Power" -msgstr "" - -msgid "Transmitter Antenna" -msgstr "" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "" - -msgid "Uptime" -msgstr "" - -msgid "Use /etc/ethers" -msgstr "" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "" - -msgid "Wireless Network" -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Wireless Security" -msgstr "" - -msgid "Wireless is disabled" -msgstr "" - -msgid "Wireless is not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "" diff --git a/luci-base/po/sv/base.po b/luci-base/po/sv/base.po deleted file mode 100644 index 76b582590..000000000 --- a/luci-base/po/sv/base.po +++ /dev/null @@ -1,3917 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-04-28 09:22+0200\n" -"Last-Translator: Kristoffer Grundström \n" -"Language-Team: none\n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s är inte taggad i flera VLAN!" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d minut-fönster, %d sekundintervall)" - -msgid "(%s available)" -msgstr "(%s tillgängligt)" - -msgid "(empty)" -msgstr "(tomt)" - -msgid "(no interfaces attached)" -msgstr "(inga gränssnitt har bifogats)" - -msgid "-- Additional Field --" -msgstr "-- Ytterligare fält --" - -msgid "-- Please choose --" -msgstr "-- Vänligen välj --" - -msgid "-- custom --" -msgstr "-- anpassad --" - -msgid "-- match by device --" -msgstr "-- matcha enligt enhet --" - -msgid "-- match by label --" -msgstr "-- matcha enligt märke --" - -msgid "-- match by uuid --" -msgstr "-- matcha enligt uuid --" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "Belastning senaste minuten:" - -msgid "15 Minute Load:" -msgstr "Belastning senaste 15 minutrarna:" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "Belastning senaste 5 minutrarna:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "802.11r Snabb förvandling" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "" - -msgid "DNS server port" -msgstr "DNSserver-port" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-adress" - -# I don't think "Gateway" is commonly translated. -msgid "IPv4-Gateway" -msgstr "IPv4-gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-nätmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-adress eller nätverk " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED-konfiguration" - -msgid "LED Name" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    Notera att: du måste starta om cron-tjänsten om crontab-filen var tom " -"innan den ändrades." - -msgid "A43C + J43 + A43" -msgstr "A43C + J43 + A43" - -msgid "A43C + J43 + A43 + V43" -msgstr "A43C + J43 + A43 + V43" - -msgid "ADSL" -msgstr "ADSL" - -msgid "ANSI T1.413" -msgstr "ANSI T1.413" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM-bryggor" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "Accesspunkt" - -msgid "Actions" -msgstr "Åtgärder" - -msgid "Active IPv4-Routes" -msgstr "Aktiva IPv4-rutter" - -msgid "Active IPv6-Routes" -msgstr "Aktiva IPv6-rutter" - -msgid "Active Connections" -msgstr "Aktiva anslutningar" - -msgid "Active DHCP Leases" -msgstr "Aktiva DHCP-kontrakt" - -msgid "Active DHCPv6 Leases" -msgstr "Aktiva DHCPv6-kontrakt" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Lägg till" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "Lägg till ett nytt gränssnitt" - -msgid "Additional Hosts files" -msgstr "Ytterligare värdfiler" - -msgid "Additional servers file" -msgstr "Ytterligare server-filer" - -msgid "Address" -msgstr "Adress" - -msgid "Address to access local relay bridge" -msgstr "Adress för att komma åt lokal reläbrygga" - -msgid "Administration" -msgstr "Administration" - -msgid "Advanced Settings" -msgstr "Avancerade inställningar" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Varning" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" -"Allokera IP-adresser sekventiellt med start från den lägsta möjliga adressen" - -msgid "Allocate IP sequentially" -msgstr "Allokera IP sekventiellt" - -msgid "Allow SSH password authentication" -msgstr "Tillåt SSH lösenordsautentisering" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Tillåt alla utom listade" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Tillåt enbart listade" - -msgid "Allow localhost" -msgstr "Tillåt localhost" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Tillåt fjärrstyrda värdar att ansluta via SSH till lokalt vidarebefordrade " -"portar" - -msgid "Allow root logins with password" -msgstr "Tillåt root-inloggningar med lösenord" - -msgid "Allow the root user to login with password" -msgstr "Tillåt root-användaren att logga in med lösenord" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "Tillåtna IP-adresser" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "Aviserade DNS-domäner" - -msgid "Announced DNS servers" -msgstr "Aviserade DNS-servrar" - -msgid "Anonymous Identity" -msgstr "Anonym identitet" - -msgid "Anonymous Mount" -msgstr "Anonym montering" - -msgid "Anonymous Swap" -msgstr "Anonym Swap" - -msgid "Antenna 1" -msgstr "Antenn 1" - -msgid "Antenna 2" -msgstr "Antenn 2" - -msgid "Antenna Configuration" -msgstr "Konfiguration av antenn" - -msgid "Any zone" -msgstr "Någon zon" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Tilldela gränssnitten..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "Associerade stationer" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "Autentiseringsgrupp" - -msgid "Authentication" -msgstr "Autentisering" - -msgid "Authentication Type" -msgstr "Typ av autentisering" - -msgid "Authoritative" -msgstr "Auktoritiv" - -msgid "Authorization Required" -msgstr "Tillstånd krävs" - -msgid "Auto Refresh" -msgstr "Uppdatera automatiskt" - -msgid "Automatic" -msgstr "Automatisk" - -msgid "Automatic Homenet (HNCP)" -msgstr "Automatiskt hemnet (HNCP)" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "Kolla efter fel i filsystemet automatiskt innan det monteras" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "Monstera filsystem automatiskt" - -msgid "Automount Swap" -msgstr "Montera Swap automatiskt" - -msgid "Available" -msgstr "Tillgänglig" - -msgid "Available packages" -msgstr "Tillgängliga paket" - -msgid "Average:" -msgstr "Snitt:" - -msgid "B43 + B43C" -msgstr "B43 + B43C" - -msgid "B43 + B43C + V43" -msgstr "B43 + B43C + V43" - -msgid "BR / DMR / AFTR" -msgstr "BR / DMR / AFTR" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Bakåt" - -msgid "Back to Overview" -msgstr "Backa till Överblick" - -msgid "Back to configuration" -msgstr "Backa till konfiguration" - -msgid "Back to overview" -msgstr "Backa till överblick" - -msgid "Back to scan results" -msgstr "Backa till skanningsresultat" - -msgid "Backup" -msgstr "Säkerhetskopiera" - -msgid "Backup / Flash Firmware" -msgstr "Säkerhetskopiera / Flasha inre mjukvara" - -msgid "Backup file list" -msgstr "Säkerhetskopiera fillista" - -msgid "Bad address specified!" -msgstr "Fel adress angiven!" - -msgid "Band" -msgstr "Band" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "Bind gränssnitt" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "Bithastighet" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "Brygga" - -msgid "Bridge interfaces" -msgstr "Brygga gränssnitt" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s Trådlös kontroller" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 Trådlös kontroller" - -msgid "Buffered" -msgstr "Buffrad" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" -"CA-certifikat; om tom så kommer den att sparas efter första anslutningen." - -msgid "CPU usage (%)" -msgstr "CPU-användning (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Avbryt" - -msgid "Category" -msgstr "Kategori" - -msgid "Chain" -msgstr "Kedja" - -msgid "Changes" -msgstr "Ändringar" - -msgid "Changes applied." -msgstr "Tillämpade ändringar" - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "Ändrar administratörens lösenord för att få tillgång till enheten" - -msgid "Channel" -msgstr "Kanal" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "Kontrollera" - -msgid "Check filesystems before mount" -msgstr "Kontrollera filsystemen innan de monteras" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" -"Bocka för det här alternativet för att ta bort befintliga nätverk från den " -"här radion." - -msgid "Checksum" -msgstr "Checksumma" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "Chiffer" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" - -msgid "Client" -msgstr "Klient" - -msgid "Client ID to send when requesting DHCP" -msgstr "Klient-ID att skicka vid DHCP-förfrågning" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "Stäng ner lista..." - -msgid "Collecting data..." -msgstr "Samlar in data..." - -msgid "Command" -msgstr "Kommando" - -msgid "Common Configuration" -msgstr "Vanlig konfiguration" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "Konfigurationsfiler kommer att behållas." - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Bekräftelse" - -msgid "Connect" -msgstr "Anslut" - -msgid "Connected" -msgstr "Ansluten" - -msgid "Connection Limit" -msgstr "Anslutningsgräns" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "Anslutningar" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "Land" - -msgid "Country Code" -msgstr "Landskod" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "" - -msgid "Create Interface" -msgstr "Skapa gränssnitt" - -msgid "Create a bridge over multiple interfaces" -msgstr "Skapa en brygga över flera gränssnitt" - -msgid "Critical" -msgstr "Kritisk" - -msgid "Cron Log Level" -msgstr "Loggnivå för Cron" - -msgid "Custom Interface" -msgstr "Anpassat gränssnitt" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "Anpassade flöden" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" - -msgid "DHCP Server" -msgstr "DHCP-server" - -msgid "DHCP and DNS" -msgstr "DHCP och DNS" - -msgid "DHCP client" -msgstr "DHCP-klient" - -msgid "DHCP-Options" -msgstr "DHCP-alternativ" - -msgid "DHCPv6 client" -msgstr "DHCPv6-klient" - -msgid "DHCPv6-Mode" -msgstr "DHCPv6-läge" - -msgid "DHCPv6-Service" -msgstr "DHCPv6-tjänst" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "DSL-status" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "Datahastighet" - -msgid "Debug" -msgstr "Avlusa" - -msgid "Default %d" -msgstr "Standard %d" - -msgid "Default gateway" -msgstr "Standard gateway" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "Ange ett namn för det här nätverket." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "Radera" - -msgid "Delete this network" -msgstr "Ta bort det här nätverket" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Beskrivning" - -msgid "Design" -msgstr "" - -msgid "Destination" -msgstr "Plats" - -msgid "Device" -msgstr "Enhet" - -msgid "Device Configuration" -msgstr "Enhetskonfiguration" - -msgid "Device is rebooting..." -msgstr "Enheten startar om..." - -msgid "Device unreachable!" -msgstr "Enheten kan inte nås" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "Slå nummer" - -msgid "Directory" -msgstr "Mapp" - -msgid "Disable" -msgstr "Inaktivera" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Inaktivera DHCP " -"för det här gränssnittet." - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "Inaktivera kryptering" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "Inaktiverad" - -msgid "Disabled (default)" -msgstr "Inaktiverad (standard)" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "Avståndsoptimering" - -msgid "Distance to farthest network member in meters." -msgstr "Avstånd till nätverksmledlemmen längst bort i metrar." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Mångfald" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Cachea inte negativa svar, t.ex för icke-existerade domäner" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Vidarebefordra inte förfrågningar som inte kan ta emot svar från publika " -"namnservrar" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Domän krävs" - -msgid "Domain whitelist" -msgstr "Vitlista för domäner" - -msgid "Don't Fragment" -msgstr "Fragmentera inte" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Vidarebefordra inte DNS-" -"förfrågningar utan DNS-namn" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Ladda ner och installera paket" - -msgid "Download backup" -msgstr "Ladda ner säkerhetskopia" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear-instans" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "Dynamisk tunnel" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-metod" - -msgid "Edit" -msgstr "Redigera" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "Redigera det här gränssnittet" - -msgid "Edit this network" -msgstr "Redigera det här nätverket" - -msgid "Emergency" -msgstr "Nödsituation" - -msgid "Enable" -msgstr "Aktivera" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Aktivera STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "Aktivera NTP-klient" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "Aktivera TFTP-server" - -msgid "Enable VLAN functionality" -msgstr "Aktivera VLAN-funktionalitet" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "Aktivera WPS-tryckknapp, kräver WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "Kräver ominstallation av nyckel (KRACK) motåtgärder" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "Aktivera den här monteringen" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "Aktivera den här swap" - -msgid "Enable/Disable" -msgstr "Aktivera/Inaktivera" - -msgid "Enabled" -msgstr "Aktiverad" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "Kryptering" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "Raderar..." - -msgid "Error" -msgstr "Fel" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Ethernet-adapter" - -msgid "Ethernet Switch" -msgstr "" - -msgid "Exclude interfaces" -msgstr "Inkludera inte dessa gränssnitt" - -msgid "Expand hosts" -msgstr "Expandera värdar" - -msgid "Expires" -msgstr "Löper ut" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "Externt" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "Extra alternativ för SSH-kommandot" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "Fil" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "Filsystem" - -msgid "Filter" -msgstr "Filtrera" - -msgid "Filter private" -msgstr "Filtrera privata" - -msgid "Filter useless" -msgstr "Filtrera icke-användbara" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "Hitta och anslut till nätverk" - -msgid "Find package" -msgstr "Hitta paket" - -msgid "Finish" -msgstr "Avsluta" - -msgid "Firewall" -msgstr "Brandvägg" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "Inställningar för brandvägg" - -msgid "Firewall Status" -msgstr "Status för brandvägg" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "Version för inre mjukvara" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "Skriver..." - -msgid "Force" -msgstr "Tvinga" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "Tvinga CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Tvinga DHCP på det här nätverket även om en annan server är upptäckt." - -msgid "Force TKIP" -msgstr "Tvinga TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Tvinga TKIP och CCMP (AES)" - -msgid "Force link" -msgstr "Tvinga länk" - -msgid "Force use of NAT-T" -msgstr "Tvinga användning av NAT-T" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "Vidarebefordra DHCP-trafik" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "Vidarebefordringsläge" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "Fritt" - -msgid "Free space" -msgstr "Fritt utrymme" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "Endast GPRS" - -msgid "Gateway" -msgstr "Gateway" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "Gateway-portar" - -msgid "General Settings" -msgstr "Generella inställningar" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "Generella alternativ för opkg" - -msgid "Generate Config" -msgstr "Generera konfig" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "Generera arkiv" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Angiven lösenordsbekräftelse matchade inte, lösenordet ändrades inte!" - -msgid "Global Settings" -msgstr "Globala inställningar" - -msgid "Global network options" -msgstr "Globala nätverksalternativ" - -msgid "Go to password configuration..." -msgstr "Gå till lösenordskonfiguration..." - -msgid "Go to relevant configuration page" -msgstr "Gå till relevant konfigurationssida" - -msgid "Group Password" -msgstr "Grupplösenord" - -msgid "Guest" -msgstr "Gäst" - -msgid "HE.net password" -msgstr "HE.net-lösenord" - -msgid "HE.net username" -msgstr "HE.net-användarnamn" - -msgid "HT mode (802.11n)" -msgstr "HT-läge (802.11n)" - -msgid "Hang Up" -msgstr "Lägg på" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hide ESSID" -msgstr "Göm ESSID" - -msgid "Host" -msgstr "Värd" - -msgid "Host entries" -msgstr "" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "Host-IP eller Nätverk" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Värdnamn" - -msgid "Hostname to send when requesting DHCP" -msgstr "Värdnamn att skicka vid DHCP-förfrågningar" - -msgid "Hostnames" -msgstr "Värdnamn" - -msgid "Hybrid" -msgstr "Hybrid" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "IP-adresser" - -msgid "IP address" -msgstr "IP-adress" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4-brandvägg" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "IPv4-adress" - -msgid "IPv4 and IPv6" -msgstr "IPv4 och IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "IPv4-gateway" - -msgid "IPv4 netmask" -msgstr "IPv4-nätmask" - -msgid "IPv4 only" -msgstr "Endast IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-Adress" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "IPv4-i-IPv4 (RFC2003)" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6-brandvägg" - -msgid "IPv6 Neighbours" -msgstr "IPV6-grannar" - -msgid "IPv6 Settings" -msgstr "IPv6-inställningar" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "IPv6-adress" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6-gateway" - -msgid "IPv6 only" -msgstr "Endast IPv6" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-adress" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-i-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-över-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-över-IPv4 (6till4)" - -msgid "Identity" -msgstr "Identitet" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "Ignorera /etc/hosts" - -msgid "Ignore interface" -msgstr "Ignorera gränssnitt" - -msgid "Ignore resolve file" -msgstr "Ignorera resolv-fil" - -msgid "Image" -msgstr "Bild" - -msgid "In" -msgstr "I" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "Ankommande" - -msgid "Info" -msgstr "Info" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Initskript" - -msgid "Initscripts" -msgstr "Initskripten" - -msgid "Install" -msgstr "Installera" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "Installera iputils-traceroute6 för IPv6-traceroute" - -msgid "Install package %q" -msgstr "Installera paketet %q" - -msgid "Install protocol extensions..." -msgstr "Installera protokoll-förlängningar..." - -msgid "Installed packages" -msgstr "Installerade paket" - -msgid "Interface" -msgstr "Gränssnitt" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "Konfiguration av gränssnitt" - -msgid "Interface Overview" -msgstr "Överblick av gränssnitt" - -msgid "Interface is reconnecting..." -msgstr "Gränssnittet återansluter..." - -msgid "Interface name" -msgstr "Gränssnittets namn" - -msgid "Interface not present or not connected yet." -msgstr "Gränssnittet är inte närvarande eller är inte anslutet än." - -msgid "Interfaces" -msgstr "Gränssnitten" - -msgid "Internal" -msgstr "Interna" - -msgid "Internal Server Error" -msgstr "Internt server-fel" - -msgid "Invalid" -msgstr "Ogiltig" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Ogiltigt användarnamn och/eller lösenord! Vänligen försök igen." - -msgid "Isolate Clients" -msgstr "Isolera klienter" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "JavaScript krävs!" - -msgid "Join Network" -msgstr "Anslut till nätverk" - -msgid "Join Network: Wireless Scan" -msgstr "Anslut till nätverk: Trådlös skanning" - -msgid "Joining Network: %q" -msgstr "Ansluter till nätverk: %q" - -msgid "Keep settings" -msgstr "Behåll inställningar" - -msgid "Kernel Log" -msgstr "Kernel-logg" - -msgid "Kernel Version" -msgstr "Kernel-version" - -msgid "Key" -msgstr "Nyckel" - -msgid "Key #%d" -msgstr "Nyckel #%d" - -msgid "Kill" -msgstr "Döda" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP-server" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Märke" - -msgid "Language" -msgstr "Språk" - -msgid "Language and Style" -msgstr "Språk och Stil" - -msgid "Latency" -msgstr "Latens" - -msgid "Leaf" -msgstr "Löv" - -msgid "Lease time" -msgstr "Kontraktstid" - -msgid "Lease validity time" -msgstr "Giltighetstid för kontrakt" - -msgid "Leasefile" -msgstr "Kontraktsfil" - -msgid "Leasetime remaining" -msgstr "Återstående kontraktstid" - -msgid "Leave empty to autodetect" -msgstr "Lämna tom för att upptäcka automatiskt" - -msgid "Leave empty to use the current WAN address" -msgstr "Lämna tom för att använda den nuvarande WAN-adressen" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "Begränsa" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Länk På" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "Lista över SSH-nyckelfiler för auth" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "Lyssningsportar" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Lyssna endast på det angivna gränssnittet eller, om o-specificerat på alla" - -msgid "Listening port for inbound DNS queries" -msgstr "Lyssningsportar för ankommande DNS-förfrågningar" - -msgid "Load" -msgstr "Belastning" - -msgid "Load Average" -msgstr "Snitt-belastning" - -msgid "Loading" -msgstr "Laddar" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "Lokal IPv4-adress" - -msgid "Local IPv6 address" -msgstr "Lokal IPv6-adress" - -msgid "Local Service Only" -msgstr "Enbart lokal tjänst" - -msgid "Local Startup" -msgstr "Lokal uppstart" - -msgid "Local Time" -msgstr "Lokal tid" - -msgid "Local domain" -msgstr "Lokal domän" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "Lokal server" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Lokalisera förfrågningar" - -msgid "Locked to channel %s used by: %s" -msgstr "Låst till kanalen %s som används av: %s" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Logga in" - -msgid "Logout" -msgstr "Logga ut" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-adress" - -msgid "MAC-Address Filter" -msgstr "Filter för MAC-adress" - -msgid "MAC-Filter" -msgstr "MAC-filter" - -msgid "MAC-List" -msgstr "MAC-lista" - -msgid "MAP / LW4over6" -msgstr "MAP / LW4över6" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "MD5" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "Manuell" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "Minne" - -msgid "Memory usage (%)" -msgstr "Minnesanvändning (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metrisk" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Läge" - -msgid "Model" -msgstr "Modell" - -msgid "Modem device" -msgstr "Modem-enhet" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Övervaka" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "Monteringspunkt" - -msgid "Mount Points" -msgstr "Monteringspunkter" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "Monteringsalternativ" - -msgid "Mount point" -msgstr "Monteringspunkt" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Monterade filsystem" - -msgid "Move down" -msgstr "Flytta ner" - -msgid "Move up" -msgstr "Flytta upp" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "NAS-ID" - -msgid "NAT-T Mode" -msgstr "NAT-T-läge" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "NCM" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "NT-domän" - -msgid "NTP server candidates" -msgstr "NTP-serverkandidater" - -msgid "Name" -msgstr "Namn" - -msgid "Name of the new interface" -msgstr "Namn på det nya gränssnittet" - -msgid "Name of the new network" -msgstr "Namnet på det nya nätverket" - -msgid "Navigation" -msgstr "Navigering" - -msgid "Netmask" -msgstr "Nätmask" - -msgid "Network" -msgstr "Nätverk" - -msgid "Network Utilities" -msgstr "Nätverksverktyg" - -msgid "Network boot image" -msgstr "Uppstartsbild för nätverket" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "Nätverk utan gränssnitt" - -msgid "Next »" -msgstr "Nästa »" - -msgid "No DHCP Server configured for this interface" -msgstr "Det finns ingen DHCP-server inställd för det här gränssnittet" - -msgid "No NAT-T" -msgstr "Ingen NAT-T" - -msgid "No chains in this table" -msgstr "Inga kedjor i den här tabellen" - -msgid "No files found" -msgstr "Inga filer hittades" - -msgid "No information available" -msgstr "Ingen information tillgänglig" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "Ingen negativ cache" - -msgid "No network configured on this device" -msgstr "Det finns inget nätverk inställt på den här enheten" - -msgid "No network name specified" -msgstr "Inget nätverksnamn angavs" - -msgid "No package lists available" -msgstr "Ingen paketlista tillgänglig" - -msgid "No password set!" -msgstr "Inget lösenord inställt!" - -msgid "No rules in this chain" -msgstr "Inga regler i den här kedjan" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "Buller" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "Buller:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "Ingen" - -msgid "Normal" -msgstr "Normal" - -msgid "Not Found" -msgstr "Hittades inte" - -msgid "Not associated" -msgstr "Inte associerad" - -msgid "Not connected" -msgstr "Inte ansluten" - -msgid "Note: Configuration files will be erased." -msgstr "Notera: Konfigurationsfiler kommer att raderas." - -msgid "Note: interface name length" -msgstr "Notera: längden på gränssnittets namn" - -msgid "Notice" -msgstr "Avisering" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "En utav värdnamn eller MAC-adress måste anges!" - -msgid "One or more fields contain invalid values!" -msgstr "En eller fler fält innehåller ogiltiga värden!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "En eller fler fält som krävs har inget värde!" - -msgid "Open list..." -msgstr "Öppna lista..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "OpenConnect (CISCO AnyConnect)" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "Alternativet ändrades" - -msgid "Option removed" -msgstr "Alternativet togs bort" - -msgid "Optional" -msgstr "Valfri" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Alternativ" - -msgid "Other:" -msgstr "Andra:" - -msgid "Out" -msgstr "Ut" - -msgid "Outbound:" -msgstr "Utgående" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Överblick" - -msgid "Owner" -msgstr "Ägare" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP-lösenord" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP-användarnamn" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN-kod" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Paketet libiwinfo krävs!" - -msgid "Package lists are older than 24 hours" -msgstr "Paket-listor är äldre än 24 timmar" - -msgid "Package name" -msgstr "Paketnamn" - -msgid "Packets" -msgstr "Paket" - -msgid "Part of zone %q" -msgstr "Del av zon %q" - -msgid "Password" -msgstr "Lösenord" - -msgid "Password authentication" -msgstr "Lösenordsautentisering" - -msgid "Password of Private Key" -msgstr "Den privata nyckelns lösenord" - -msgid "Password of inner Private Key" -msgstr "Lösenordet för den inre privata nyckeln" - -msgid "Password successfully changed!" -msgstr "Ändring av lösenordet lyckades!" - -msgid "Password2" -msgstr "Lösenord2" - -msgid "Path to CA-Certificate" -msgstr "Genväg till CA-certifikat" - -msgid "Path to Client-Certificate" -msgstr "Genväg till klient-certifikat" - -msgid "Path to Private Key" -msgstr "Genväg till privat nyckel" - -msgid "Path to inner CA-Certificate" -msgstr "Genväg till det inre CA-certifikatet" - -msgid "Path to inner Client-Certificate" -msgstr "Genväg till det inre klient-certifikatet" - -msgid "Path to inner Private Key" -msgstr "Genväg till den inre privata nyckeln" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Utför omstart" - -msgid "Perform reset" -msgstr "Utför återställning" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Fysiska inställningar" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "Pkt." - -msgid "Please enter your username and password." -msgstr "Vänligen ange ditt användarnamn och lösenord." - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "Port" - -msgid "Port status:" -msgstr "Port-status:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "Föredra LTE" - -msgid "Prefer UMTS" -msgstr "Föredra UMTS" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "Förhindra lyssning på dessa gränssnitt." - -msgid "Prevents client-to-client communication" -msgstr "Förhindrar kommunikation klient-till-klient" - -msgid "Private Key" -msgstr "Privat nyckel" - -msgid "Proceed" -msgstr "Fortsätt" - -msgid "Processes" -msgstr "Processer" - -msgid "Profile" -msgstr "Profil" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protokoll" - -msgid "Protocol family" -msgstr "Protokoll-familj" - -msgid "Protocol of the new interface" -msgstr "Det nya gränssnittets protokoll" - -msgid "Protocol support is not installed" -msgstr "Stöd för protokoll är inte installerat" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "Publik nyckel" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "QMI-telefoni" - -msgid "Quality" -msgstr "Kvalité" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "RT" - -msgid "RX Rate" -msgstr "RX-hastighet" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Läs /etc/ethers för att ställa in DHCP-servern" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "Verkligen återställa alla ändringar?" - -msgid "Really switch protocol?" -msgstr "Verkligen byta protokoll?" - -msgid "Realtime Connections" -msgstr "Anslutningar i realtid" - -msgid "Realtime Graphs" -msgstr "Realtidsgrafer" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "Trafik i realtid" - -msgid "Realtime Wireless" -msgstr "Trådlöst i realtid" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Starta om" - -msgid "Rebooting..." -msgstr "Startar om..." - -msgid "Reboots the operating system of your device" -msgstr "Startar om din enhets operativsystem" - -msgid "Receive" -msgstr "Ta emot" - -msgid "Receiver Antenna" -msgstr "Mottagningsantenn" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "Rekommenderad. WireGuard-gränssnittets IP-adress" - -msgid "Reconnect this interface" -msgstr "Återanslut det här gränssnittet" - -msgid "References" -msgstr "Referens" - -msgid "Relay" -msgstr "Relä" - -msgid "Relay Bridge" -msgstr "Relä-brygga" - -msgid "Relay between networks" -msgstr "Relä mellan nätverk" - -msgid "Relay bridge" -msgstr "Relä-brygga" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Ta bort" - -msgid "Repeat scan" -msgstr "Repetera skanning" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "Ersätt trådlös konfiguration" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "Krävs!" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Återställ" - -msgid "Reset Counters" -msgstr "Återställ räknare" - -msgid "Reset to defaults" -msgstr "Återställ till standard" - -msgid "Resolv and Hosts Files" -msgstr "Resolv och Värd-filer" - -msgid "Resolve file" -msgstr "Resolv-fil" - -msgid "Restart" -msgstr "Starta om" - -msgid "Restart Firewall" -msgstr "Starta om brandvägg" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Återställ" - -msgid "Restore backup" -msgstr "Återställ säkerhetskopian" - -msgid "Reveal/hide password" -msgstr "Visa/göm lösenord" - -msgid "Revert" -msgstr "Återgå" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "Root-mappen för filer som skickas via TFTP" - -msgid "Root preparation" -msgstr "Root-förberedelse" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "Typ av rutt" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Router-lösenord" - -msgid "Routes" -msgstr "Rutter" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "Kör en filsystemskontroll innan enheten monteras" - -msgid "Run filesystem check" -msgstr "Kör filsystemskontrollen" - -msgid "SHA256" -msgstr "SHA256" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "SSH-åtkomst" - -msgid "SSH server address" -msgstr "SSH-serverns adress" - -msgid "SSH server port" -msgstr "SSH-serverns port" - -msgid "SSH username" -msgstr "Användarnamn för SSH" - -msgid "SSH-Keys" -msgstr "SSH-nycklar" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Spara" - -msgid "Save & Apply" -msgstr "Spara och Verkställ" - -msgid "Scan" -msgstr "Skanna" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Schemalagda uppgifter" - -msgid "Section added" -msgstr "Sektionen lades till" - -msgid "Section removed" -msgstr "Sektionen togs bort" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Separera klienter" - -msgid "Server Settings" -msgstr "Inställningar för server" - -msgid "Service Name" -msgstr "Namn på tjänst" - -msgid "Service Type" -msgstr "Typ av tjänst" - -msgid "Services" -msgstr "Tjänster" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "Ställ in Tidssynkronisering" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "Ställ in DHCP-server" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "Stäng ner det här gränssnittet" - -msgid "Signal" -msgstr "Signal" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "Signal:" - -msgid "Size" -msgstr "Storlek" - -msgid "Size (.ipk)" -msgstr "Storlek (.ipk)" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Hoppa över" - -msgid "Skip to content" -msgstr "Hoppa över till innehåll" - -msgid "Skip to navigation" -msgstr "Hoppa över till navigering" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Mjukvara" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Några fält är ogiltiga, kan inte spara värden!" - -msgid "Sorry, the object you requested was not found." -msgstr "Tyvärr, objektet som du frågade efter kunde inte hittas." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "Tyvärr, servern stötte på ett oväntat fel." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "Källa" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Anger lyssningsporten för den här Dropbear-instansen" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "Ange en TaT (Typ av Tjänst)." - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Ange den hemliga krypteringsnyckeln här." - -msgid "Start" -msgstr "" - -msgid "Start priority" -msgstr "" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "Statiska IPv4-rutter" - -msgid "Static IPv6 Routes" -msgstr "Statiska IPv6-rutter" - -msgid "Static Leases" -msgstr "" - -msgid "Static Routes" -msgstr "Statiska rutter" - -msgid "Static address" -msgstr "Statiska adresser" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Status" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "Strikt sortering" - -msgid "Submit" -msgstr "Skicka in" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "Swap" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "Byt" - -msgid "Switch %q" -msgstr "Byt %q" - -msgid "Switch %q (%s)" -msgstr "Byt %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "Byt VLAN" - -msgid "Switch protocol" -msgstr "Byt protokoll" - -msgid "Sync with browser" -msgstr "Synkronisera med webbläsare" - -msgid "Synchronizing..." -msgstr "Synkroniserar..." - -msgid "System" -msgstr "System" - -msgid "System Log" -msgstr "Systemlogg" - -msgid "System Properties" -msgstr "Systemets egenskaper" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Inställningar för TFTP" - -msgid "TFTP server root" -msgstr "Root för TFTP-server" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "TX-hastighet" - -msgid "Table" -msgstr "Tabell" - -msgid "Target" -msgstr "Mål" - -msgid "Target network" -msgstr "Målnätverk" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "Det angivna nätverksnamnet är inte unikt" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "Det finns inga aktiva kontrakt." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "Det finns inga pendlande ändringar att återkalla" - -msgid "There are no pending changes!" -msgstr "Det finns inga pendlande ändringar!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Det finns inget lösenord inställt på den här routern. Vänligen ställ in ett " -"root-lösenord för att skydda webbgränssnittet och för att aktivera SSH." - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time Synchronization" -msgstr "Synkronisering av tid" - -msgid "Time Synchronization is not configured yet." -msgstr "Synkronisering av tid är inte inställd än." - -msgid "Timezone" -msgstr "Tidszon" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"För att återställa konfigurationsfiler så kan du ladda upp ett tidigare " -"genererat säkerhetskopierings arkiv här." - -msgid "Tone" -msgstr "Ton" - -msgid "Total Available" -msgstr "Totalt tillgängligt" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "Trafik" - -msgid "Transfer" -msgstr "Överför" - -msgid "Transmission Rate" -msgstr "Överföringshastighet" - -msgid "Transmit" -msgstr "Överför" - -msgid "Transmit Power" -msgstr "" - -msgid "Transmitter Antenna" -msgstr "" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "Tunnel-ID" - -msgid "Tunnel Interface" -msgstr "Tunnelgränssnitt" - -msgid "Tunnel Link" -msgstr "Tunnel-länk" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "Typ" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Endast UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB-enhet" - -msgid "USB Ports" -msgstr "USB-portar" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "Det går inte att skicka" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "Otillgängliga Sekunder (UAS)" - -msgid "Unknown" -msgstr "Okänd" - -msgid "Unknown Error, password not changed!" -msgstr "Okänt fel, lösenordet ändrades inte!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "Avmontera" - -msgid "Unsaved Changes" -msgstr "Osparade ändringar" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "Protokolltypen stöds inte." - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "Uppdatera listor" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "Ladda upp arkiv..." - -msgid "Uploaded File" -msgstr "Laddade upp fil" - -msgid "Uptime" -msgstr "Upptid" - -msgid "Use /etc/ethers" -msgstr "Använd /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Använd DHCP-gateway" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "Använd som root-filsystem (/)" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Använd anpassade DNS-servrar" - -msgid "Use default gateway" -msgstr "Använd standard-gateway" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "Användarcertifikat (PEM-krypterad)" - -msgid "User key (PEM encoded)" -msgstr "Användarnyckel (PEM-krypterad)" - -msgid "Username" -msgstr "Användarnamn" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "Lokal adress för VPN" - -msgid "VPN Local port" -msgstr "Lokal port för VPN" - -msgid "VPN Server" -msgstr "VPN-server" - -msgid "VPN Server port" -msgstr "Port för VPN-server" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "Tillverkare" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "Verkställ" - -msgid "Version" -msgstr "Version" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Öppet System WEP" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "WEP-lösenordsfras" - -msgid "WMM Mode" -msgstr "WMM-läge" - -msgid "WPA passphrase" -msgstr "WPA-lösenordsfras" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "Väntar på att ändringarna ska tillämpas..." - -msgid "Waiting for command to complete..." -msgstr "Väntar på att kommandot ska avsluta..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "Väntar på enheten..." - -msgid "Warning" -msgstr "Varning" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" -"Varning: Det finns osparade ändringar som kommer att förloras vid omstart!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "Bredd" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Trådlöst" - -msgid "Wireless Adapter" -msgstr "Trådlös adapter" - -msgid "Wireless Network" -msgstr "Trådlöst nätverk" - -msgid "Wireless Overview" -msgstr "Trådlös överblick" - -msgid "Wireless Security" -msgstr "Trådlös säkerhet" - -msgid "Wireless is disabled" -msgstr "Trådlöst är avstängt" - -msgid "Wireless is not associated" -msgstr "Trådlöst är inte associerat" - -msgid "Wireless is restarting..." -msgstr "Trådlöst startar om..." - -msgid "Wireless network is disabled" -msgstr "Trådlöst nätverk är avstängt" - -msgid "Wireless network is enabled" -msgstr "Trådlöst nätverk är aktiverat" - -msgid "Write received DNS requests to syslog" -msgstr "Skriv mottagna DNS-förfrågningar till syslogg" - -msgid "Write system log to file" -msgstr "Skriv systemlogg till fil" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Du måste aktivera JavaScript i din webbläsare, annars kommer inte LuCi att " -"fungera korrekt." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"Din Internet Explorer är för gammal för att visa den här sidan korrekt. " -"Vänligen uppgradera den till minst version 7 eller använd en annan " -"webbläsare till exempel Firefox, Opera eller Safari." - -msgid "any" -msgstr "något" - -msgid "auto" -msgstr "auto" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "bryggad" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "skapa:" - -msgid "creates a bridge over specified interface(s)" -msgstr "skapar en brygga över angivna gränssnitt(en)" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "stäng ner" - -msgid "disabled" -msgstr "avstängd" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "vidarebefordra" - -msgid "full-duplex" -msgstr "full-duplex" - -msgid "half-duplex" -msgstr "halv-duplex" - -msgid "hidden" -msgstr "gömd" - -msgid "hybrid mode" -msgstr "hybrid-läge" - -msgid "if target is a network" -msgstr "om målet är ett nätverk" - -msgid "input" -msgstr "inmatning" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "lokal DNS-fil" - -msgid "minutes" -msgstr "minuter" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "nej" - -msgid "no link" -msgstr "ingen länk" - -msgid "none" -msgstr "" - -msgid "not present" -msgstr "inte tillgängligt" - -msgid "off" -msgstr "av" - -msgid "on" -msgstr "på" - -msgid "open" -msgstr "öppen" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "relä-läge" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "server-läge" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "taggad" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "okänd" - -msgid "unlimited" -msgstr "obegränsat" - -msgid "unspecified" -msgstr "ospecifierat" - -msgid "unspecified -or- create:" -msgstr "ospecifierat -eller- skapa:" - -msgid "untagged" -msgstr "otaggat" - -msgid "yes" -msgstr "ja" - -msgid "« Back" -msgstr "« Bakåt" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "Aktivera det här nätverket" - -#~ msgid "Interface is shutting down..." -#~ msgstr "Gränssnittet stänger ner..." - -#~ msgid "Interface reconnected" -#~ msgstr "Gränssnittet återanslöt" - -#~ msgid "Interface shut down" -#~ msgstr "Gränssnittet stängdes ner" - -#~ msgid "Reconnecting interface" -#~ msgstr "Återansluter gränssnittet" - -#~ msgid "Shutdown this network" -#~ msgstr "Stäng ner det här nätverket" - -#~ msgid "Wireless restarted" -#~ msgstr "Trådlöst startade om" - -#~ msgid "Wireless shut down" -#~ msgstr "Trådlöst stängde ner" - -#~ msgid "DHCP Leases" -#~ msgstr "DHCP-kontrakt" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "DHCPv6-kontrakt" - -#~ msgid "Sort" -#~ msgstr "Sortera" - -#~ msgid "help" -#~ msgstr "hjälp" diff --git a/luci-base/po/templates/base.pot b/luci-base/po/templates/base.pot index 2dacedfe7..d23111f55 100644 --- a/luci-base/po/templates/base.pot +++ b/luci-base/po/templates/base.pot @@ -1,646 +1,1211 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:929 msgid "%.1f dB" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:114 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:261 +msgid "%d Bit" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3689 +msgid "%d invalid field(s)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:35 msgid "%s is untagged in multiple VLANs!" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:294 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:403 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:270 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:307 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:325 msgid "(%d minute window, %d second interval)" msgstr "" -msgid "(%s available)" -msgstr "" - +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:118 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:124 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:258 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:282 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:88 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:91 msgid "(empty)" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:351 +#: modules/luci-compat/luasrc/view/cbi/network_netinfo.htm:23 +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:58 msgid "(no interfaces attached)" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/ucisection.htm:48 msgid "-- Additional Field --" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/cbi.js:275 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3372 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3704 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:767 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:1005 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:1974 +#: modules/luci-compat/luasrc/view/cbi/header.htm:8 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:88 msgid "-- Please choose --" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/cbi.js:276 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:1006 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:1975 +#: modules/luci-compat/luasrc/view/cbi/header.htm:9 msgid "-- custom --" msgstr "" -msgid "-- match by device --" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:270 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:379 msgid "-- match by label --" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:256 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:362 msgid "-- match by uuid --" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:27 +#: modules/luci-compat/luasrc/view/cbi/network_ifacelist.htm:44 +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:23 msgid "-- please select --" msgstr "" +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:54 +msgctxt "sstp log level value" +msgid "0" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:939 +msgid "0 = not using RSSI threshold, 1 = do not change driver default" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:55 +msgctxt "sstp log level value" +msgid "1" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:231 msgid "1 Minute Load:" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:251 msgid "15 Minute Load:" msgstr "" +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:56 +msgctxt "sstp log level value" +msgid "2" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:57 +msgctxt "sstp log level value" +msgid "3" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:58 +msgctxt "sstp log level value" +msgid "4" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1442 msgid "4-character hexadecimal ID" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:18 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:11 msgid "464XLAT (CLAT)" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:241 msgid "5 Minute Load:" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1471 msgid "6-octet identifier as a hex string - no colons" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1431 msgid "802.11r Fast Transition" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1619 msgid "802.11w Association SA Query maximum timeout" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1626 msgid "802.11w Association SA Query retry timeout" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1607 msgid "802.11w Management Frame Protection" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1619 msgid "802.11w maximum timeout" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1626 msgid "802.11w retry timeout" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:956 msgid "BSSID" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:326 msgid "DNS query port" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:317 msgid "DNS server port" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:260 msgid "" "DNS servers will be queried in the " "order of the resolvfile" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:945 msgid "ESSID" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:475 msgid "IPv4-Address" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:42 msgid "IPv4-Gateway" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:603 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:36 msgid "IPv4-Netmask" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:31 msgid "" "IPv6-Address or Network " "(CIDR)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:42 msgid "IPv6-Gateway" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:504 msgid "IPv6-Suffix (hex)" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:58 msgid "LED Configuration" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:69 msgid "LED Name" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:431 msgid "MAC-Address" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:498 msgid "DUID" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:335 msgid "" "Max. DHCP leases" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:344 msgid "" "Max. EDNS0 packet size" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:353 msgid "Max. concurrent queries" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:29 msgid "" "
    Note: you need to manually restart the cron service if the crontab file " "was empty before editing." msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2720 +msgid "A directory with the same name already exists." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2670 +msgid "A new login is required since the authentication session expired." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:909 msgid "A43C + J43 + A43" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:910 msgid "A43C + J43 + A43 + V43" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:922 msgid "ADSL" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:898 msgid "ANSI T1.413" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:94 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:93 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:86 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:67 msgid "APN" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:197 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:352 +msgid "ARP" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:365 +msgid "ARP IP Targets" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:357 +msgid "ARP Interval" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:381 +msgid "ARP Validation" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:373 +msgid "ARP mode to consider a slave as being up" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:77 +msgid "ARP monitoring is not supported for the selected policy!" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:175 msgid "ARP retry threshold" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:917 msgid "ATM (Asynchronous Transfer Mode)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:938 msgid "ATM Bridges" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:970 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:66 msgid "ATM Virtual Channel Identifier (VCI)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:971 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:70 msgid "ATM Virtual Path Identifier (VPI)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:938 msgid "" "ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " "Linux network interfaces which can be used in conjunction with DHCP or PPP " "to dial into the provider network." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:977 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:62 msgid "ATM device number" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:37 msgid "ATU-C System Vendor ID" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:265 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:543 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:547 +msgid "Absent Interface" +msgstr "" + +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:47 msgid "Access Concentrator" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:927 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1032 msgid "Access Point" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:360 msgid "Actions" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:200 msgid "Active IPv4-Routes" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:206 msgid "Active IPv6-Routes" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:81 msgid "Active Connections" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:33 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:92 msgid "Active DHCP Leases" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:52 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:94 msgid "Active DHCPv6 Leases" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:203 +msgid "Active-Backup policy (active-backup, 1)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:3666 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:929 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:23 msgid "Ad-Hoc" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:208 +msgid "Adaptive load balancing (balance-alb, 6)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:207 +msgid "Adaptive transmit load balancing (balance-tlb, 5)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2167 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2170 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2184 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2185 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3170 +#: modules/luci-compat/luasrc/view/cbi/nsection.htm:25 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:189 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:197 +#: modules/luci-compat/luasrc/view/cbi/tsection.htm:39 +#: modules/luci-compat/luasrc/view/cbi/tsection.htm:47 +#: modules/luci-compat/luasrc/view/cbi/ucisection.htm:54 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:827 msgid "Add" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:942 +msgid "Add ATM Bridge" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:92 +msgid "Add IPv4 address…" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:207 +msgid "Add IPv6 address…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:65 +msgid "Add LED action" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:219 +msgid "Add VLAN" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:15 +msgid "Add instance" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:146 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:152 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:247 +msgid "Add key" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:248 msgid "Add local domain suffix to names served from hosts files" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:311 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:757 msgid "Add new interface..." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:125 +msgid "Add peer" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:200 msgid "Additional Hosts files" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:255 msgid "Additional servers file" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:34 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:35 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:36 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:37 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:38 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:39 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:40 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:41 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:42 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:43 msgid "Address" msgstr "" +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:151 msgid "Address to access local relay bridge" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:285 +msgid "Addresses" +msgstr "" + +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:3 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:15 msgid "Administration" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:164 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:324 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:553 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:968 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:25 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:866 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:924 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:241 msgid "Advanced Settings" msgstr "" -msgid "Aggregate Transmit Power(ACTATP)" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:28 +msgid "Aggregate Transmit Power (ACTATP)" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:258 +msgid "Aggregation Selection Logic" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:261 +msgid "Aggregator: All slaves down or has no slaves (stable, 0)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:263 +msgid "" +"Aggregator: Chosen by the largest number of ports + slave added/removed or " +"state changes (count, 2)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:262 +msgid "Aggregator: Slave added/removed or state changes (bandwidth, 1)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:171 msgid "Alert" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:2871 +#: modules/luci-compat/luasrc/model/network.lua:1417 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:61 msgid "Alias Interface" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:145 msgid "Alias of \"%s\"" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:263 msgid "All Servers" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:209 msgid "" "Allocate IP addresses sequentially, starting from the lowest available " "address" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:208 msgid "Allocate IP sequentially" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:25 msgid "Allow SSH password authentication" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1112 msgid "Allow AP mode to disconnect STAs based on low ACK condition" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1016 msgid "Allow all except listed" msgstr "" +#: modules/luci-compat/root/usr/share/rpcd/acl.d/luci-compat.json:3 +msgid "Allow full UCI access for legacy applications" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:892 msgid "Allow legacy 802.11b rates" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1015 msgid "Allow listed only" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:300 msgid "Allow localhost" msgstr "" +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:157 +msgid "Allow rebooting the device" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:36 msgid "Allow remote hosts to connect to local SSH forwarded ports" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:31 msgid "Allow root logins with password" msgstr "" +#: modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json:3 +msgid "Allow system feature probing" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:31 msgid "Allow the root user to login with password" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:301 msgid "" "Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:148 msgid "Allowed IPs" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:654 msgid "Always announce default router" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/none.js:5 +msgid "Always off (kernel: none)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/default-on.js:6 +msgid "Always on (kernel: default-on)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:907 msgid "" "Always use 40MHz channels even if the secondary channel overlaps. Using this " "option does not comply with IEEE 802.11n-2009!" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:603 +msgid "An error occurred while saving the form:" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:890 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:20 msgid "Annex" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:891 msgid "Annex A + L + M (all)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:899 msgid "Annex A G.992.1" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:900 msgid "Annex A G.992.2" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:901 msgid "Annex A G.992.3" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:902 msgid "Annex A G.992.5" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:892 msgid "Annex B (all)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:895 msgid "Annex B G.992.1" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:896 msgid "Annex B G.992.3" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:897 msgid "Annex B G.992.5" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:893 msgid "Annex J (all)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:903 msgid "Annex L G.992.3 POTS 1" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:894 msgid "Annex M (all)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:904 msgid "Annex M G.992.3" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:905 msgid "Annex M G.992.5" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:654 msgid "Announce as default router even if no public prefix is available." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:659 msgid "Announced DNS domains" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:658 msgid "Announced DNS servers" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1596 msgid "Anonymous Identity" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:162 msgid "Anonymous Mount" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:158 msgid "Anonymous Swap" msgstr "" -msgid "Antenna 1" -msgstr "" - -msgid "Antenna 2" -msgstr "" - -msgid "Antenna Configuration" -msgstr "" - +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:84 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:174 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:195 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:60 msgid "Any zone" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:119 +msgid "Apply backup?" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4276 msgid "Apply request failed with status %h" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2181 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4142 msgid "Apply unchecked" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4215 +msgid "Applying configuration changes… %ds" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:56 msgid "Architecture" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:184 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:27 msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" msgstr "" -msgid "Assign interfaces..." -msgstr "" - +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:189 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:31 msgid "" "Assign prefix parts using this hexadecimal subprefix ID for this interface." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2078 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:245 msgid "Associated Stations" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:46 msgid "Associations" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:154 +msgid "Attempt to enable configured mount points for attached devices" +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:104 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:64 msgid "Auth Group" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1535 msgid "Authentication" msgstr "" +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:96 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:70 msgid "Authentication Type" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:172 msgid "Authoritative" msgstr "" +#: modules/luci-base/luasrc/view/sysauth.htm:17 msgid "Authorization Required" msgstr "" +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:196 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:197 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:241 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:244 msgid "Auto Refresh" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:106 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:18 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:24 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:98 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:50 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:94 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:81 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:55 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:68 msgid "Automatic" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_hnet.lua:7 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:7 msgid "Automatic Homenet (HNCP)" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:174 msgid "Automatically check filesystem for errors before mounting" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:170 msgid "Automatically mount filesystems on hotplug" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:166 msgid "Automatically mount swap on hotplug" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:170 msgid "Automount Filesystem" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:166 msgid "Automount Swap" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:193 msgid "Available" msgstr "" -msgid "Available packages" -msgstr "" - +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:268 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:278 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:329 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:339 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:349 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:234 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:244 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:254 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:263 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:273 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:291 msgid "Average:" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:911 msgid "B43 + B43C" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:912 msgid "B43 + B43C + V43" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:48 msgid "BR / DMR / AFTR" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:158 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:182 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1665 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:44 msgid "BSSID" msgstr "" -msgid "Back" -msgstr "" - +#: modules/luci-compat/luasrc/view/cbi/footer.htm:14 +#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:48 msgid "Back to Overview" msgstr "" +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:48 msgid "Back to configuration" msgstr "" -msgid "Back to overview" -msgstr "" - -msgid "Back to scan results" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:363 msgid "Backup" msgstr "" +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:114 msgid "Backup / Flash Firmware" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:323 +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:12 msgid "Backup file list" msgstr "" -msgid "Bad address specified!" -msgstr "" - +#: modules/luci-compat/luasrc/view/cbi/wireless_modefreq.htm:158 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:451 msgid "Band" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:910 msgid "Beacon Interval" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:324 +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:46 msgid "" "Below is the determined list of files to backup. It consists of changed " "configuration files marked by opkg, essential base files and the user " "defined backup patterns." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:395 +msgid "" +"Bind dynamically to interfaces rather than wildcard address (recommended as " +"linux default)" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:52 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:62 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:48 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:55 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:57 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:52 msgid "Bind interface" msgstr "" -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:52 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:62 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:48 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:55 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:57 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:52 msgid "Bind the tunnel to this interface (optional)." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:129 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:188 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:63 msgid "Bitrate" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:266 msgid "Bogus NX Domain Override" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:199 +msgid "Bonding Policy" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:2877 +#: modules/luci-compat/luasrc/model/network.lua:1421 msgid "Bridge" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:416 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:730 msgid "Bridge interfaces" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:978 msgid "Bridge unit number" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:412 msgid "Bring up on boot" msgstr "" -msgid "Broadcom 802.11%s Wireless Controller" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:205 +msgid "Broadcast policy (broadcast, 3)" msgstr "" -msgid "Broadcom BCM%04x 802.11 Wireless Controller" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2810 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3799 +msgid "Browse…" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:37 msgid "Buffered" msgstr "" -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:138 msgid "CA certificate; if empty it will be saved after the first connection." msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:7 +msgid "CLAT configuration failed" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:72 msgid "CPU usage (%)" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:41 +msgid "Cached" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_modemmanager.lua:53 +#: modules/luci-compat/luasrc/model/network/proto_qmi.lua:53 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:21 msgid "Call failed" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2903 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3808 +#: modules/luci-compat/luasrc/view/cbi/delegator.htm:14 +#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:52 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:187 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:763 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1952 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:128 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:272 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:184 msgid "Cancel" msgstr "" +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:17 msgid "Category" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1519 +msgid "Certificate constraint (Domain)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1516 +msgid "Certificate constraint (SAN)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1513 +msgid "Certificate constraint (Subject)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1522 +msgid "Certificate constraint (Wildcard)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1513 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1571 +msgid "" +"Certificate constraint substring - e.g. /CN=wifi.mycompany.com
    See " +"`logread -f` during handshake for actual values" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1519 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1577 +msgid "" +"Certificate constraint(s) against DNS SAN values (if available)
    or " +"Subject CN (exact match)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1522 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1580 +msgid "" +"Certificate constraint(s) against DNS SAN values (if available)
    or " +"Subject CN (suffix match)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1516 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1574 +msgid "" +"Certificate constraint(s) via Subject Alternate Name values
    (supported " +"attributes: EMAIL, DNS, URI) - e.g. DNS:wifi.mycompany.com" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:53 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:200 msgid "Chain" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4028 msgid "Changes" msgstr "" -msgid "Changes applied." -msgstr "" - +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4311 msgid "Changes have been reverted." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:46 msgid "Changes the administrator password for accessing the device" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/wireless_modefreq.htm:162 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:128 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:184 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:460 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1663 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:62 msgid "Channel" msgstr "" -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:174 msgid "Check filesystems before mount" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1914 msgid "Check this option to delete the existing networks from this radio." msgstr "" -msgid "Checksum" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:110 +msgid "Checking archive…" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:193 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:195 +msgid "Checking image…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:399 +msgid "Choose mtdblock" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:491 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1942 msgid "" "Choose the firewall zone you want to assign to this interface. Select " "unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " +"fill out the custom field to define a new zone and attach the " "interface to it." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:959 msgid "" "Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." +"out the custom field to define a new network." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1148 msgid "Cipher" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:91 msgid "Cisco UDP encapsulation" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:363 msgid "" "Click \"Generate archive\" to download a tar archive of the current " "configuration files." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:396 +msgid "" +"Click \"Save mtdblock\" to download specified mtdblock file. (NOTE: THIS " +"FEATURE IS FOR PROFESSIONALS! )" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:3665 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:928 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1033 msgid "Client" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:52 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:47 msgid "Client ID to send when requesting DHCP" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:148 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:154 +msgid "Close" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:157 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:141 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:128 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:106 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:115 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:138 msgid "" "Close inactive connection after the given amount of seconds, use 0 to " "persist connection" msgstr "" +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:49 msgid "Close list..." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:42 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:61 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2076 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:389 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:317 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:320 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:204 msgid "Collecting data..." msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:71 msgid "Command" msgstr "" -msgid "Common Configuration" +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:401 +msgid "Command OK" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:33 +msgid "Command failed" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:72 +msgid "Comment" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1634 msgid "" "Complicates key reinstallation attacks on the client side by disabling " "retransmission of EAPOL-Key frames that are used to install keys. This " @@ -648,272 +1213,483 @@ msgid "" "negotiation especially in environments with heavy traffic load." msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:91 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:96 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:93 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:98 +msgid "Compute outgoing checksum (optional)." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4028 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:426 msgid "Configuration" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4190 +msgid "Configuration changes applied." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4128 +msgid "Configuration changes have been rolled back!" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:63 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:21 msgid "Configuration failed" msgstr "" -msgid "Configuration files will be kept." -msgstr "" - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:175 +msgid "Confirm disconnect" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:55 msgid "Confirmation" msgstr "" -msgid "Connect" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:46 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:51 msgid "Connected" msgstr "" -msgid "Connection Limit" -msgstr "" - +#: modules/luci-base/htdocs/luci-static/resources/network.js:9 +#: modules/luci-compat/luasrc/model/network.lua:27 msgid "Connection attempt failed" msgstr "" +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:40 +msgid "Connection attempt failed." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:411 +msgid "Connection lost" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:117 msgid "Connections" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:377 +msgid "Consider the slave up when all ARP IP targets are reachable (all, 1)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:376 +msgid "Consider the slave up when any ARP IP target is reachable (any, 0)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:18 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:340 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:55 +msgid "Contents have been saved." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:742 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:132 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:264 +msgid "Continue" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4164 msgid "" "Could not regain access to the device after applying the configuration " "changes. You might need to reconnect if you modified network related " "settings such as the IP address or wireless security credentials." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:189 msgid "Country" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:889 msgid "Country Code" msgstr "" -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:491 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1942 msgid "Create / Assign firewall-zone" msgstr "" -msgid "Create Interface" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:798 +msgid "Create interface" msgstr "" -msgid "Create a bridge over multiple interfaces" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:416 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:730 +msgid "Creates a bridge over specified interface(s)" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:170 msgid "Critical" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:174 msgid "Cron Log Level" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:533 +msgid "Current power" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:568 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:570 +#: modules/luci-compat/luasrc/view/cbi/network_ifacelist.htm:51 +#: modules/luci-compat/luasrc/view/cbi/network_ifacelist.htm:53 +#: modules/luci-compat/luasrc/view/cbi/network_ifacelist.htm:82 +#: modules/luci-compat/luasrc/view/cbi/network_ifacelist.htm:83 msgid "Custom Interface" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:36 msgid "Custom delegated IPv6-prefix" msgstr "" -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:382 msgid "" "Custom files (certificates, scripts) may remain on the system. To prevent " "this, perform a factory-reset first." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/timer.js:6 +msgid "Custom flash interval (kernel: timer)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:59 msgid "" "Customizes the behaviour of the device LEDs if possible." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1353 +msgid "DAE-Client" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1358 +msgid "DAE-Port" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1363 +msgid "DAE-Secret" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:327 msgid "DHCP Server" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:155 +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:50 msgid "DHCP and DNS" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:1982 +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:16 +#: modules/luci-compat/luasrc/model/network.lua:969 msgid "DHCP client" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:619 msgid "DHCP-Options" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_dhcpv6.lua:7 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:7 msgid "DHCPv6 client" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:646 msgid "DHCPv6-Mode" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:631 msgid "DHCPv6-Service" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:45 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:46 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:47 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:48 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:49 msgid "DNS" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:277 msgid "DNS forwardings" msgstr "" +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:37 msgid "DNS-Label / FQDN" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:228 msgid "DNSSEC" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:232 msgid "DNSSEC check unsigned" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:99 msgid "DPD Idle Timeout" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:41 msgid "DS-Lite AFTR address" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:887 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:45 msgid "DSL" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:14 msgid "DSL Status" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:920 msgid "DSL line mode" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1088 msgid "DTIM Interval" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:57 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:58 msgid "DUID" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:22 msgid "Data Rate" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:165 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:176 msgid "Debug" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1328 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1343 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1358 msgid "Default %d" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:107 +msgid "Default Route" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:48 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:85 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:65 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:49 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:67 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:80 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:108 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:150 msgid "Default gateway" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:646 msgid "Default is stateless + stateful" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/default-on.js:11 msgid "Default state" msgstr "" -msgid "Define a name for this network." -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:619 msgid "" "Define additional DHCP options, for example " "\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " "servers to clients." msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:2237 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2662 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2666 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3154 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2872 +#: modules/luci-compat/luasrc/view/cbi/nsection.htm:11 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:162 +#: modules/luci-compat/luasrc/view/cbi/tsection.htm:16 msgid "Delete" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:180 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:186 +msgid "Delete key" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2769 +msgid "Delete request failed: %s" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:847 msgid "Delete this network" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1088 msgid "Delivery Traffic Indication Message Interval" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:340 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:134 msgid "Description" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2868 +msgid "Deselect" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:220 msgid "Design" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:384 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:70 msgid "Destination" msgstr "" +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:48 +msgid "Destination port" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:59 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:165 +msgid "Destination zone" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:67 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:191 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:43 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:45 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:80 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:55 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:12 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:247 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:280 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:356 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:392 msgid "Device" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:861 msgid "Device Configuration" msgstr "" -msgid "Device is rebooting..." +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:132 +msgid "Device is not active" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:224 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:599 +msgid "Device is restarting…" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:45 +msgid "Device not managed by ModemManager." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4163 msgid "Device unreachable!" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:53 msgid "Device unreachable! Still waiting for device..." msgstr "" +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:88 msgid "Diagnostics" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:101 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:93 msgid "Dial number" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2665 msgid "Directory" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:839 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:879 msgid "Disable" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:579 msgid "" "Disable DHCP for " "this interface." msgstr "" -msgid "Disable DNS setup" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:174 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:373 +msgid "Disable DNS lookups" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:93 msgid "Disable Encryption" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1098 +msgid "Disable Inactivity Polling" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:837 msgid "Disable this network" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1608 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:66 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:107 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:99 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:51 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:95 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:82 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:56 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:69 msgid "Disabled" msgstr "" -msgid "Disabled (default)" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1112 msgid "Disassociate On Low Acknowledgement" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:294 msgid "Discard upstream RFC1918 responses" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:197 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:665 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:231 +msgid "Disconnect" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:64 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:22 msgid "Disconnection attempt failed" msgstr "" +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:48 +msgid "Disconnection attempt failed." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:606 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2861 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3309 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4045 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4134 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1688 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:330 msgid "Dismiss" msgstr "" -msgid "Displaying only packages containing" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:895 msgid "Distance Optimization" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:895 msgid "Distance to farthest network member in meters." msgstr "" -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:155 msgid "" "Dnsmasq is a combined DHCP-Server and DNS-" @@ -921,627 +1697,1209 @@ msgid "" "firewalls" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:252 msgid "Do not cache negative replies, e.g. for not existing domains" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:79 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:84 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:81 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:86 +msgid "Do not create host route to peer (optional)." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:219 msgid "Do not forward requests that cannot be answered by public name servers" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:214 msgid "Do not forward reverse lookups for local networks" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:25 +msgid "Do not send a hostname" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2755 +msgid "Do you really want to delete \"%s\" ?" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:181 +msgid "Do you really want to delete the following SSH key?" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:94 +msgid "Do you really want to erase all settings?" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2753 +msgid "Do you really want to recursively delete the directory \"%s\" ?" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:168 msgid "Domain required" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:307 msgid "Domain whitelist" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:76 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:81 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:67 msgid "Don't Fragment" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:169 msgid "" "Don't forward DNS-Requests without " "DNS-Name" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:152 msgid "Down" msgstr "" -msgid "Download and install package" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:402 +msgid "Down Delay" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:366 msgid "Download backup" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:404 +msgid "Download mtdblock" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:925 msgid "Downstream SNR offset" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:2620 +msgid "Drag to reorder" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:341 +msgid "Drop Duplicate Frames" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:12 msgid "Dropbear Instance" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:10 msgid "" "Dropbear offers SSH network shell access " "and an integrated SCP server" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:14 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:11 msgid "Dual-Stack Lite (RFC6333)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:595 msgid "Dynamic DHCP" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:60 msgid "Dynamic tunnel" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:595 msgid "" "Dynamically allocate DHCP addresses for clients. If disabled, only clients " "having static leases will be served." msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:67 msgid "EA-bits length" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1491 msgid "EAP-Method" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:2640 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2643 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3017 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:154 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:160 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:339 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:844 msgid "Edit" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/error.htm:13 msgid "" "Edit the raw configuration data above to fix any error and hit \"Save\" to " "reload the page." msgstr "" -msgid "Edit this interface" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:842 msgid "Edit this network" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:793 +msgid "Edit wireless network" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:172 msgid "Emergency" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:839 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:879 msgid "Enable" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:462 msgid "" "Enable IGMP " "snooping" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:460 msgid "Enable STP" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:174 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:367 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:373 +msgid "Enable DNS lookups" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:292 +msgid "Enable Dynamic Shuffling Of Flows" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:60 msgid "Enable HE.net dynamic endpoint update" msgstr "" +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:89 msgid "Enable IPv6 negotiation" msgstr "" +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:49 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:93 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:80 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:54 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:67 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:93 msgid "Enable IPv6 negotiation on the PPP link" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:192 msgid "Enable Jumbo Frame passthrough" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:240 msgid "Enable NTP client" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:96 msgid "Enable Single DES" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:368 msgid "Enable TFTP server" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:184 msgid "Enable VLAN functionality" msgstr "" -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1638 +msgid "Enable WPS pushbutton, requires WPA(2)-PSK/WPA3-SAE" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1634 msgid "Enable key reinstallation (KRACK) countermeasures" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:187 msgid "Enable learning and aging" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:198 msgid "Enable mirroring of incoming packets" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:199 msgid "Enable mirroring of outgoing packets" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:882 +msgid "" +"Enable packet steering across all CPUs. May help or hinder network speed." +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:80 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:75 +msgid "Enable rx checksum" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:76 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:81 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:67 msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." msgstr "" -msgid "Enable this mount" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:837 msgid "Enable this network" msgstr "" -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:84 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:79 +msgid "Enable tx checksum" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:243 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:352 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:66 msgid "Enabled" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:462 msgid "Enables IGMP snooping on this bridge" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1431 msgid "" "Enables fast roaming among access points that belong to the same Mobility " "Domain" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:460 msgid "Enables the Spanning Tree Protocol on this bridge" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:59 +msgid "Encapsulation limit" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:915 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:973 msgid "Encapsulation mode" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:159 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:183 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1117 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1666 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:45 msgid "Encryption" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:161 msgid "Endpoint Host" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:165 msgid "Endpoint Port" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/dropdown.htm:16 msgid "Enter custom value" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/dropdown.htm:16 msgid "Enter custom values" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:97 msgid "Erasing..." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:102 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:103 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:104 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:105 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:106 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:169 msgid "Error" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:30 msgid "Errored seconds (ES)" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:2889 +#: modules/luci-compat/luasrc/model/network.lua:1433 msgid "Ethernet Adapter" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:2880 +#: modules/luci-compat/luasrc/model/network.lua:1423 msgid "Ethernet Switch" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:270 +msgid "Every 30 seconds (slow, 0)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:271 +msgid "Every second (fast, 1)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:406 msgid "Exclude interfaces" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:247 msgid "Expand hosts" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:198 +msgid "Expecting a hexadecimal assignment hint" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:64 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:73 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:79 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:107 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:121 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:125 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:129 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:132 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:136 +msgid "Expecting: %s" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:48 +msgid "Expecting: non-empty value" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:50 msgid "Expires" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:591 msgid "" "Expiry time of leased addresses, minimum is 2 minutes (2m)." msgstr "" +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:19 msgid "External" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1482 msgid "External R0 Key Holder List" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1486 msgid "External R1 Key Holder List" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:146 msgid "External system log server" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:151 msgid "External system log server port" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:156 msgid "External system log server protocol" msgstr "" +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:79 msgid "Extra SSH command options" msgstr "" +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:83 +msgid "Extra pppd options" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:81 +msgid "Extra sstpc options" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1456 msgid "FT over DS" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1457 msgid "FT over the Air" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1454 msgid "FT protocol" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:87 +msgid "Failed to change the system password." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4122 msgid "Failed to confirm apply within %ds, waiting for rollback…" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:37 +msgid "Failed to execute \"/etc/init.d/%s %s\" action: %s" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2673 msgid "File" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2620 +msgid "File not accessible" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2811 +msgid "Filename" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:381 msgid "Filename of the boot image advertised to clients" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:191 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:314 msgid "Filesystem" msgstr "" -msgid "Filter" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:213 msgid "Filter private" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:218 msgid "Filter useless" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:388 +msgid "Filtering for all slaves, no validation" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:389 +msgid "Filtering for all slaves, validation only for active slave" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:390 +msgid "Filtering for all slaves, validation only for backup slaves" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:65 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:23 msgid "Finalizing failed" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:150 msgid "" "Find all currently attached filesystems and swap and replace configuration " "with defaults based on what was detected" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:820 msgid "Find and join network" msgstr "" -msgid "Find package" -msgstr "" - +#: modules/luci-compat/luasrc/view/cbi/delegator.htm:9 msgid "Finish" msgstr "" +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:15 msgid "Firewall" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:102 msgid "Firewall Mark" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:326 msgid "Firewall Settings" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:297 msgid "Firewall Status" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:932 msgid "Firmware File" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:57 msgid "Firmware Version" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:327 msgid "Fixed source port for outbound DNS queries" msgstr "" -msgid "Flash Firmware" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:283 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:421 msgid "Flash image..." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:279 +msgid "Flash image?" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:411 msgid "Flash new firmware image" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:356 msgid "Flash operations" msgstr "" -msgid "Flashing..." +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:288 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:290 +msgid "Flashing…" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:598 msgid "Force" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:907 msgid "Force 40MHz mode" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1158 msgid "Force CCMP (AES)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:598 msgid "Force DHCP on this network even if another server is detected." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1159 msgid "Force TKIP" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1160 msgid "Force TKIP and CCMP (AES)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:864 msgid "Force link" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:255 +msgid "Force upgrade" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:90 msgid "Force use of NAT-T" msgstr "" +#: modules/luci-base/luasrc/view/csrftoken.htm:8 msgid "Form token mismatch" msgstr "" +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:164 msgid "Forward DHCP traffic" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:29 msgid "Forward Error Correction Seconds (FECS)" msgstr "" +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:161 msgid "Forward broadcast traffic" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:934 msgid "Forward mesh peer traffic" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:980 msgid "Forwarding mode" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:899 msgid "Fragmentation Threshold" msgstr "" -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:115 msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." +"Further information about WireGuard interfaces and peers at wireguard.com." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:128 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:184 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:62 msgid "GHz" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:91 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:77 msgid "GPRS only" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:10 +msgid "GRE tunnel over IPv4" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:10 +msgid "GRE tunnel over IPv6" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:10 +msgid "GRETAP tunnel over IPv4" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:10 +msgid "GRETAP tunnel over IPv6" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:44 msgid "Gateway" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:36 +msgid "Gateway Ports" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:11 +#: modules/luci-compat/luasrc/model/network.lua:29 msgid "Gateway address is invalid" msgstr "" -msgid "Gateway ports" +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:124 +msgid "Gateway metric" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:161 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:323 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:24 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:240 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:108 msgid "General Settings" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:552 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:967 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:865 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:921 msgid "General Setup" msgstr "" -msgid "General options for opkg" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:150 msgid "Generate Config" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:66 +msgid "Generate Key" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1460 msgid "Generate PMK locally" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:368 msgid "Generate archive" msgstr "" -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:79 msgid "Given password confirmation did not match, password not changed!" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:146 msgid "Global Settings" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:875 msgid "Global network options" msgstr "" +#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:57 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:215 +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:58 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:82 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:284 msgid "Go to password configuration..." msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:2562 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3336 +#: modules/luci-compat/luasrc/view/cbi/full_valueheader.htm:4 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:58 msgid "Go to relevant configuration page" msgstr "" +#: modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json:33 +msgid "Grant access to DHCP configuration" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:102 +msgid "Grant access to DHCP status display" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:111 +msgid "Grant access to DSL status display" +msgstr "" + +#: protocols/luci-proto-openconnect/root/usr/share/rpcd/acl.d/luci-openconnect.json:3 +msgid "Grant access to LuCI OpenConnect procedures" +msgstr "" + +#: protocols/luci-proto-wireguard/root/usr/share/rpcd/acl.d/luci-wireguard.json:3 +msgid "Grant access to LuCI Wireguard procedures" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:19 +msgid "Grant access to SSH configuration" +msgstr "" + +#: modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json:12 +msgid "Grant access to basic LuCI procedures" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:64 +msgid "Grant access to crontab configuration" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:60 +msgid "Grant access to firewall status" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:116 +msgid "Grant access to flash operations" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:86 +msgid "Grant access to main status display" +msgstr "" + +#: protocols/luci-proto-modemmanager/root/usr/share/rpcd/acl.d/luci-proto-modemmanager.json:3 +msgid "Grant access to mmcli" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:84 +msgid "Grant access to mount configuration" +msgstr "" + +#: modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json:3 +msgid "Grant access to network configuration" +msgstr "" + +#: modules/luci-mod-network/root/usr/share/rpcd/acl.d/luci-mod-network.json:46 +msgid "Grant access to network diagnostic tools" +msgstr "" + +#: modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json:36 +msgid "Grant access to network status information" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:13 +msgid "Grant access to process status" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:3 +msgid "Grant access to realtime statistics" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:42 +msgid "Grant access to startup configuration" +msgstr "" + +#: modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json:3 +msgid "Grant access to system configuration" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:30 +msgid "Grant access to system logs" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:47 +msgid "Grant access to the system route status" +msgstr "" + +#: modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json:120 +msgid "Grant access to wireless status display" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:66 msgid "Group Password" msgstr "" +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:22 msgid "Guest" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:81 msgid "HE.net password" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:73 msgid "HE.net username" msgstr "" -msgid "HT mode (802.11n)" -msgstr "" - +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:46 msgid "Hang Up" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:34 msgid "Header Error Code Errors (HEC)" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/heartbeat.js:5 +msgid "Heartbeat interval (kernel: heartbeat)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:100 msgid "" "Here you can configure the basic aspects of your device like its hostname or " "the timezone." msgstr "" -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1066 msgid "Hide ESSID" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:264 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:303 +msgid "Hide empty chains" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:55 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2070 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:56 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:140 msgid "Host" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js:22 msgid "Host entries" msgstr "" +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:171 msgid "Host expiry timeout" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:31 msgid "Host-IP or Network" msgstr "" +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:102 msgid "Host-Uniq tag content" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:36 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:419 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js:27 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:54 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:29 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:121 msgid "Hostname" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:22 msgid "Hostname to send when requesting DHCP" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js:20 +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:63 msgid "Hostnames" msgstr "" +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:24 msgid "Hybrid" msgstr "" +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:53 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:48 +msgid "ID used to uniquely identify the VXLAN" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:206 +msgid "IEEE 802.3ad Dynamic link aggregation (802.3ad, 4)" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:75 msgid "IKE DH Group" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:83 msgid "IP Addresses" msgstr "" +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:80 +msgid "IP Protocol" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:114 +msgid "IP Type" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js:31 msgid "IP address" msgstr "" -msgid "IP address in invalid" +#: modules/luci-base/htdocs/luci-static/resources/network.js:10 +#: modules/luci-compat/luasrc/model/network.lua:28 +msgid "IP address is invalid" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:13 +#: modules/luci-compat/luasrc/model/network.lua:31 msgid "IP address is missing" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:79 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:102 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:85 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:86 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:87 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:88 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:89 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:82 msgid "IPv4" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:316 msgid "IPv4 Firewall" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:29 msgid "IPv4 Upstream" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:178 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:162 msgid "IPv4 address" msgstr "" -msgid "IPv4 and IPv6" -msgstr "" - +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:33 msgid "IPv4 assignment length" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:181 msgid "IPv4 broadcast" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:180 msgid "IPv4 gateway" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:179 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:168 msgid "IPv4 netmask" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:291 +msgid "IPv4 network in address/netmask notation" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:116 msgid "IPv4 only" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:52 msgid "IPv4 prefix" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:61 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:55 msgid "IPv4 prefix length" msgstr "" +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:83 +msgid "IPv4+IPv6" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:37 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:30 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:154 msgid "IPv4-Address" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:164 +msgid "IPv4-Gateway" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ipip.lua:9 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:10 msgid "IPv4-in-IPv4 (RFC2003)" msgstr "" +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:115 +msgid "IPv4/IPv6 (both - defaults to IPv4)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:80 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:103 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:90 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:91 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:92 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:93 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:94 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:95 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:96 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:97 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:98 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:99 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:84 msgid "IPv6" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:319 msgid "IPv6 Firewall" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:203 msgid "IPv6 Neighbours" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:554 msgid "IPv6 Settings" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:879 msgid "IPv6 ULA-Prefix" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:29 msgid "IPv6 Upstream" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:205 msgid "IPv6 address" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:189 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:31 msgid "IPv6 assignment hint" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:184 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:27 msgid "IPv6 assignment length" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:210 msgid "IPv6 gateway" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:296 +msgid "IPv6 network in address/netmask notation" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:117 msgid "IPv6 only" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:53 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:59 msgid "IPv6 prefix" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:57 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:63 msgid "IPv6 prefix length" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:214 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:57 msgid "IPv6 routed prefix" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:218 msgid "IPv6 suffix" msgstr "" +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:51 +msgid "IPv6 support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:56 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:57 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:172 msgid "IPv6-Address" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:100 msgid "IPv6-PD" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_6x4.lua:13 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:10 msgid "IPv6-in-IPv4 (RFC4213)" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_6x4.lua:17 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:9 msgid "IPv6-over-IPv4 (6rd)" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_6x4.lua:15 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:9 msgid "IPv6-over-IPv4 (6to4)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1593 msgid "Identity" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:96 msgid "If checked, 1DES is enabled" msgstr "" +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:51 +msgid "If checked, adds \"+ipv6\" to the pppd options" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:93 msgid "If checked, encryption is disabled" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:254 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:360 msgid "" "If specified, mount the device by its UUID instead of a fixed device node" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:267 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:376 msgid "" "If specified, mount the device by the partition label instead of a fixed " "device node" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:37 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:116 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:48 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:85 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:65 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:49 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:33 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:67 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:80 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:108 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:150 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:64 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:56 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:100 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:87 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:61 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:74 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:97 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:61 msgid "If unchecked, no default route is configured" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:40 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:124 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:39 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:116 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:68 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:59 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:103 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:90 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:64 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:77 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:100 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:69 msgid "If unchecked, the advertised DNS server addresses are ignored" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:339 msgid "" "If your physical memory is insufficient unused data can be temporarily " "swapped to a swap-device resulting in a higher amount of usable RAM." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:197 msgid "Ignore /etc/hosts" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:579 msgid "Ignore interface" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:185 msgid "Ignore resolve file" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:419 msgid "Image" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:67 msgid "In" msgstr "" +#: modules/luci-base/luasrc/view/csrftoken.htm:13 msgid "" "In order to prevent unauthorized access to the system, your request has been " "blocked. Click \"Continue »\" below to return to the previous page." msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:157 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:141 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:128 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:106 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:115 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:138 msgid "Inactivity timeout" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:265 msgid "Inbound:" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:90 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:95 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:92 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:97 +msgid "Incoming checksum" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:82 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:87 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:84 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:89 +msgid "Incoming key" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:92 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:97 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:94 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:99 +msgid "Incoming serialization" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:166 msgid "Info" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:101 +msgid "Information" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:67 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:25 msgid "Initialization failure" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:77 msgid "Initscript" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:111 msgid "Initscripts" msgstr "" -msgid "Install" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1577 +msgid "Inner certificate constraint (Domain)" msgstr "" -msgid "Install iputils-traceroute6 for IPv6 traceroute" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1574 +msgid "Inner certificate constraint (SAN)" msgstr "" -msgid "Install package %q" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1571 +msgid "Inner certificate constraint (Subject)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1580 +msgid "Inner certificate constraint (Wildcard)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:268 msgid "Install protocol extensions..." msgstr "" -msgid "Installed packages" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1938 +msgid "" +"Instead of joining any network with a matching SSID, only connect to the " +"BSSID %h." msgstr "" +#: modules/luci-compat/luasrc/view/cbi/map.htm:43 +msgid "Insufficient permissions to read UCI configuration." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:464 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:471 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:735 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:739 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:27 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:156 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:174 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:17 msgid "Interface" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:62 msgid "Interface %q device auto-migrated from %q to %q." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:917 msgid "Interface Configuration" msgstr "" -msgid "Interface Overview" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:110 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:151 +msgid "Interface has %d pending changes" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:92 +msgid "Interface is disabled" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:64 +msgid "Interface is marked for deletion" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:209 msgid "Interface is reconnecting..." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:193 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:203 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:209 +msgid "Interface is shutting down..." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:253 +msgid "Interface is starting..." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:256 +msgid "Interface is stopping..." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1079 msgid "Interface name" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:122 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:272 msgid "Interface not present or not connected yet." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:308 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:335 +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:38 msgid "Interfaces" msgstr "" +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:20 msgid "Internal" msgstr "" +#: modules/luci-base/luasrc/view/error500.htm:8 msgid "Internal Server Error" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:283 +msgid "Interval For Sending Learning Packets" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:192 +#: modules/luci-compat/luasrc/view/cbi/tsection.htm:42 msgid "Invalid" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:19 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:22 +msgid "Invalid Base64 key string" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:285 msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:294 msgid "Invalid VLAN ID given! Only unique IDs are allowed" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:403 +msgid "Invalid argument" +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:46 +msgid "" +"Invalid bearer list. Possibly too many bearers created. This protocol " +"supports one and only one bearer." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:402 +msgid "Invalid command" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:106 +msgid "Invalid hexadecimal value" +msgstr "" + +#: modules/luci-base/luasrc/view/sysauth.htm:12 msgid "Invalid username and/or password! Please try again." msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:71 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:76 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:76 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:81 +msgid "Invalid value" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1075 msgid "Isolate Clients" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:231 msgid "" "It appears that you are trying to flash an image that does not fit into the " "flash memory, please verify the image file!" msgstr "" +#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:64 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:222 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:72 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:291 msgid "JavaScript required!" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1746 msgid "Join Network" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1680 msgid "Join Network: Wireless Scan" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1946 msgid "Joining Network: %q" msgstr "" -msgid "Keep settings" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:223 +msgid "Keep settings and retain the current configuration" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/dmesg.js:20 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:51 msgid "Kernel Log" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:58 msgid "Kernel Version" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1369 msgid "Key" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1397 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1398 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1399 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1400 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1412 msgid "Key #%d" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:82 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:87 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:84 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:89 +msgid "Key for incoming packets (optional)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:86 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:91 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:88 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:93 +msgid "Key for outgoing packets (optinal)." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:54 msgid "Kill" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_ppp.lua:21 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:10 msgid "L2TP" msgstr "" +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:40 msgid "L2TP Server" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:267 +msgid "LACPDU Packets" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:131 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:115 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:102 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:76 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:89 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:112 msgid "LCP echo failure threshold" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:144 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:128 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:115 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:89 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:102 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:125 msgid "LCP echo interval" msgstr "" +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:101 +msgid "LED Configuration" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:974 msgid "LLC" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:267 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:376 msgid "Label" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:209 msgid "Language" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:111 msgid "Language and Style" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:24 msgid "Latency" msgstr "" +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:21 msgid "Leaf" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:495 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:591 msgid "Lease time" msgstr "" -msgid "Lease validity time" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:39 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:58 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:32 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:59 +msgid "Lease time remaining" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:181 msgid "Leasefile" msgstr "" -msgid "Leasetime remaining" -msgstr "" - +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:41 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:47 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:50 msgid "Leave empty to autodetect" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:40 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:39 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:39 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:45 msgid "Leave empty to use the current WAN address" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4030 msgid "Legend:" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:586 msgid "Limit" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:389 msgid "Limit DNS service to subnets interfaces on which we are serving DNS." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:402 msgid "Limit listening to these interfaces, and loopback." msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:25 msgid "Line Attenuation (LATN)" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:18 msgid "Line Mode" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:17 msgid "Line State" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:19 msgid "Line Uptime" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:123 +msgid "Link Aggregation (Channel Bonding)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:348 +msgid "Link Monitoring" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:23 msgid "Link On" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:278 msgid "" "List of DNS servers to forward " "requests to" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1482 msgid "" "List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" "Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " @@ -1771,6 +3363,7 @@ msgid "" "Association." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1486 msgid "" "List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " "as 6 octets with colons,128-bit key as hex string.
    This list is used " @@ -1779,462 +3372,901 @@ msgid "" "PMK-R1 keys." msgstr "" +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:82 msgid "List of SSH key files for auth" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:308 msgid "List of domains to allow RFC1918 responses for" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:286 +msgid "List of domains to force to an IP address." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:267 msgid "List of hosts that supply bogus NX domain results" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:401 msgid "Listen Interfaces" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:78 msgid "Listen Port" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:17 msgid "Listen only on the given interface or, if unspecified, on all" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:318 msgid "Listening port for inbound DNS queries" msgstr "" +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:87 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:54 msgid "Load" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:61 msgid "Load Average" msgstr "" -msgid "Loading" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2938 +msgid "Loading directory contents…" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/luci.js:1948 +#: modules/luci-base/luasrc/view/view.htm:4 +#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:12 +msgid "Loading view…" +msgstr "" + +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:77 +msgid "Local IP address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:12 +#: modules/luci-compat/luasrc/model/network.lua:30 msgid "Local IP address is invalid" msgstr "" +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:86 msgid "Local IP address to assign" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:46 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:46 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:44 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:40 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:39 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:39 +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:151 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:44 msgid "Local IPv4 address" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:46 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:46 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:54 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:45 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:44 msgid "Local IPv6 address" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:388 msgid "Local Service Only" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:115 msgid "Local Startup" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:59 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:117 msgid "Local Time" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:243 msgid "Local domain" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:240 msgid "" "Local domain specification. Names matching this domain are never forwarded " "and are resolved from DHCP or hosts files only" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:244 msgid "Local domain suffix appended to DHCP names and hosts file entries" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:239 msgid "Local server" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:224 msgid "" "Localise hostname depending on the requesting subnet if multiple IPs are " "available" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:223 msgid "Localise queries" msgstr "" -msgid "Locked to channel %s used by: %s" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1938 +msgid "Lock to BSSID" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:164 msgid "Log output level" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:274 msgid "Log queries" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:109 msgid "Logging" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:50 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:50 +msgid "" +"Logical network from which to select the local endpoint if local IPv6 " +"address is empty and no WAN IPv6 is available (optional)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:50 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:55 +msgid "Logical network to which the tunnel will be added (bridged) (optional)." +msgstr "" + +#: modules/luci-base/luasrc/view/sysauth.htm:38 msgid "Login" msgstr "" +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:81 msgid "Logout" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:32 msgid "Loss of Signal Seconds (LOSS)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:581 msgid "Lowest leased address as offset from the network address." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:47 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:82 msgid "MAC" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:251 +msgid "MAC Address For The Actor" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:38 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2069 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:56 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:31 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:139 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:155 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:173 msgid "MAC-Address" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1011 msgid "MAC-Address Filter" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:923 msgid "MAC-Filter" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1018 msgid "MAC-List" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:16 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:13 msgid "MAP / LW4over6" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:62 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:7 msgid "MAP rule is invalid" msgstr "" -msgid "MB/s" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:321 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:322 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:323 +msgid "MBit/s" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:218 msgid "MD5" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:199 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:71 msgid "MHz" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:353 +msgid "MII" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:421 +msgid "MII / ETHTOOL ioctls" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:394 +msgid "MII Interval" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:54 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:53 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:97 msgid "MTU" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:302 msgid "" "Make sure to clone the root filesystem using something like the commands " "below:" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:108 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:100 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:52 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:96 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:83 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:57 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:70 msgid "Manual" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:3664 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:642 +msgid "Master" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:23 msgid "Max. Attainable Data Rate (ATTNDR)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1107 +msgid "Maximum allowed Listen Interval" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:336 msgid "Maximum allowed number of active DHCP leases" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:354 msgid "Maximum allowed number of concurrent DNS queries" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:345 msgid "Maximum allowed size of EDNS.0 UDP packets" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:112 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:104 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:93 msgid "Maximum amount of seconds to wait for the modem to become ready" msgstr "" -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:586 msgid "Maximum number of leased addresses." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:886 +msgid "Maximum transmit power" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:129 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:188 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:199 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:63 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:71 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:327 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:328 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:329 msgid "Mbit/s" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:35 +msgid "Medium" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:24 msgid "Memory" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:73 msgid "Memory usage (%)" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:3667 +msgid "Mesh" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:156 +msgid "Mesh ID" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:931 msgid "Mesh Id" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:404 +msgid "Method not found" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:349 +msgid "Method of link monitoring" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:418 +msgid "Method to determine link status" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:46 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:165 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:183 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:92 msgid "Metric" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:235 +msgid "Minimum Number of Links" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:202 msgid "Mirror monitor port" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:201 msgid "Mirror source port" msgstr "" -msgid "Missing protocol extension for proto %q" +#: modules/luci-compat/luasrc/model/network/proto_modemmanager.lua:9 +msgid "Mobile Data" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1442 msgid "Mobility Domain" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/wireless_modefreq.htm:154 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:157 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:180 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:442 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:926 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1664 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:43 msgid "Mode" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:55 msgid "Model" msgstr "" +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:43 +msgid "Modem bearer teardown in progress." +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:42 +msgid "" +"Modem connection in progress. Please wait. This process will timeout after 2 " +"minutes." +msgstr "" + +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:72 +msgid "Modem default" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:73 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:82 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:61 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:73 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:57 msgid "Modem device" msgstr "" +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:41 +msgid "Modem disconnection in progress. Please wait." +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:66 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:24 msgid "Modem information query failed" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:112 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:104 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:93 msgid "Modem init timeout" msgstr "" +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:44 +msgid "Modem is disabled." +msgstr "" + +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:52 +msgid "ModemManager" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:3668 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1005 msgid "Monitor" msgstr "" -msgid "Mount Entry" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:31 +msgid "More Characters" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:2504 +msgid "More…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:192 msgid "Mount Point" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:144 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:228 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:88 msgid "Mount Points" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:229 msgid "Mount Points - Mount Entry" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:340 msgid "Mount Points - Swap Entry" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:228 msgid "" "Mount Points define at which point a memory device will be attached to the " "filesystem" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:154 +msgid "Mount attached devices" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:162 msgid "Mount filesystems not specifically configured" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:331 msgid "Mount options" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:292 msgid "Mount point" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:158 msgid "Mount swap not specifically configured" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:223 msgid "Mounted file systems" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:152 msgid "Move down" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:151 msgid "Move up" msgstr "" -msgid "Multicast address" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1437 msgid "NAS ID" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:87 msgid "NAT-T Mode" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:41 msgid "NAT64 Prefix" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:26 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:31 msgid "NCM" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:637 msgid "NDP-Proxy" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:72 msgid "NT Domain" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:274 msgid "NTP server candidates" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:2542 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3785 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:27 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:710 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:67 msgid "Name" msgstr "" -msgid "Name of the new interface" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1916 msgid "Name of the new network" msgstr "" +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:40 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:50 msgid "Navigation" msgstr "" -msgid "Netmask" -msgstr "" - +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:45 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:959 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2068 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:381 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:63 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:138 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:162 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:180 msgid "Network" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:68 msgid "Network Utilities" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:380 msgid "Network boot image" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:7 +msgid "Network device activity (kernel: netdev)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:15 +#: modules/luci-compat/luasrc/model/network.lua:33 msgid "Network device is not present" msgstr "" -msgid "Network without interfaces." +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:50 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:55 +msgid "Network interface" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:777 +msgid "New interface for \"%s\" can not be created: %s" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:713 +msgid "New interface name…" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/delegator.htm:11 msgid "Next »" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:3643 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:296 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:345 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:108 +msgid "No" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:562 msgid "No DHCP Server configured for this interface" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1310 +msgid "No Encryption" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:87 +msgid "No Host Routes" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:89 msgid "No NAT-T" msgstr "" -msgid "No chains in this table" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:79 +msgid "No RX signal" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:69 +msgid "No client associated" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:406 +msgid "No data received" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2878 +msgid "No entries in this directory" +msgstr "" + +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:82 msgid "No files found" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:79 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:84 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:81 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:86 +msgid "No host route" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:674 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:142 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:241 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:59 msgid "No information available" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:63 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:8 msgid "No matching prefix delegation" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:140 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:143 +msgid "No more slaves available" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:187 +msgid "No more slaves available, can not save interface" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:251 msgid "No negative cache" msgstr "" -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - +#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:54 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:212 +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:55 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:79 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:279 msgid "No password set!" msgstr "" -msgid "No rules in this chain" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:130 +msgid "No peers defined yet" msgstr "" -msgid "No scan results available yet..." +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:121 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:268 +msgid "No public keys present yet." msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:90 +msgid "No rules in this chain." +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:384 +msgid "No validation or filtering" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:152 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:825 msgid "No zone assigned" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:58 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:84 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:187 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:141 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:174 msgid "Noise" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:27 msgid "Noise Margin (SNR)" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:270 msgid "Noise:" msgstr "" -msgid "Non Pre-emtive CRC errors (CRC_P)" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:35 +msgid "Non Pre-emptive CRC errors (CRC_P)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:394 msgid "Non-wildcard" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:159 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:183 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:100 msgid "None" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:177 msgid "Normal" msgstr "" +#: modules/luci-base/luasrc/view/error404.htm:8 msgid "Not Found" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:75 msgid "Not associated" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:32 msgid "Not connected" msgstr "" -msgid "Note: Configuration files will be erased." +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:45 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:80 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:120 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:146 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:280 +msgid "Not present" msgstr "" -msgid "Note: interface name length" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:101 +msgid "Not started on boot" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:409 +msgid "Not supported" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:167 msgid "Notice" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:127 msgid "Nslookup" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:332 +msgid "Number of IGMP membership reports" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:362 msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" msgstr "" -msgid "OK" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:199 +msgid "Number of parallel threads used for compression" msgstr "" -msgid "OPKG-Configuration" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:309 +msgid "Number of peer notifications after failover event" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:69 msgid "Obfuscated Group Password" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:61 msgid "Obfuscated Password" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:105 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:97 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:49 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:93 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:80 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:54 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:67 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:93 msgid "Obtain IPv6-Address" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/default-on.js:18 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:351 +msgid "Off" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/timer.js:15 msgid "Off-State Delay" msgstr "" -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/default-on.js:18 +msgid "On" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:96 +msgid "On-Link route" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/timer.js:11 msgid "On-State Delay" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:484 msgid "One of hostname or mac address must be specified!" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:466 +msgid "One of the following: %s" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/nullsection.htm:17 +#: modules/luci-compat/luasrc/view/cbi/ucisection.htm:22 msgid "One or more fields contain invalid values!" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/map.htm:32 msgid "One or more invalid/required values on tab" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/nullsection.htm:19 +#: modules/luci-compat/luasrc/view/cbi/ucisection.htm:24 msgid "One or more required fields have no value!" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:229 +msgid "" +"Only if current active slave fails and the primary slave is up (failure, 2)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:444 +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:19 msgid "Open list..." msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_openconnect.lua:9 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:64 msgid "OpenConnect (CISCO AnyConnect)" msgstr "" +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:12 +msgid "OpenFortivpn" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:882 msgid "Operating frequency" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:1971 +#: modules/luci-base/htdocs/luci-static/resources/form.js:3653 +msgid "Option \"%s\" contains an invalid input value." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:1984 +msgid "Option \"%s\" must not be empty." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4037 msgid "Option changed" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4039 msgid "Option removed" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1609 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:92 msgid "Optional" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:102 msgid "" "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " "starting with 0x." msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:218 msgid "" "Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " "'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " @@ -2242,908 +4274,1785 @@ msgid "" "for the interface." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:143 msgid "" "Optional. Base64-encoded preshared key. Adds in an additional layer of " "symmetric-key cryptography for post-quantum resistance." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:159 msgid "Optional. Create routes for Allowed IPs for this peer." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:134 msgid "Optional. Description of peer." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:87 +msgid "Optional. Do not create host routes to peers." +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:161 msgid "" "Optional. Host of peer. Names are resolved prior to bringing up the " "interface." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:97 msgid "Optional. Maximum Transmission Unit of tunnel interface." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:165 msgid "Optional. Port of peer." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:169 msgid "" "Optional. Seconds between keep alive messages. Default is 0 (disabled). " "Recommended value if this device is behind a NAT is 25." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:78 msgid "Optional. UDP port used for outgoing and incoming packets." msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:71 msgid "Options" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:346 msgid "Other:" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:68 msgid "Out" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:275 msgid "Outbound:" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:91 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:96 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:93 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:98 +msgid "Outgoing checksum" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:86 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:91 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:88 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:93 +msgid "Outgoing key" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:93 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:98 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:95 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:100 +msgid "Outgoing serialization" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:50 msgid "Output Interface" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:59 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:165 +msgid "Output zone" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:57 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:222 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:40 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:50 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:76 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:71 msgid "Override MAC address" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:61 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:226 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:67 +#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:44 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:53 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:54 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:120 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:158 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:71 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:145 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:132 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:110 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:119 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:97 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:77 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:62 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:57 msgid "Override MTU" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:72 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:63 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:72 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:67 msgid "Override TOS" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:72 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:58 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:67 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:62 msgid "Override TTL" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1079 msgid "Override default interface name" msgstr "" +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:167 msgid "Override the gateway in DHCP responses" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:603 msgid "" "Override the netmask sent to clients. Normally it is calculated from the " "subnet that is served." msgstr "" +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:179 msgid "Override the table used for internal routes" msgstr "" +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:3 msgid "Overview" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2721 +msgid "Overwrite existing file \"%s\" ?" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:70 msgid "Owner" msgstr "" +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:97 +msgid "PAP/CHAP (both)" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:98 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:108 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:90 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:45 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:89 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:76 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:44 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:63 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:82 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:46 msgid "PAP/CHAP password" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:96 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:103 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:88 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:43 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:87 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:74 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:42 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:61 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:77 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:44 msgid "PAP/CHAP username" msgstr "" +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:101 +msgid "PDP Type" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:69 msgid "PID" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:95 +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:94 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:87 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:68 msgid "PIN" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:21 +#: modules/luci-compat/luasrc/model/network.lua:39 msgid "PIN code rejected" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1477 msgid "PMK R1 Push" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_ppp.lua:13 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:43 msgid "PPP" msgstr "" +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:58 msgid "PPPoA Encapsulation" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_ppp.lua:19 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:28 msgid "PPPoATM" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_ppp.lua:17 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:28 msgid "PPPoE" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_pppossh.lua:9 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:28 msgid "PPPoSSH" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_ppp.lua:15 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:28 msgid "PPtP" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:73 msgid "PSID offset" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:70 msgid "PSID-bits length" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:918 msgid "PTM/EFM (Packet Transfer Mode)" msgstr "" -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:882 +msgid "Packet Steering" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:53 msgid "Packets" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:275 +msgid "Packets To Transmit Before Moving To Next Slave" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:152 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:825 msgid "Part of zone %q" msgstr "" +#: modules/luci-base/luasrc/view/sysauth.htm:29 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1599 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:51 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:108 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:52 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:58 msgid "Password" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:25 msgid "Password authentication" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1531 msgid "Password of Private Key" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1589 msgid "Password of inner Private Key" msgstr "" -msgid "Password successfully changed!" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:31 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:33 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:35 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:37 +msgid "Password strength" msgstr "" +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:111 msgid "Password2" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:239 +msgid "Paste or drag SSH key file…" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1510 msgid "Path to CA-Certificate" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1525 msgid "Path to Client-Certificate" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1528 msgid "Path to Private Key" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1568 msgid "Path to inner CA-Certificate" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1583 msgid "Path to inner Client-Certificate" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1586 msgid "Path to inner Private Key" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2731 +msgid "Paused" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:271 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/bandwidth.js:281 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:332 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:342 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:352 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:237 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:247 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:257 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:266 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:276 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:294 msgid "Peak:" msgstr "" +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:89 msgid "Peer IP address to assign" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:14 +#: modules/luci-compat/luasrc/model/network.lua:32 msgid "Peer address is missing" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:115 msgid "Peers" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:80 msgid "Perfect Forward Secrecy" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:93 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:98 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:95 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:100 +msgid "Perform outgoing packets serialization (optional)." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:34 msgid "Perform reboot" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:378 msgid "Perform reset" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:407 +msgid "Permission denied" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:169 msgid "Persistent Keep Alive" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:288 msgid "Phy Rate:" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:325 msgid "Physical Settings" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:79 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:80 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:90 msgid "Ping" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:48 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:49 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:83 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:84 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:138 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:63 msgid "Pkts." msgstr "" +#: modules/luci-base/luasrc/view/sysauth.htm:19 msgid "Please enter your username and password." msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3768 +msgid "Please select the file to upload." +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:53 msgid "Policy" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:21 msgid "Port" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:278 msgid "Port status:" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:492 +msgid "Potential negation of: %s" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:38 msgid "Power Management Mode" msgstr "" -msgid "Pre-emtive CRC errors (CRCP_P)" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:36 +msgid "Pre-emptive CRC errors (CRCP_P)" msgstr "" +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:73 msgid "Prefer LTE" msgstr "" +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:74 msgid "Prefer UMTS" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:33 msgid "Prefix Delegated" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:143 msgid "Preshared Key" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:131 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:115 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:102 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:76 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:89 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:112 msgid "" "Presume peer to be dead after given amount of LCP echo failures, use 0 to " "ignore failures" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:407 msgid "Prevent listening on these interfaces." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1075 msgid "Prevents client-to-client communication" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:211 +msgid "Primary Slave" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:228 +msgid "" +"Primary becomes active slave when it comes back up if speed and duplex " +"better than current slave (better, 1)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:227 +msgid "Primary becomes active slave whenever it comes back up (always, 0)" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:61 msgid "Private Key" msgstr "" -msgid "Proceed" -msgstr "" - +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:64 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:63 msgid "Processes" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:21 msgid "Profile" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:66 msgid "Prot." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:79 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:397 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:727 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:382 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:32 msgid "Protocol" msgstr "" -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:265 msgid "Provide NTP server" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:825 msgid "Provide new network" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1004 msgid "Pseudo Ad-Hoc (ahdemo)" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:139 msgid "Public Key" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:275 +msgid "" +"Public keys allow for the passwordless SSH logins with a higher security " +"compared to the use of plain passwords. In order to upload a new key to the " +"device, paste an OpenSSH compatible public key line or drag a .pub file into the input field." +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:214 msgid "Public prefix routed to this device for distribution to clients." msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_qmi.lua:9 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:27 msgid "QMI Cellular" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:41 msgid "Quality" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:264 msgid "" "Query all available upstream DNS " "servers" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1465 msgid "R0 Key Lifetime" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1471 msgid "R1 Key Holder" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:88 msgid "RFC3947 NAT-T mode" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:939 +msgid "RSSI threshold for joining" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:903 msgid "RTS/CTS Threshold" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:48 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:83 msgid "RX" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:142 msgid "RX Rate" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2072 +msgid "RX Rate / TX Rate" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1343 msgid "Radius-Accounting-Port" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1348 msgid "Radius-Accounting-Secret" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1338 msgid "Radius-Accounting-Server" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1328 msgid "Radius-Authentication-Port" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1333 msgid "Radius-Authentication-Secret" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1323 msgid "Radius-Authentication-Server" msgstr "" +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:102 msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:178 msgid "" "Read /etc/ethers to configure the DHCP-Server" msgstr "" -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:402 msgid "Really switch protocol?" msgstr "" -msgid "Realtime Connections" -msgstr "" - +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:75 msgid "Realtime Graphs" msgstr "" -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1448 msgid "Reassociation Deadline" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:293 msgid "Rebind protection" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:20 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:126 msgid "Reboot" msgstr "" -msgid "Rebooting..." +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:153 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:162 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:46 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:51 +msgid "Rebooting…" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:21 msgid "Reboots the operating system of your device" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:25 msgid "Receive" msgstr "" -msgid "Receiver Antenna" -msgstr "" - +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:83 msgid "Recommended. IP addresses of the WireGuard interface." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:348 msgid "Reconnect this interface" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:56 msgid "References" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2725 +msgid "Refreshing" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_relay.lua:153 +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:39 msgid "Relay" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_relay.lua:157 +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:36 msgid "Relay Bridge" msgstr "" +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:154 msgid "Relay between networks" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_relay.lua:12 +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:64 msgid "Relay bridge" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:50 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:49 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:40 msgid "Remote IPv4 address" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:42 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:42 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:40 msgid "Remote IPv4 address or FQDN" msgstr "" +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:40 +msgid "Remote IPv6 address" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:42 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:42 +msgid "Remote IPv6 address or FQDN" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:849 msgid "Remove" msgstr "" -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1914 msgid "Replace wireless configuration" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:17 msgid "Request IPv6-address" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:23 msgid "Request IPv6-prefix of length" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:408 +msgid "Request timeout" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:90 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:95 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:92 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:97 +msgid "Require incoming checksum (optional)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:92 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:97 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:94 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:99 +msgid "Require incoming packets serialization (optional)." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1610 msgid "Required" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:34 msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:61 msgid "Required. Base64-encoded private key for this interface." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:139 msgid "Required. Base64-encoded public key of peer." msgstr "" +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:148 msgid "" "Required. IP addresses and prefixes that this peer is allowed to use inside " "the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " "routes through the tunnel." msgstr "" -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1239 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1240 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1241 +msgid "Requires hostapd" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1246 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1247 +msgid "Requires hostapd with EAP Suite-B support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1244 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1245 +msgid "Requires hostapd with EAP support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1248 +msgid "Requires hostapd with OWE support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1242 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1243 +msgid "Requires hostapd with SAE support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1237 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1238 +msgid "Requires hostapd with WEP support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1607 +msgid "" +"Requires the 'full' version of wpad/hostapd and support from the wifi driver " +"
    (as of Jan 2019: ath9k, ath10k, mwlwifi and mt76)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:233 msgid "" "Requires upstream supports DNSSEC; verify unsigned domain responses really " "come from unsigned domains" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1253 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1254 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1255 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1267 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1268 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1269 +msgid "Requires wpa-supplicant" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1260 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1261 +msgid "Requires wpa-supplicant with EAP Suite-B support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1258 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1259 +msgid "Requires wpa-supplicant with EAP support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1262 +msgid "Requires wpa-supplicant with OWE support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1256 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1257 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1272 +msgid "Requires wpa-supplicant with SAE support" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1251 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1252 +msgid "Requires wpa-supplicant with WEP support" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:224 +msgid "Reselection policy for primary slave" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2203 +#: modules/luci-base/luasrc/view/sysauth.htm:39 +#: modules/luci-compat/luasrc/view/cbi/delegator.htm:17 +#: modules/luci-compat/luasrc/view/cbi/footer.htm:30 +#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:66 msgid "Reset" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:308 msgid "Reset Counters" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:376 msgid "Reset to defaults" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:162 msgid "Resolv and Hosts Files" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:188 msgid "Resolve file" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:405 +msgid "Resource not found" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:350 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:817 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:100 msgid "Restart" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:313 msgid "Restart Firewall" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:815 msgid "Restart radio interface" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:372 msgid "Restore" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:382 msgid "Restore backup" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:371 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:372 msgid "Reveal/hide password" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4053 msgid "Revert" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4138 msgid "Revert changes" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4320 msgid "Revert request failed with status %h" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4300 msgid "Reverting configuration…" msgstr "" -msgid "Root" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:372 msgid "Root directory for files served via TFTP" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:297 msgid "Root preparation" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:202 +msgid "Round-Robin policy (balance-rr, 0)" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:159 msgid "Route Allowed IPs" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:73 +msgid "Route table" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:60 msgid "Route type" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:625 msgid "Router Advertisement-Service" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:46 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:26 msgid "Router Password" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:15 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:194 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:27 msgid "Routes" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:15 msgid "" "Routes specify over which interface and gateway a certain host or network " "can be reached." msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:206 +msgid "Rule" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:335 msgid "Run a filesystem check before mounting the device" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:335 msgid "Run filesystem check" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2364 +msgid "Runtime error" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:219 msgid "SHA256" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:59 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:175 msgid "SNR" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:10 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:38 msgid "SSH Access" msgstr "" +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:70 msgid "SSH server address" msgstr "" +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:74 msgid "SSH server port" msgstr "" +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:58 msgid "SSH username" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:274 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:51 msgid "SSH-Keys" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:156 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:181 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1662 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:42 msgid "SSID" msgstr "" +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:9 +msgid "SSTP" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:41 +msgid "SSTP Server" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:339 +msgid "SWAP" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:2866 +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2198 +#: modules/luci-compat/luasrc/view/cbi/error.htm:17 +#: modules/luci-compat/luasrc/view/cbi/footer.htm:26 +#: modules/luci-compat/luasrc/view/cbi/header.htm:20 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:435 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:123 msgid "Save" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2180 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4049 +#: modules/luci-compat/luasrc/view/cbi/footer.htm:22 msgid "Save & Apply" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:602 +msgid "Save error" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:406 +msgid "Save mtdblock" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:396 +msgid "Save mtdblock contents" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:822 msgid "Scan" msgstr "" -msgid "Scan request failed" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:26 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:76 msgid "Scheduled Tasks" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4033 msgid "Section added" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4035 msgid "Section removed" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:331 msgid "See \"mount\" manpage for details" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:257 +msgid "" +"Select 'Force upgrade' to flash the image even if the image format check " +"fails. Use only if you are sure that the firmware is correct and meant for " +"your device!" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2622 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2762 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2927 +msgid "Select file…" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:318 +msgid "Selects the transmit hash policy to use for slave selection" +msgstr "" + +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:144 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:128 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:115 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:89 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:102 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:125 msgid "" "Send LCP echo requests at the given interval in seconds, only effective in " "conjunction with failure threshold" msgstr "" -msgid "Separate Clients" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:24 +msgid "Send the hostname of this device" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:157 msgid "Server Settings" msgstr "" +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:50 msgid "Service Name" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:87 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:71 msgid "Service Type" msgstr "" +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:36 msgid "Services" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2668 +msgid "Session expired" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:107 +msgid "Set VPN as Default Route" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:864 msgid "" "Set interface properties regardless of the link carrier (If set, carrier " "sense events do not invoke hotplug handlers)." msgstr "" -msgid "Set up Time Synchronization" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:300 +msgid "Set same MAC Address to all slaves" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:642 +msgid "Set this interface as master for the dhcpv6 relay." +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:304 +msgid "Set to currently active slave (active, 1)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:305 +msgid "Set to first slave added to the bond (follow, 2)" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_modemmanager.lua:55 +#: modules/luci-compat/luasrc/model/network/proto_qmi.lua:55 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:23 msgid "Setting PLMN failed" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:68 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:26 msgid "Setting operation mode failed" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:565 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:575 msgid "Setup DHCP Server" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:31 msgid "Severely Errored Seconds (SES)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:208 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:80 msgid "Short GI" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1085 msgid "Short Preamble" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:442 +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:18 msgid "Show current backup file list" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:264 +msgid "Show empty chains" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:354 msgid "Shutdown this interface" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:57 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:63 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:186 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1661 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:41 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:141 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:173 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:179 msgid "Signal" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:2071 +msgid "Signal / Noise" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:26 msgid "Signal Attenuation (SATN)" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:260 msgid "Signal:" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3786 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:217 msgid "Size" msgstr "" -msgid "Size (.ipk)" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:361 msgid "Size of DNS query cache" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:187 +msgid "Size of the ZRam device in megabytes" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/footer.htm:18 +#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:57 msgid "Skip" msgstr "" +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:36 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:46 msgid "Skip to content" msgstr "" +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:35 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:45 msgid "Skip to navigation" msgstr "" -msgid "Slot time" -msgstr "" - -msgid "Software" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:178 +msgid "Slave Interfaces" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:2883 +#: modules/luci-compat/luasrc/model/network.lua:1428 msgid "Software VLAN" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/header.htm:5 msgid "Some fields are invalid, cannot save values!" msgstr "" +#: modules/luci-base/luasrc/view/error404.htm:9 msgid "Sorry, the object you requested was not found." msgstr "" +#: modules/luci-base/luasrc/view/error500.htm:9 msgid "Sorry, the server encountered an unexpected error." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:414 msgid "" "Sorry, there is no sysupgrade support present; a new firmware image must be " "flashed manually. Please refer to the wiki for device specific install " "instructions." msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:383 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:69 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:182 msgid "Source" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:84 +msgid "Source Address" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:50 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:50 +msgid "Source interface" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:342 +msgid "" +"Specifies that duplicate frames (received on inactive ports) should be " +"dropped or delivered" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:358 +msgid "Specifies the ARP link monitoring frequency in milliseconds" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:366 +msgid "Specifies the IP addresses to use for ARP monitoring" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:395 +msgid "Specifies the MII link monitoring frequency in milliseconds" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:259 +msgid "Specifies the aggregation selection logic to use" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:292 msgid "Specifies the directory the device is attached to" msgstr "" -msgid "Specifies the listening port of this Dropbear instance" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:252 +msgid "" +"Specifies the mac-address for the actor in protocol packet exchanges " +"(LACPDUs). If empty, masters' mac address defaults to system default" msgstr "" +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:175 msgid "" "Specifies the maximum amount of failed ARP requests until hosts are presumed " "to be dead" msgstr "" +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:171 msgid "" "Specifies the maximum amount of seconds after which hosts are presumed to be " "dead" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:886 +msgid "" +"Specifies the maximum transmit power the wireless radio may use. Depending " +"on regulatory requirements and wireless usage, the actual transmit power may " +"be reduced by the driver." +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:236 +msgid "" +"Specifies the minimum number of links that must be active before asserting " +"carrier" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:200 +msgid "Specifies the mode to be used for this bonding interface" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:333 +msgid "" +"Specifies the number of IGMP membership reports to be issued after a " +"failover event in 200ms intervals" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:276 +msgid "" +"Specifies the number of packets to transmit through a slave before moving to " +"the next one" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:310 +msgid "" +"Specifies the number of peer notifications (gratuitous ARPs and unsolicited " +"IPv6 Neighbor Advertisements) to be issued after a failover event" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:284 +msgid "" +"Specifies the number of seconds between instances where the bonding driver " +"sends learning packets to each slaves peer switch" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:374 +msgid "Specifies the quantity of ARP IP targets that must be reachable" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:268 +msgid "" +"Specifies the rate in which the link partner will be asked to transmit " +"LACPDU packets" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:225 +msgid "" +"Specifies the reselection policy for the primary slave when failure of the " +"active slave or recovery of the primary slave occurs" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:244 +msgid "Specifies the system priority" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:403 +msgid "" +"Specifies the time in milliseconds to wait before disabling a slave after a " +"link failure detection" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:411 +msgid "" +"Specifies the time in milliseconds to wait before enabling a slave after a " +"link recovery detection" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:382 +msgid "" +"Specifies whether ARP probes and replies should be validated or non-ARP " +"traffic should be filtered for link monitoring" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:301 +msgid "" +"Specifies whether active-backup mode should set all slaves to the same MAC " +"address at enslavement" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:419 +msgid "" +"Specifies whether or not miimon should use MII or ETHTOOL ioctls vs. " +"netif_carrier_ok()" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:293 +msgid "" +"Specifies whether to shuffle active flows across slaves based on the load" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:179 +msgid "" +"Specifies which slave interfaces should be attached to this bonding interface" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:212 +msgid "" +"Specifies which slave is the primary device. It will always be the active " +"slave while it is available" +msgstr "" + +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:63 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:72 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:67 msgid "Specify a TOS (Type of Service)." msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:72 +msgid "" +"Specify a TOS (Type of Service). Can be either inherit (the " +"outer header inherits the value of the inner header) or an hexadecimal value " +"starting with 0x (optional)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:67 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:72 +msgid "" +"Specify a TTL (Time to Live) for the encapsulating packet other than the " +"default (64) (optional)." +msgstr "" + +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:58 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:67 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:62 msgid "" "Specify a TTL (Time to Live) for the encapsulating packet other than the " "default (64)." msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:72 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:77 +msgid "" +"Specify a Traffic Class. Can be either inherit (the outer " +"header inherits the value of the inner header) or an hexadecimal value " +"starting with 0x (optional)." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:57 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:62 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:67 +msgid "" +"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " +"bytes) (optional)." +msgstr "" + +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:53 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:62 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:57 msgid "" "Specify an MTU (Maximum Transmission Unit) other than the default (1280 " "bytes)." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1931 msgid "Specify the secret encryption key here." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:581 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:99 msgid "Start" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:76 msgid "Start priority" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1765 +msgid "Start refresh" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4253 msgid "Starting configuration apply…" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1678 msgid "Starting wireless scan..." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:109 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:64 msgid "Startup" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:19 msgid "Static IPv4 Routes" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:19 msgid "Static IPv6 Routes" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:165 msgid "Static Leases" msgstr "" +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:76 msgid "Static Routes" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:1981 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:172 +#: modules/luci-compat/luasrc/model/network.lua:967 msgid "Static address" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:411 msgid "" "Static leases are used to assign fixed IP addresses and symbolic hostnames " "to DHCP clients. They are also required for non-dynamic interface " "configurations where only hosts with a corresponding lease are served." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1102 +msgid "Station inactivity limit" +msgstr "" + +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:16 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:385 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:871 +#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:9 msgid "Status" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:356 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:101 msgid "Stop" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1676 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1770 +msgid "Stop refresh" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:259 msgid "Strict order" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:33 +msgid "Strong" +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/simpleform.htm:61 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1956 msgid "Submit" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:203 msgid "Suppress logging" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:204 msgid "Suppress logging of the routine operation of these protocols" msgstr "" -msgid "Swap" -msgstr "" - -msgid "Swap Entry" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:44 +msgid "Swap free" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:139 +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:3 msgid "Switch" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:172 msgid "Switch %q" msgstr "" -msgid "Switch %q (%s)" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:150 msgid "" "Switch %q has an unknown topology - the VLAN settings might not be accurate." msgstr "" -msgid "Switch Port Mask" -msgstr "" - +#: modules/luci-base/htdocs/luci-static/resources/network.js:2883 +#: modules/luci-compat/luasrc/model/network.lua:1426 msgid "Switch VLAN" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:403 msgid "Switch protocol" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:103 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:104 +#: modules/luci-compat/luasrc/view/cbi/ipaddr.htm:26 +msgid "Switch to CIDR list notation" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2657 +msgid "Symbolic link" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:75 +msgid "Sync with NTP-Server" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:67 msgid "Sync with browser" msgstr "" -msgid "Synchronizing..." -msgstr "" - +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:26 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:17 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:99 +#: modules/luci-mod-system/root/usr/share/luci/menu.d/luci-mod-system.json:3 msgid "System" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/syslog.js:25 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:39 msgid "System Log" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:243 +msgid "System Priority" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:104 msgid "System Properties" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:141 msgid "System log buffer size" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:336 msgid "TCP:" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:163 msgid "TFTP Settings" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:371 msgid "TFTP server root" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:49 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:84 msgid "TX" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:142 msgid "TX Rate" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:17 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:166 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:184 msgid "Table" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:31 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:65 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:163 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:181 msgid "Target" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:103 msgid "Target network" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:50 msgid "Terminate" msgstr "" -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:84 +msgid "The block mount command failed with code %d" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:77 msgid "" "The HE.net endpoint update configuration changed, you must now use the plain " "username instead of the user ID!" msgstr "" +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:40 +msgid "The IPv4 address or the fully-qualified domain name of the remote end." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:42 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:42 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:40 msgid "" "The IPv4 address or the fully-qualified domain name of the remote tunnel end." msgstr "" +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:40 +msgid "The IPv6 address or the fully-qualified domain name of the remote end." +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:42 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:42 +msgid "" +"The IPv6 address or the fully-qualified domain name of the remote tunnel end." +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:53 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:59 msgid "" "The IPv6 prefix assigned to the provider, usually ends with ::" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1916 msgid "" "The allowed characters are: A-Z, a-z, 0-9 and _" msgstr "" -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - +#: modules/luci-compat/luasrc/view/cbi/error.htm:6 msgid "The configuration file could not be loaded due to the following error:" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4129 msgid "" "The device could not be reached within %d seconds after applying the pending " "changes, which caused the configuration to be rolled back for safety " @@ -3154,48 +6063,90 @@ msgid "" "state." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:280 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:392 msgid "" "The device file of the memory or partition (e.g." " /dev/sda1)" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:736 msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" +"The existing wireless configuration needs to be changed for LuCI to function " +"properly." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:215 msgid "" "The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " +"compare them with the original file to ensure data integrity.
    Click " "\"Proceed\" below to start the flash procedure." msgstr "" -msgid "The following changes have been reverted" -msgstr "" - +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js:195 msgid "The following rules are currently active on this system." msgstr "" -msgid "The given network name is not unique" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:154 +msgid "The gateway address must not be a local IP address" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:147 +msgid "The given SSH public key has already been added." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:153 msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." +"The given SSH public key is invalid. Please supply proper public RSA or " +"ECDSA keys." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:716 +msgid "The interface name is already used" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:722 +msgid "The interface name is too long" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:61 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:55 msgid "" "The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " "addresses." msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:57 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:63 msgid "The length of the IPv6 prefix in bits" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:163 +msgid "The local IPv4 address" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gre.js:46 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/gretap.js:46 +#: protocols/luci-proto-ipip/htdocs/luci-static/resources/protocol/ipip.js:44 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:44 msgid "The local IPv4 address over which the tunnel is created (optional)." msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:169 +msgid "The local IPv4 netmask" +msgstr "" + +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:46 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:46 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:44 +msgid "The local IPv6 address over which the tunnel is created (optional)." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1922 +msgid "The network name is already used" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:139 msgid "" "The network ports on this device can be combined to several VLANs in which computers can " @@ -3205,17 +6156,30 @@ msgid "" "next greater network like the internet and other ports for a local network." msgstr "" -msgid "The selected protocol needs a device assigned" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:158 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:42 +msgid "The reboot command failed with code %d" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:147 +msgid "The restore command failed with code %d" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1297 +msgid "The selected %s mode is incompatible with %s encryption" +msgstr "" + +#: modules/luci-base/luasrc/view/csrftoken.htm:11 msgid "The submitted security token is invalid or already expired!" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:98 msgid "" "The system is erasing the configuration partition now and will reboot itself " "when finished." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:291 msgid "" "The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " "few minutes before you try to reconnect. It might be necessary to renew the " @@ -3223,288 +6187,593 @@ msgid "" "settings." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:163 +msgid "" +"The system is rebooting now. If the restored configuration changed the " +"current LAN IP address, you might need to reconnect manually." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:85 +msgid "The system password has been successfully changed." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:317 +msgid "The sysupgrade command failed with code %d" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:120 +msgid "" +"The uploaded backup archive appears to be valid and contains the files " +"listed below. Press \"Continue\" to restore the backup and reboot, or " +"\"Cancel\" to abort the operation." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:115 +msgid "The uploaded backup archive is not readable" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:244 +msgid "The uploaded firmware does not allow keeping current configuration." +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:239 msgid "" "The uploaded image file does not contain a supported format. Make sure that " "you choose the generic image format for your platform." msgstr "" -msgid "There are no active leases." +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:535 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:567 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:52 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:89 +msgid "There are no active leases" msgstr "" -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:4268 +msgid "There are no changes to apply" msgstr "" +#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:55 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:213 +#: themes/luci-theme-openwrt-2020/luasrc/view/themes/openwrt2020/header.htm:56 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:80 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:282 msgid "" "There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." +"protect the web interface." msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:49 msgid "This IPv4 address of the relay" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1551 +msgid "This authentication type is not applicable to the selected EAP method." +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:57 +msgid "This does not look like a valid PEM file" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:256 msgid "" "This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:426 +#: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16 msgid "" "This is a list of shell glob patterns for matching files and directories to " "include during sysupgrade. Modified files in /etc/config/ and certain other " "configurations are automatically preserved." msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:81 msgid "" "This is either the \"Update Key\" configured for the tunnel or the account " "password if no update key has been configured" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:116 msgid "" "This is the content of /etc/rc.local. Insert your own commands here (in " "front of 'exit 0') to execute them at the end of the boot process." msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:54 msgid "" "This is the local endpoint address assigned by the tunnel broker, it usually " "ends with ...:2/64" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:173 msgid "" "This is the only DHCP in the local network" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:73 msgid "This is the plain username for logging into the account" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:57 msgid "" "This is the prefix routed to you by the tunnel broker for use by clients" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:28 msgid "This is the system crontab in which scheduled tasks can be defined." msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:50 msgid "" "This is usually the address of the nearest PoP operated by the tunnel broker" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/processes.js:65 msgid "" "This list gives an overview over currently running system processes and " "their status." msgstr "" -msgid "This page gives an overview over currently active network connections." +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1505 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1563 +msgid "" +"This option cannot be used because the ca-bundle package is not installed." msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:2205 +#: modules/luci-base/htdocs/luci-static/resources/form.js:2511 +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:172 +#: modules/luci-compat/luasrc/view/cbi/tsection.htm:32 msgid "This section contains no values yet" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:110 msgid "Time Synchronization" msgstr "" -msgid "Time Synchronization is not configured yet." +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1093 +msgid "Time interval for rekeying GTK" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:124 msgid "Timezone" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/luci.js:2678 +msgid "To login…" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:372 msgid "" "To restore configuration files, you can upload a previously generated backup " "archive here. To reset the firmware to its initial state, click \"Perform " "reset\" (only possible with squashfs images)." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:907 msgid "Tone" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:35 msgid "Total Available" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:102 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:103 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js:113 msgid "Traceroute" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:53 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:64 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:96 msgid "Traffic" msgstr "" +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:72 +#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:77 +msgid "Traffic Class" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:385 msgid "Transfer" msgstr "" -msgid "Transmission Rate" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:24 msgid "Transmit" msgstr "" -msgid "Transmit Power" -msgstr "" - -msgid "Transmitter Antenna" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:317 +msgid "Transmit Hash Policy" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:74 msgid "Trigger" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/led-trigger/netdev.js:19 msgid "Trigger Mode" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:69 msgid "Tunnel ID" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:2886 +#: modules/luci-compat/luasrc/model/network.lua:1431 msgid "Tunnel Interface" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:44 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:55 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:76 msgid "Tunnel Link" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:185 msgid "Tx-Power" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:44 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:61 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:43 msgid "Type" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/connections.js:326 msgid "UDP:" msgstr "" +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:90 msgid "UMTS only" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_3g.lua:10 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:43 msgid "UMTS/GPRS/EV-DO" msgstr "" -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:254 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:360 msgid "UUID" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:16 +#: modules/luci-base/htdocs/luci-static/resources/network.js:17 +#: modules/luci-compat/luasrc/model/network.lua:34 +#: modules/luci-compat/luasrc/model/network.lua:35 msgid "Unable to determine device name" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:18 +#: modules/luci-compat/luasrc/model/network.lua:36 msgid "Unable to determine external IP address" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:19 +#: modules/luci-compat/luasrc/model/network.lua:37 msgid "Unable to determine upstream interface" msgstr "" +#: modules/luci-base/luasrc/view/error404.htm:11 msgid "Unable to dispatch" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/dmesg.js:9 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/syslog.js:15 +msgid "Unable to load log data:" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_modemmanager.lua:54 +#: modules/luci-compat/luasrc/model/network/proto_qmi.lua:54 +#: protocols/luci-proto-qmi/htdocs/luci-static/resources/protocol/qmi.js:22 msgid "Unable to obtain client ID" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:221 +msgid "Unable to obtain mount information" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:278 +msgid "Unable to reset ip6tables counters: %s" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:276 +msgid "Unable to reset iptables counters: %s" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:61 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:7 msgid "Unable to resolve AFTR host name" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:20 +#: modules/luci-compat/luasrc/model/network.lua:38 msgid "Unable to resolve peer host name" msgstr "" +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:284 +msgid "Unable to restart firewall: %s" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js:20 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:342 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:57 +msgid "Unable to save contents: %s" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:33 msgid "Unavailable Seconds (UAS)" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/fs.js:102 +msgid "Unexpected reply data format" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:1983 +#: modules/luci-compat/luasrc/model/network.lua:971 msgid "Unknown" msgstr "" -msgid "Unknown Error, password not changed!" +#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:47 +msgid "Unknown and unsupported connection method." msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:2292 +#: modules/luci-compat/luasrc/model/network.lua:1138 msgid "Unknown error (%s)" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:412 +msgid "Unknown error code" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/network.js:1980 +#: modules/luci-base/htdocs/luci-static/resources/protocol/none.js:6 +#: modules/luci-compat/luasrc/model/network.lua:965 msgid "Unmanaged" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:195 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:217 msgid "Unmount" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:112 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:259 +msgid "Unnamed key" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3973 msgid "Unsaved Changes" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/rpc.js:410 +msgid "Unspecified error" +msgstr "" + +#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:64 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:9 msgid "Unsupported MAP type" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:69 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:27 msgid "Unsupported modem" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:267 msgid "Unsupported protocol type." msgstr "" +#: modules/luci-compat/luasrc/view/cbi/tblsection.htm:151 msgid "Up" msgstr "" -msgid "Update lists" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:410 +msgid "Up Delay" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3860 +msgid "Upload" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:413 msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." +"Upload a sysupgrade-compatible image here to replace the running firmware." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:138 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:169 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:384 msgid "Upload archive..." msgstr "" -msgid "Uploaded File" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2816 +msgid "Upload file" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2791 +msgid "Upload file…" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:2738 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3848 +msgid "Upload request failed: %s" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3767 +#: modules/luci-base/htdocs/luci-static/resources/ui.js:3821 +msgid "Uploading file…" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:737 +msgid "" +"Upon pressing \"Continue\", anonymous \"wifi-iface\" sections will be " +"assigned with a name in the form wifinet# and the network will be " +"restarted to apply the updated configuration." +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:81 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js:60 msgid "Uptime" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:177 msgid "Use /etc/ethers" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:269 +msgid "Use DHCP advertised servers" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:167 msgid "Use DHCP gateway" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:40 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:124 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:39 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:116 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:68 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:59 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:103 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:90 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:64 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:77 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:100 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:69 msgid "Use DNS servers advertised by peer" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:565 msgid "Use ISO/IEC 3166 alpha2 country codes." msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:56 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:97 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:77 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:61 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:75 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:92 msgid "Use MTU on tunnel interface" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:93 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:73 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:57 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:88 msgid "Use TTL on tunnel interface" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:320 +msgid "Use XOR of hardware MAC addresses (layer2)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:321 +msgid "Use XOR of hardware MAC addresses and IP addresses (layer2+3)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:323 +msgid "" +"Use XOR of hardware MAC addresses and IP addresses, rely on skb_flow_dissect " +"(encap2+3)" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:294 msgid "Use as external overlay (/overlay)" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:293 msgid "Use as root filesystem (/)" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:34 msgid "Use broadcast flag" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:860 msgid "Use builtin IPv6-management" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:43 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:182 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:127 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:42 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:119 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:62 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:106 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:93 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:67 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:80 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:103 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:72 msgid "Use custom DNS servers" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:37 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:116 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:33 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:64 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:56 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:100 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:87 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:61 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:74 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:97 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:61 msgid "Use default gateway" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:48 +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:230 +#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:119 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:51 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6in4.js:88 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6rd.js:68 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/6to4.js:52 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:70 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:83 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:111 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:153 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:72 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/l2tp.js:67 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:111 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoa.js:98 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:72 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:85 +#: protocols/luci-proto-pppossh/htdocs/luci-static/resources/protocol/pppossh.js:108 +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:64 msgid "Use gateway metric" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:96 +msgid "Use legacy MAP" +msgstr "" + +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/map.js:96 +msgid "" +"Use legacy MAP interface identifier format (draft-ietf-softwire-map-00) " +"instead of RFC7597" +msgstr "" + +#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:179 msgid "Use routing table" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1498 +msgid "Use system certificates" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1556 +msgid "Use system certificates for inner-tunnel" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:412 msgid "" "Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " @@ -3513,326 +6782,830 @@ msgid "" "standard host-specific lease time, e.g. 12h, 3d or infinite." msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:322 +msgid "Use upper layer protocol information (layer3+4)" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:324 +msgid "" +"Use upper layer protocol information, rely on skb_flow_dissect (encap3+4)" +msgstr "" + +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js:36 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:194 msgid "Used" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1394 msgid "Used Key Slot" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1437 msgid "" "Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " "needed with normal WPA(2)-PSK." msgstr "" +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:105 +msgid "User Group" +msgstr "" + +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:114 msgid "User certificate (PEM encoded)" msgstr "" +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:126 msgid "User key (PEM encoded)" msgstr "" +#: modules/luci-base/luasrc/view/sysauth.htm:23 +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:106 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:50 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:56 msgid "Username" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:975 msgid "VC-Mux" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:923 msgid "VDSL" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:173 msgid "VLANs on %q" msgstr "" -msgid "VLANs on %q (%s)" +#: modules/luci-base/root/usr/share/luci/menu.d/luci-base.json:54 +msgid "VPN" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:42 msgid "VPN Local address" msgstr "" +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:46 msgid "VPN Local port" msgstr "" +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:96 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:42 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pptp.js:58 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:39 msgid "VPN Server" msgstr "" +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:99 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:45 msgid "VPN Server port" msgstr "" +#: protocols/luci-proto-openconnect/htdocs/luci-static/resources/protocol/openconnect.js:103 +#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:60 msgid "VPN Server's certificate SHA1 hash" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_vpnc.lua:9 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:9 msgid "VPNC (CISCO 3000 (and others) VPN)" msgstr "" +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:10 +msgid "VXLAN (RFC7348)" +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan.js:53 +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:48 +msgid "VXLAN network identifier" +msgstr "" + +#: protocols/luci-proto-vxlan/htdocs/luci-static/resources/protocol/vxlan6.js:10 +msgid "VXLANv6 (RFC7348)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1498 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1556 +msgid "" +"Validate server certificate using built-in system CA bundle,
    requires " +"the \"ca-bundle\" package" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:387 +msgid "Validation for all slaves" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:385 +msgid "Validation only for active slave" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:386 +msgid "Validation only for backup slaves" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:154 +msgid "Value must not be empty" +msgstr "" + +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:73 msgid "Vendor" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:55 msgid "Vendor Class to send when requesting DHCP" msgstr "" -msgid "Verify" -msgstr "" - -msgid "Version" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js:196 +msgid "Verifying the uploaded image file." msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:59 msgid "Virtual dynamic interface" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1032 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1033 msgid "WDS" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1217 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1306 msgid "WEP Open System" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1218 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1307 msgid "WEP Shared Key" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1931 msgid "WEP passphrase" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1070 msgid "WMM Mode" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1931 msgid "WPA passphrase" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1208 msgid "" "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " "and ad-hoc mode) to be installed." msgstr "" -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:47 msgid "Waiting for device..." msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:168 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:178 msgid "Warning" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/reboot.js:26 msgid "Warning: There are unsaved changes that will get lost on reboot!" msgstr "" -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/password.js:37 +msgid "Weak" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1460 +msgid "" +"When using a PSK, the PMK can be automatically generated. When enabled, the " +"R0/R1 key options below are not applied. Disable this to use the R0 and R1 " +"key options." +msgstr "" + +#: modules/luci-compat/luasrc/view/cbi/wireless_modefreq.htm:166 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:468 msgid "Width" msgstr "" +#: modules/luci-compat/luasrc/model/network/proto_wireguard.lua:9 +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:29 msgid "WireGuard VPN" msgstr "" +#: modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json:17 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:87 +#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:105 msgid "Wireless" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:2874 +#: modules/luci-compat/luasrc/model/network.lua:1419 msgid "Wireless Adapter" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/network.js:2853 +#: modules/luci-base/htdocs/luci-static/resources/network.js:4057 +#: modules/luci-compat/luasrc/model/network.lua:1405 +#: modules/luci-compat/luasrc/model/network.lua:1868 msgid "Wireless Network" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:753 msgid "Wireless Overview" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:922 msgid "Wireless Security" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:735 +msgid "Wireless configuration migration" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:153 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:193 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:47 msgid "Wireless is disabled" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:153 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:193 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:47 msgid "Wireless is not associated" msgstr "" -msgid "Wireless is restarting..." -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:877 msgid "Wireless network is disabled" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:877 msgid "Wireless network is enabled" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:275 msgid "Write received DNS requests to syslog" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:160 msgid "Write system log to file" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:204 +msgid "XOR policy (balance-xor, 2)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:3643 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:295 +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:344 +#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:109 +msgid "Yes" +msgstr "" + +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:303 +msgid "Yes (none, 0)" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:176 +msgid "" +"You appear to be currently connected to the device via the \"%h\" interface. " +"Do you really want to shut down the interface?" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:112 msgid "" "You can enable or disable installed init scripts here. Changes will applied " "after a device reboot.
    Warning: If you disable essential init " "scripts like \"network\", your device might become inaccessible!" msgstr "" +#: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:65 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:223 +#: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:73 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:294 msgid "" "You must enable JavaScript in your browser or LuCI will not work properly." msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:115 msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." +"You must select a primary interface which is included in selected slave " +"interfaces!" msgstr "" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:96 +msgid "" +"You must select at least one ARP IP target if ARP monitoring is selected!" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:192 +msgid "ZRam Compression Algorithm" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:199 +msgid "ZRam Compression Streams" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:185 +msgid "ZRam Settings" +msgstr "" + +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:187 +msgid "ZRam Size" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:331 msgid "any" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:908 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:916 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:921 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1157 +#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:78 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:48 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:51 +#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:103 msgid "auto" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:85 +msgid "automatic" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:82 msgid "baseT" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:981 msgid "bridged" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:146 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:401 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:35 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:99 +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:31 msgid "create" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:69 msgid "create:" msgstr "" -msgid "creates a bridge over specified interface(s)" -msgstr "" - -msgid "dB" -msgstr "" - +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:55 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:57 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:58 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:62 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:63 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:83 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:84 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:87 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:185 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:186 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:187 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:171 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:173 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:174 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:178 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:179 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:261 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:264 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:267 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:271 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:274 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:277 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:303 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:304 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:305 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:309 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:310 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:311 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:313 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:314 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/wireless.js:315 msgid "dBm" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1014 msgid "disable" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:185 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:626 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:632 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:638 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:91 +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:25 msgid "disabled" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:519 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:553 +msgid "driver default" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:81 +msgid "e.g: --proxy 10.10.10.10" +msgstr "" + +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:83 +msgid "e.g: dump" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:524 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:545 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:42 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:69 msgid "expired" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:182 msgid "" "file where given DHCP-leases will be stored" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:85 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:195 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:61 msgid "forward" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:84 msgid "full-duplex" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:84 msgid "half-duplex" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:569 +msgid "hexadecimal encoded value" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1738 msgid "hidden" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:629 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:635 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:640 msgid "hybrid mode" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:36 msgid "if target is a network" msgstr "" +#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dslite.js:63 +msgid "ignore" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:69 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:191 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:46 msgid "input" msgstr "" -msgid "kB" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:395 +msgid "key between 8 and 63 characters" msgstr "" -msgid "kB/s" -msgstr "" - -msgid "kbit/s" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:407 +msgid "key with either 5 or 13 characters" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:189 msgid "local DNS file" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1316 +msgid "medium security" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1465 msgid "minutes" msgstr "" -msgid "mixed WPA/WPA2" +#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:422 +msgid "netif_carrier_ok()" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:46 msgid "no" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:76 msgid "no link" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:59 +msgid "non-empty value" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/form.js:3007 msgid "none" msgstr "" +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:41 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:55 +#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:69 msgid "not present" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:347 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:901 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:905 +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:197 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:245 msgid "off" msgstr "" +#: themes/luci-theme-material/luasrc/view/themes/material/header.htm:196 +#: themes/luci-theme-rosy/luasrc/view/themes/rosy/header.htm:242 msgid "on" msgstr "" -msgid "open" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1317 +msgid "open network" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:69 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:46 msgid "output" msgstr "" -msgid "overlay" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:241 +msgid "positive decimal value" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:233 +msgid "positive integer value" +msgstr "" + +#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:80 msgid "random" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:628 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:634 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:639 msgid "relay mode" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:982 msgid "routed" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1093 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1102 +msgid "sec" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:627 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:633 msgid "server mode" msgstr "" +#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:53 +msgid "sstpc Log-level" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:649 msgid "stateful-only" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:647 msgid "stateless" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:648 msgid "stateless + stateful" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1315 +msgid "strong security" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:352 msgid "tagged" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1448 msgid "time units (TUs / 1.024 ms) [1000-65535]" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:559 +msgid "unique value" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:534 msgid "unknown" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:340 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:522 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:543 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:40 +#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/40_dhcp.js:67 msgid "unlimited" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/form.js:3372 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:76 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:138 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:369 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:393 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:428 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:465 +#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:561 +#: modules/luci-compat/luasrc/view/cbi/firewall_zonelist.htm:53 +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:38 msgid "unspecified" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/network_netlist.htm:71 msgid "unspecified -or- create:" msgstr "" +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:350 msgid "untagged" msgstr "" +#: modules/luci-base/htdocs/luci-static/resources/validation.js:246 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:121 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:132 +msgid "valid IP address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:246 +msgid "valid IP address or prefix" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:281 +msgid "valid IPv4 CIDR" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:254 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:125 +msgid "valid IPv4 address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:254 +msgid "valid IPv4 address or network" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:374 +msgid "valid IPv4 address:port" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:314 +msgid "valid IPv4 network" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:276 +msgid "valid IPv4 or IPv6 CIDR" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:267 +msgid "valid IPv4 prefix value (0-32)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:286 +msgid "valid IPv6 CIDR" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:262 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:129 +msgid "valid IPv6 address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:262 +msgid "valid IPv6 address or prefix" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:304 +msgid "valid IPv6 host id" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:319 +msgid "valid IPv6 network" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:272 +msgid "valid IPv6 prefix value (0-128)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:340 +msgid "valid MAC address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:411 +msgid "valid UCI identifier" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:362 +msgid "valid UCI identifier, hostname or IP address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:383 +#: modules/luci-base/htdocs/luci-static/resources/validation.js:386 +msgid "valid address:port" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:533 +#: modules/luci-base/htdocs/luci-static/resources/validation.js:537 +msgid "valid date (YYYY-MM-DD)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:237 +msgid "valid decimal value" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:405 +msgid "valid hexadecimal WEP key" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:393 +msgid "valid hexadecimal WPA key" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:368 +msgid "valid host:port" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:355 +#: modules/luci-base/htdocs/luci-static/resources/validation.js:357 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:73 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:79 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:107 +msgid "valid hostname" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:345 +msgid "valid hostname or IP address" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:229 +msgid "valid integer value" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:309 +msgid "valid network in address/netmask notation" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:508 +msgid "valid phone digit (0-9, \"*\", \"#\", \"!\" or \".\")" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:332 +#: modules/luci-base/htdocs/luci-static/resources/validation.js:335 +msgid "valid port or port range (port1-port2)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:324 +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:136 +msgid "valid port value" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:513 +msgid "valid time (HH:MM:SS)" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:435 +msgid "value between %d and %d characters" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:416 +msgid "value between %f and %f" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:420 +msgid "value greater or equal to %f" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:424 +msgid "value smaller or equal to %f" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:429 +msgid "value with %d characters" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:440 +msgid "value with at least %d characters" +msgstr "" + +#: modules/luci-base/htdocs/luci-static/resources/validation.js:445 +msgid "value with at most %d characters" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1317 +msgid "weak security" +msgstr "" + +#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:46 msgid "yes" msgstr "" +#: modules/luci-compat/luasrc/view/cbi/delegator.htm:20 msgid "« Back" msgstr "" diff --git a/luci-base/po/tr/base.po b/luci-base/po/tr/base.po deleted file mode 100644 index 41f5b6675..000000000 --- a/luci-base/po/tr/base.po +++ /dev/null @@ -1,3887 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-11-25 14:47+0200\n" -"Last-Translator: qbilay \n" -"Language-Team: none\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d dakika gösteriliyor, %d saniye aralıklı)" - -msgid "(%s available)" -msgstr "(%s uygun)" - -msgid "(empty)" -msgstr "(boş)" - -msgid "(no interfaces attached)" -msgstr "(arayüz eklenmedi)" - -msgid "-- Additional Field --" -msgstr "-- Ek Alan--" - -msgid "-- Please choose --" -msgstr "-- Lütfen seçiniz --" - -msgid "-- custom --" -msgstr "-- özel --" - -msgid "-- match by device --" -msgstr "-- cihaza göre eşleştir --" - -msgid "-- match by label --" -msgstr "-- etikete göre eşleştir --" - -msgid "-- match by uuid --" -msgstr "-- uuid'e göre eşleştir --" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "1 Dakikalık Yük:" - -msgid "15 Minute Load:" -msgstr "15 Dakikalık Yük:" - -msgid "4-character hexadecimal ID" -msgstr "4 karakterli HEX ID" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "5 Dakikalık Yük:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr " BSSID " - -msgid "DNS query port" -msgstr "DNS port sorgula" - -msgid "DNS server port" -msgstr "DNS sunucu port" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "" - -msgid "IPv4-Address" -msgstr "IPv4-Adres" - -msgid "IPv4-Gateway" -msgstr "IPv4-Gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Address or Network " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Ayarları" - -msgid "LED Name" -msgstr "LED Adı" - -msgid "MAC-Address" -msgstr "MAC-Adresi" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Maks. DHCP leases" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Maks. EDNS0 paket boyutu" - -msgid "Max. concurrent queries" -msgstr "Maks. eşzamanlı sorgu" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP yenileme aralığı" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM Köprüleri" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "Erişim Noktası" - -msgid "Actions" -msgstr "Eylemler" - -msgid "Active IPv4-Routes" -msgstr "" -"Aktif IPv4-Yönlendiriciler" - -msgid "Active IPv6-Routes" -msgstr "" -"Aktif IPv6-Yönlendiriciler" - -msgid "Active Connections" -msgstr "Aktif Bağlantılar" - -msgid "Active DHCP Leases" -msgstr "Aktif DHCP Kiraları" - -msgid "Active DHCPv6 Leases" -msgstr "Aktif DHCPv6 Kiraları" - -msgid "Ad-Hoc" -msgstr "" - -msgid "Add" -msgstr "Ekle" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "Yeni arabirim ekle..." - -msgid "Additional Hosts files" -msgstr "" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "Adresler" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "" - -msgid "Advanced Settings" -msgstr "Gelişmiş Ayarlar" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "Uyarı" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -# "Secure Shell" için ne kullanılabilinir bir fikrim yok. -msgid "Allow SSH password authentication" -msgstr "" -"SSH parola kimlik doğrulamasına izin ver" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Listelenenlerin haricindekilere izin ver" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Yanlızca listelenenlere izin ver" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "1. Anten" - -msgid "Antenna 2" -msgstr "2. Anten" - -msgid "Antenna Configuration" -msgstr "Anten Yapılandırması" - -msgid "Any zone" -msgstr "" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "Arabirim ata..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Kimlik doğrulama" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Yetkilendirme" - -msgid "Authorization Required" -msgstr "Yetkilendirme Gerekli" - -msgid "Auto Refresh" -msgstr "Otomatik Yenileme" - -msgid "Automatic" -msgstr "Otomatik" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Kullanılabilir" - -msgid "Available packages" -msgstr "Kullanılabilir Paketler" - -msgid "Average:" -msgstr "Ortalama:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Geri" - -msgid "Back to Overview" -msgstr "Genel Bakışa dön" - -msgid "Back to configuration" -msgstr "Yapılandırmaya dön" - -msgid "Back to overview" -msgstr "Genel Bakışa dön" - -msgid "Back to scan results" -msgstr "Tarama sonuçlarına dön" - -msgid "Backup" -msgstr "Yedekleme" - -msgid "Backup / Flash Firmware" -msgstr "" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "" - -msgid "Bridge interfaces" -msgstr "" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU kullanımı (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Vazgeç" - -msgid "Category" -msgstr "Kategori" - -msgid "Chain" -msgstr "Zincir" - -msgid "Changes" -msgstr "Değişiklikler" - -msgid "Changes applied." -msgstr "" - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "" - -msgid "Channel" -msgstr "Kanal" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" - -msgid "Client" -msgstr "" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "" - -msgid "Common Configuration" -msgstr "" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "" - -msgid "Connect" -msgstr "" - -msgid "Connected" -msgstr "" - -msgid "Connection Limit" -msgstr "" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" - -msgid "DHCP Server" -msgstr "" - -msgid "DHCP and DNS" -msgstr "" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Delete this network" -msgstr "" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "" - -msgid "Design" -msgstr "" - -msgid "Destination" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Device Configuration" -msgstr "" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "" - -msgid "Distance to farthest network member in meters." -msgstr "" - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "" - -msgid "Ethernet Switch" -msgstr "" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Filter" -msgstr "" - -msgid "Filter private" -msgstr "" - -msgid "Filter useless" -msgstr "" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "" - -msgid "Firewall Status" -msgstr "" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "" - -msgid "Frame Bursting" -msgstr "" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hide ESSID" -msgstr "" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "" - -msgid "Ignore resolve file" -msgstr "" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "" - -msgid "Initscripts" -msgstr "" - -msgid "Install" -msgstr "" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "" - -msgid "Isolate Clients" -msgstr "" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "" - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "" - -msgid "Leasetime remaining" -msgstr "" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "" - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Oturum Aç" - -msgid "Logout" -msgstr "Oturumu Kapat" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "" - -msgid "MAC-Filter" -msgstr "" - -msgid "MAC-List" -msgstr "" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "" - -msgid "Memory usage (%)" -msgstr "" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "" - -msgid "Mount Points" -msgstr "" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "" - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "" - -msgid "OPKG-Configuration" -msgstr "" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "" - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "" - -msgid "Owner" -msgstr "" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "" - -msgid "PIN" -msgstr "" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "" - -msgid "Packets" -msgstr "" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "Password authentication" -msgstr "" - -msgid "Password of Private Key" -msgstr "" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "" - -msgid "Policy" -msgstr "" - -msgid "Port" -msgstr "" - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "" - -msgid "Processes" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "" - -msgid "Protocol" -msgstr "" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "" - -msgid "RX" -msgstr "" - -msgid "RX Rate" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "" - -msgid "Receive" -msgstr "" - -msgid "Receiver Antenna" -msgstr "" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "References" -msgstr "" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Sıfırla" - -msgid "Reset Counters" -msgstr "Sayaçları Sıfırla" - -msgid "Reset to defaults" -msgstr "Varsayılanlara dön" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "Tekrar başlat" - -msgid "Restart Firewall" -msgstr "" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "Geri Yükleme" - -msgid "Restore backup" -msgstr "Yedeklemeyi geri yükle" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "Dönmek" - -msgid "Revert changes" -msgstr "Değişiklikleri geri al" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "Kök" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "Yönlendirici Parolası" - -msgid "Routes" -msgstr "Yönlendirmeler" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" - -msgid "Run a filesystem check before mounting the device" -msgstr "Cihazı bağlamadan önce bir dosya sistemi kontrolü yapın" - -msgid "Run filesystem check" -msgstr "Dosya sistemi kontrolünü çalıştır" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "SSH Erişimi" - -msgid "SSH server address" -msgstr "SSH sunucu adresi" - -msgid "SSH server port" -msgstr "SSH sunucu portu" - -msgid "SSH username" -msgstr "SSH kullanıcı adı" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Kaydet" - -msgid "Save & Apply" -msgstr "Kaydet & Uygula" - -msgid "Scan" -msgstr "Tara" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Zamanlanmış Görevler" - -msgid "Section added" -msgstr "Bölüm eklendi" - -msgid "Section removed" -msgstr "Bölüm kaldırıldı" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "" - -msgid "Server Settings" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "Servisler" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Signal" -msgstr "Sinyal" - -msgid "Signal Attenuation (SATN)" -msgstr "Sinyal Zayıflama (SATN)" - -msgid "Signal:" -msgstr "Sinyal:" - -msgid "Size" -msgstr "Boyut" - -msgid "Size (.ipk)" -msgstr "Boyut (.ipk)" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "Atla" - -msgid "Skip to content" -msgstr "" - -msgid "Skip to navigation" -msgstr "" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Yazılım" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Başlat" - -msgid "Start priority" -msgstr "" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "" - -msgid "Static IPv6 Routes" -msgstr "" - -msgid "Static Leases" -msgstr "" - -msgid "Static Routes" -msgstr "" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Durum" - -msgid "Stop" -msgstr "Durdur" - -msgid "Strict order" -msgstr "" - -msgid "Submit" -msgstr "Gönder" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "Sistem" - -msgid "System Log" -msgstr "" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "" - -msgid "Target" -msgstr "" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been reverted" -msgstr "" - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" - -msgid "There are no active leases." -msgstr "" - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" - -msgid "This page gives an overview over currently active network connections." -msgstr "" - -msgid "This section contains no values yet" -msgstr "" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "" - -msgid "Transfer" -msgstr "" - -msgid "Transmission Rate" -msgstr "" - -msgid "Transmit" -msgstr "" - -msgid "Transmit Power" -msgstr "" - -msgid "Transmitter Antenna" -msgstr "" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "" - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Yüklenen Dosya" - -msgid "Uptime" -msgstr "Açılma süresi" - -msgid "Use /etc/ethers" -msgstr "" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "Özel DNS sunucularını kullan" - -msgid "Use default gateway" -msgstr "Varsayılan ağ geçidini kullan" - -msgid "Use gateway metric" -msgstr "Ağ geçidi metriğini kullan" - -msgid "Use routing table" -msgstr "Yönlendirme tablosunu kullan" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Kullanılmış" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Kullanıcı adı" - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "Satıcı" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "Kontrol" - -msgid "Version" -msgstr "Versiyon" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "Uyarı" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "Genişlik" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "Kablosuz" - -msgid "Wireless Adapter" -msgstr "" - -msgid "Wireless Network" -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Wireless Security" -msgstr "" - -msgid "Wireless is disabled" -msgstr "" - -msgid "Wireless is not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"LuCI'nin düzgün çalışması için tarayıcınızda Java Scripti " -"etkinleştirmelisiniz." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "herhangi" - -msgid "auto" -msgstr "otomatik" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "köprülü" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "oluşturma:" - -msgid "creates a bridge over specified interface(s)" -msgstr "" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "etkin değil" - -msgid "disabled" -msgstr "devre dışı" - -msgid "expired" -msgstr "sona ermiş" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" - -msgid "forward" -msgstr "ileri" - -msgid "full-duplex" -msgstr "tam çift yönlü" - -msgid "half-duplex" -msgstr "yarı çift yönlü" - -msgid "hidden" -msgstr "gizli" - -msgid "hybrid mode" -msgstr "hibrit mod" - -msgid "if target is a network" -msgstr "eğer hedef ağsa" - -msgid "input" -msgstr "giriş" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "yerel DNS dosyası" - -msgid "minutes" -msgstr "dakika" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "hayır" - -msgid "no link" -msgstr "bağlantı yok" - -msgid "none" -msgstr "hiçbiri" - -msgid "not present" -msgstr "mevcut değil" - -msgid "off" -msgstr "kapalı" - -msgid "on" -msgstr "açık" - -msgid "open" -msgstr "açık" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "bindirilmiş" - -msgid "random" -msgstr "rastgele" - -msgid "relay mode" -msgstr "anahtarlama modu" - -msgid "routed" -msgstr "yönlendirildi" - -msgid "server mode" -msgstr "sunucu modu" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "durumsuz" - -msgid "stateless + stateful" -msgstr "durumsuz + durumlu" - -msgid "tagged" -msgstr "etiketlendi" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "bilinmeyen" - -msgid "unlimited" -msgstr "sınırsız" - -msgid "unspecified" -msgstr "tanımsız" - -msgid "unspecified -or- create:" -msgstr "tanımsız -veya- oluşturun:" - -msgid "untagged" -msgstr "etiketsiz" - -msgid "yes" -msgstr "evet" - -msgid "« Back" -msgstr "« Geri" - -#~ msgid "Activate this network" -#~ msgstr "Bu ağı etkinleştir" - -#~ msgid "Sort" -#~ msgstr "Sıralama" - -#~ msgid "help" -#~ msgstr "yardım" - -#~ msgid "Apply" -#~ msgstr "Uygula" - -#~ msgid "Applying changes" -#~ msgstr "Değişiklikleri uygula" - -#~ msgid "Action" -#~ msgstr "Eylem" - -#~ msgid "AR Support" -#~ msgstr "AR Desteği" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s Kablosuz Denetleyicisi" - -#~ msgid "Background Scan" -#~ msgstr "Arka Planda Tarama" diff --git a/luci-base/po/uk/base.po b/luci-base/po/uk/base.po deleted file mode 100644 index 845f9adde..000000000 --- a/luci-base/po/uk/base.po +++ /dev/null @@ -1,4189 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"PO-Revision-Date: 2018-07-20 11:30+0300\n" -"Last-Translator: Yurii \n" -"Language-Team: none\n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -msgid "%.1f dB" -msgstr "%.1f дБ" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s є непозначеним у декількох VLAN!" - -msgid "(%d minute window, %d second interval)" -msgstr "(вікно - %d хв, інтервал - %d с)" - -msgid "(%s available)" -msgstr "(доступно %s)" - -msgid "(empty)" -msgstr "(пусто)" - -msgid "(no interfaces attached)" -msgstr "(нема приєднаних інтерфейсів)" - -msgid "-- Additional Field --" -msgstr "-- Додаткові поля --" - -msgid "-- Please choose --" -msgstr "-- Оберіть --" - -msgid "-- custom --" -msgstr "-- нетипово --" - -msgid "-- match by device --" -msgstr "-- відповідно пристрою --" - -msgid "-- match by label --" -msgstr "-- відповідно мітці --" - -msgid "-- match by uuid --" -msgstr "-- відповідно UUID --" - -msgid "-- please select --" -msgstr "-- виберіть --" - -msgid "1 Minute Load:" -msgstr "Навантаження за 1 хвилину:" - -msgid "15 Minute Load:" -msgstr "Навантаження за 15 хвилин:" - -msgid "4-character hexadecimal ID" -msgstr "4-симв. шістнадцятковий ID" - -msgid "464XLAT (CLAT)" -msgstr "464XLAT (CLAT)" - -msgid "5 Minute Load:" -msgstr "Навантаження за 5 хвилин:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" -"6-октетний ідентифікатор у вигляді шістнадцяткового рядка – без двокрапок" - -msgid "802.11r Fast Transition" -msgstr "Швидкий перехід 802.11r" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "Максимальний тайм-аут запиту асоціації 802.11w" - -msgid "802.11w Association SA Query retry timeout" -msgstr "Тайм-аут повторювання запиту асоціації 802.11w" - -msgid "802.11w Management Frame Protection" -msgstr "Захист кадрів управління 802.11w" - -msgid "802.11w maximum timeout" -msgstr "Максимальний тайм-аут 802.11w" - -msgid "802.11w retry timeout" -msgstr "Тайм-аут повторювання 802.11w" - -msgid "BSSID" -msgstr "" -"BSSID" - -msgid "DNS query port" -msgstr "" -"Порт DNS-" -"запиту" - -msgid "DNS server port" -msgstr "" -"Порт DNS-" -"сервера" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"DNS-" -"сервери буде опитано в порядку, визначеному файлом resolvfile" - -msgid "ESSID" -msgstr "" -"ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-адреса" - -msgid "IPv4-Gateway" -msgstr "IPv4-шлюз" - -msgid "IPv4-Netmask" -msgstr "IPv4-маска" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-адреса або мережа " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-шлюз" - -msgid "IPv6-Suffix (hex)" -msgstr "IPv6-суфікс (hex)" - -msgid "LED Configuration" -msgstr "" -"Налаштування LED" - -msgid "LED Name" -msgstr "Назва LED" - -msgid "MAC-Address" -msgstr "" -"MAC-адреса" - -msgid "DUID" -msgstr "DUID" - -msgid "" -"Max. DHCP leases" -msgstr "" -"Макс. оренд DHCP" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"Макс. розмір пакета EDNS0" - -msgid "Max. concurrent queries" -msgstr "Макс. одночасних запитів" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    Примітка: якщо перед редагуванням, файл crontab був порожній, вам " -"потрібно вручну перезапустити служби cron." - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" -"APN" - -msgid "ARP retry threshold" -msgstr "Поріг повторювання ARP" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" -"ATM" - -msgid "ATM Bridges" -msgstr "ATM-мости" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" -"Ідентифікатор віртуального каналу ATM (VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" -"Ідентифікатор віртуального шляху ATM (VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM-мости виставляють інкапсульований Ethernet у з’єднаннях AAL5 як " -"віртуальні мережеві інтерфейси Linux, котрі можуть використовуватися в " -"поєднанні з DHCP або PPP для підключення до мережі провайдера." - -msgid "ATM device number" -msgstr "Номер ATM-пристрою" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "Концентратор доступу" - -msgid "Access Point" -msgstr "Точка доступу" - -msgid "Actions" -msgstr "Дії" - -msgid "Active IPv4-Routes" -msgstr "IPv4-маршрути" - -msgid "Active IPv6-Routes" -msgstr "IPv6-маршрути" - -msgid "Active Connections" -msgstr "Активні підключення" - -msgid "Active DHCP Leases" -msgstr "Активні оренди DHCP" - -msgid "Active DHCPv6 Leases" -msgstr "Активні оренди DHCPv6" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Додати" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "Додавати суфікс локального домену до імен, отриманих із файлів hosts" - -msgid "Add new interface..." -msgstr "Додати новий інтерфейс..." - -msgid "Additional Hosts files" -msgstr "Додаткові файли hosts" - -msgid "Additional servers file" -msgstr "Додаткові файли servers" - -msgid "Address" -msgstr "Адреса" - -msgid "Address to access local relay bridge" -msgstr "Адреса для доступу до мосту локального ретранслятора" - -msgid "Administration" -msgstr "Адміністрування" - -msgid "Advanced Settings" -msgstr "Додаткові параметри" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "Сумарна потужність передавання" - -msgid "Alert" -msgstr "Тривога" - -msgid "Alias Interface" -msgstr "Інтерфейс псевдоніма" - -msgid "Alias of \"%s\"" -msgstr "Псевдонім \"%s\"" - -msgid "All Servers" -msgstr "Усі сервери" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "Виділяти IP-адреси послідовно, починаючи з найнижчої доступної адреси" - -msgid "Allocate IP sequentially" -msgstr "Виділяти IP послідовно" - -msgid "Allow SSH password authentication" -msgstr "" -"Дозволити SSH-" -"перевірку пароля" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" -"Дозволити режиму AP відключення абонентів на підставі низького рівня ACK" - -msgid "Allow all except listed" -msgstr "Дозволити всі, крім зазначених" - -msgid "Allow legacy 802.11b rates" -msgstr "Дозволити застарілі швидкості 802.11b" - -msgid "Allow listed only" -msgstr "Дозволити тільки зазначені" - -msgid "Allow localhost" -msgstr "Дозволити локальний вузол" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" -"Дозволити віддаленим вузлам підключення до локальних переспрямованих портів " -"SSH" - -msgid "Allow root logins with password" -msgstr "Дозволити root-вхід із паролем" - -msgid "Allow the root user to login with password" -msgstr "Дозволити користувачеві root вхід у систему з паролем" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" -"Дозволити висхідні відповіді від клієнта на сервер у діапазоні 127.0.0.0/8, " -"наприклад, для RBL-послуг" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "Завжди оголошувати типовим маршрутизатором" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" -"Завжди використовувати канали 40 МГц, навіть якщо вторинний канал " -"перекривається. Використання цієї опції не відповідає стандарту IEEE " -"802.11n-2009!" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" -"Оголошувати типовим маршрутизатором, навіть якщо немає доступного публічного " -"префікса." - -msgid "Announced DNS domains" -msgstr "Оголошено DNS-домени" - -msgid "Announced DNS servers" -msgstr "Оголошено DNS-сервери" - -msgid "Anonymous Identity" -msgstr "Анонімне посвідчення" - -msgid "Anonymous Mount" -msgstr "Анонімне монтування" - -msgid "Anonymous Swap" -msgstr "Анонімний своп" - -msgid "Antenna 1" -msgstr "Антена 1" - -msgid "Antenna 2" -msgstr "Антена 2" - -msgid "Antenna Configuration" -msgstr "Конфигурація антени" - -msgid "Any zone" -msgstr "Будь-яка зона" - -msgid "Apply request failed with status %h" -msgstr "Сталася помилка запиту на застосування зі статусом %h" - -msgid "Apply unchecked" -msgstr "Застосування не позначено" - -msgid "Architecture" -msgstr "Архітектура" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" -"Призначати частину заданої довжини до кожного публічного IPv6-префікса цього " -"інтерфейсу" - -msgid "Assign interfaces..." -msgstr "Призначення інтерфейсів..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" -"Призначати для цього інтерфейсу частину префікса, використовуючи цей " -"шістнадцятковий ID субпрефікса." - -msgid "Associated Stations" -msgstr "Приєднано станції" - -msgid "Associations" -msgstr "З’єднань" - -msgid "Auth Group" -msgstr "Група автентифікації" - -msgid "Authentication" -msgstr "Автентифікація" - -msgid "Authentication Type" -msgstr "Тип автентифікації" - -msgid "Authoritative" -msgstr "Надійний" - -msgid "Authorization Required" -msgstr "Потрібна авторизація" - -msgid "Auto Refresh" -msgstr "Автоматичне оновлення" - -msgid "Automatic" -msgstr "Автоматично" - -msgid "Automatic Homenet (HNCP)" -msgstr "Автоматично Homenet (HNCP)" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" -"Автоматично перевіряти файлову систему на наявність помилок перед монтуванням" - -msgid "Automatically mount filesystems on hotplug" -msgstr "Автоматично монтувати файлові системи при оперативниму підключенні" - -msgid "Automatically mount swap on hotplug" -msgstr "Автоматично монтувати своп при оперативниму підключенні" - -msgid "Automount Filesystem" -msgstr "Автомонтування ФС" - -msgid "Automount Swap" -msgstr "Автомонтування своп" - -msgid "Available" -msgstr "Доступно" - -msgid "Available packages" -msgstr "Доступні пакети" - -msgid "Average:" -msgstr "Середнє значення:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "Назад" - -msgid "Back to Overview" -msgstr "Повернутися до переліку" - -msgid "Back to configuration" -msgstr "Повернутися до конфігурації" - -msgid "Back to overview" -msgstr "Повернутися до переліку" - -msgid "Back to scan results" -msgstr "Повернутися до результатів сканування" - -msgid "Backup" -msgstr "Резервне копіювання" - -msgid "Backup / Flash Firmware" -msgstr "Резервне копіювання / Прошивка мікропрограми" - -msgid "Backup file list" -msgstr "Список файлів резервних копій" - -msgid "Bad address specified!" -msgstr "Вказано неправильну адресу!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "Інтервал маяка" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"Нижче наведено визначений список файлів для резервного копіювання. Він " -"складається із позначених opkg змінених файлів конфігурації, невідокремних " -"базових файлів, та файлів за користувацькими шаблонами резервного копіювання." - -msgid "Bind interface" -msgstr "Прив’язка інтерфейсу" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "Прив’язка тільки до певних інтерфейсів, а не шаблонної адреси." - -msgid "Bind the tunnel to this interface (optional)." -msgstr "Прив’язка тунелю до цього інтерфейсу (за бажання)." - -msgid "Bitrate" -msgstr "Швидкість передавання даних" - -msgid "Bogus NX Domain Override" -msgstr "Відкидати підробки NX-домену" - -msgid "Bridge" -msgstr "Міст" - -msgid "Bridge interfaces" -msgstr "Об’єднати інтерфейси в міст" - -msgid "Bridge unit number" -msgstr "Номер моста" - -msgid "Bring up on boot" -msgstr "Піднімати при завантаженні" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Бездротовий 802.11%s контролер Broadcom" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Бездротовий 802.11 контролер Broadcom BCM%04x" - -msgid "Buffered" -msgstr "Буферизовано" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" -"Специфічні для збірки/поширення визначення каналів. Цей файл НЕ БУДЕ " -"збережено при будь-якому оновленні системи." - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" -"Сертифікат CA; якщо порожньо, його буде збережено після першого підключення." - -msgid "CPU usage (%)" -msgstr "Завантаження ЦП, %" - -msgid "Call failed" -msgstr "Не вдалося здійснити виклик" - -msgid "Cancel" -msgstr "Скасувати" - -msgid "Category" -msgstr "Категорія" - -msgid "Chain" -msgstr "Ланцюжок" - -msgid "Changes" -msgstr "Зміни" - -msgid "Changes applied." -msgstr "Зміни застосовано." - -msgid "Changes have been reverted." -msgstr "Зміни було скасовано." - -msgid "Changes the administrator password for accessing the device" -msgstr "Зміна пароля адміністратора для доступу до пристрою" - -msgid "Channel" -msgstr "Канал" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" -"Канал %d не доступний у %s регуляторному домені й був автоматично " -"скоригований на %d." - -msgid "Check" -msgstr "Перевірити" - -msgid "Check filesystems before mount" -msgstr "Перевірити файлову систему перед монтуванням" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "Позначте цей параметр, щоб видалити існуючі мережі з цього радіо." - -msgid "Checksum" -msgstr "Контрольна сума" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"Оберіть зону брандмауера, яку ви хочете призначити на цей інтерфейс. " -"Виберіть не визначено, щоб видалити інтерфейс з відповідних зон, " -"або заповніть поле створити, щоб визначити нову зону і прикріпити " -"до неї інтерфейс." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"Оберіть мережі, які ви хочете прикріпити до цього бездротового інтерфейсу " -"або заповніть поле створити, щоб визначити нову мережу." - -msgid "Cipher" -msgstr "Шифр" - -msgid "Cisco UDP encapsulation" -msgstr "Інкапсуляція UDP Cisco" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" -"Натисніть кнопку \"Створити архів\", щоб завантажити tar-архів поточних " -"файлів конфігурації." - -msgid "Client" -msgstr "Клієнт" - -msgid "Client ID to send when requesting DHCP" -msgstr "Ідентифікатор клієнта для відправки при запиті DHCP" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" -"Закривати неактивні з’єднання після певного інтервалу часу (секунди). Для " -"утримання неактивних з’єднань використовуйте 0" - -msgid "Close list..." -msgstr "Згорнути список..." - -msgid "Collecting data..." -msgstr "Збирання даних..." - -msgid "Command" -msgstr "Команда" - -msgid "Common Configuration" -msgstr "Загальна конфігурація" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" -"Ускладнює атаки перевстановлення ключа на стороні клієнта, відключаючи " -"ретрансляцію кадрів EAPOL-Key, що використовуються для встановлення ключів. " -"Може викликати проблеми сумісності та зниження стійкості узгодження ключа, " -"особливо в середовищах з великою завантаженістю трафіку." - -msgid "Configuration" -msgstr "Конфігурація" - -msgid "Configuration failed" -msgstr "Помилка налаштування" - -msgid "Configuration files will be kept." -msgstr "Конфігураційні файли буде збережено." - -msgid "Configuration has been applied." -msgstr "Конфігурацію застосовано." - -msgid "Configuration has been rolled back!" -msgstr "Конфігурацію було відкочено!" - -msgid "Confirmation" -msgstr "Підтвердження" - -msgid "Connect" -msgstr "Підключити" - -msgid "Connected" -msgstr "Підключено" - -msgid "Connection Limit" -msgstr "Гранична кількість підключень" - -msgid "Connection attempt failed" -msgstr "Невдала спроба підключення" - -msgid "Connections" -msgstr "Підключення" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" -"Після застосування змін конфігурації не вдалося відновити доступ до " -"пристрою. Вам, можливо, знадобитися повторне підключення, якщо ви змінили " -"налаштування мережі, такі як IP-адреса або облікові дані безпеки бездротової " -"мережі." - -msgid "Country" -msgstr "Країна" - -msgid "Country Code" -msgstr "Код країни" - -msgid "Cover the following interface" -msgstr "Покривати наступний інтерфейс" - -msgid "Cover the following interfaces" -msgstr "Покривати наступні інтерфейси" - -msgid "Create / Assign firewall-zone" -msgstr "Створити / Визначити зону брандмауера" - -msgid "Create Interface" -msgstr "Створити інтерфейс" - -msgid "Create a bridge over multiple interfaces" -msgstr "Створити міст через кілька інтерфейсів" - -msgid "Critical" -msgstr "Критичний" - -msgid "Cron Log Level" -msgstr "Рівень виведення інформації Cron" - -msgid "Custom Interface" -msgstr "Інтерфейс користувача" - -msgid "Custom delegated IPv6-prefix" -msgstr "Користувацький делегований префікс IPv6" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" -"Користувацькі визначення каналів, наприклад, приватних. Цей файл може бути " -"збережено при оновленні системи." - -msgid "Custom feeds" -msgstr "Користувацькі канали" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" -"Користувацькі файли (сертифікати, скрипти) можуть залишитися в системі. Щоб " -"запобігти цьому, спочатку виконайте скидання до заводських налаштувань." - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Налаштування поведінки LED, якщо це можливо." - -msgid "DHCP Server" -msgstr "Сервер DHCP" - -msgid "DHCP and DNS" -msgstr "DHCP та DNS" - -msgid "DHCP client" -msgstr "Клієнт DHCP" - -msgid "DHCP-Options" -msgstr "Параметри DHCP" - -msgid "DHCPv6 client" -msgstr "Клієнт DHCPv6" - -msgid "DHCPv6-Mode" -msgstr "Режим DHCPv6" - -msgid "DHCPv6-Service" -msgstr "Служба DHCPv6" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "Переспрямовування
    запитів DNS" - -msgid "DNS-Label / FQDN" -msgstr "DNS-мітка / FQDN" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "Перевірка непідписаного DNSSEC" - -msgid "DPD Idle Timeout" -msgstr "Тайм-аут простою DPD" - -msgid "DS-Lite AFTR address" -msgstr "AFTR-адреса DS-Lite" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "Стан DSL" - -msgid "DSL line mode" -msgstr "Режим лінії DSL" - -msgid "DTIM Interval" -msgstr "" -"Інтервал DTIM" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "Швидк. передавання" - -msgid "Debug" -msgstr "Зневаджування" - -msgid "Default %d" -msgstr "Типово %d" - -msgid "Default gateway" -msgstr "Типовий шлюз" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "Типовий стан" - -msgid "Define a name for this network." -msgstr "Визначення імені для цієї мережі." - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"Визначення додаткових опцій DHCP, наприклад " -"\"6,192.168.2.1,192.168.2.2\", щоб оголошувати різні DNS-" -"сервери для клієнтів." - -msgid "Delete" -msgstr "Видалити" - -msgid "Delete this network" -msgstr "Видалити цю мережу" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "Інтервал повідомлень індикації доправлення трафіку" - -msgid "Description" -msgstr "Опис" - -msgid "Design" -msgstr "Стиль (тема)" - -msgid "Destination" -msgstr "Призначення" - -msgid "Device" -msgstr "Пристрій" - -msgid "Device Configuration" -msgstr "Конфігурація пристрою" - -msgid "Device is rebooting..." -msgstr "Пристрій перезавантажується..." - -msgid "Device unreachable!" -msgstr "Пристрій недосяжний!" - -msgid "Device unreachable! Still waiting for device..." -msgstr "Пристрій недосяжний! Досі чекаємо на пристрій..." - -msgid "Diagnostics" -msgstr "Діагностика" - -msgid "Dial number" -msgstr "Набір номера" - -msgid "Directory" -msgstr "Каталог" - -msgid "Disable" -msgstr "Вимкнути" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"Вимкнути DHCP для цього інтерфейсу." - -msgid "Disable DNS setup" -msgstr "Вимкнути налаштування DNS" - -msgid "Disable Encryption" -msgstr "Вимкнути шифрування" - -msgid "Disable this network" -msgstr "Вимкнути цю мережу" - -msgid "Disabled" -msgstr "Вимкнено" - -msgid "Disabled (default)" -msgstr "Вимкнено (типово)" - -msgid "Disassociate On Low Acknowledgement" -msgstr "Роз'єднувати за низького підтвердження" - -msgid "Discard upstream RFC1918 responses" -msgstr "Відкидати висхідні RFC1918-відповіді" - -msgid "Disconnection attempt failed" -msgstr "Спроба від’єднання не вдалася" - -msgid "Dismiss" -msgstr "Відхилити" - -msgid "Displaying only packages containing" -msgstr "Відображення лише непорожніх пакетів" - -msgid "Distance Optimization" -msgstr "Оптимізація за відстанню" - -msgid "Distance to farthest network member in meters." -msgstr "Відстань до найвіддаленішого вузла мережі в метрах." - -msgid "Distribution feeds" -msgstr "Канали поширення" - -msgid "Diversity" -msgstr "Різновидність" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq являє собою комбінований DHCP-сервер і " -"DNS-проксі " -"для брандмауерів NAT" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "Не кешувати негативні відповіді, наприклад, за неіснуючих доменів" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" -"Не переспрямовувати запити, які не може бути оброблено відкритими серверами " -"імен" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" -"Не переспрямовувати зворотні DNS-запити для локальних мереж" - -msgid "Domain required" -msgstr "Потрібен домен" - -msgid "Domain whitelist" -msgstr "\"Білий список\" доменів" - -msgid "Don't Fragment" -msgstr "Не фрагментувати" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Не переспрямовувати DNS-запити без DNS-імені" - -msgid "Down" -msgstr "Вниз" - -msgid "Download and install package" -msgstr "Завантажити та інсталювати пакети" - -msgid "Download backup" -msgstr "Завантажити резервну копію" - -msgid "Downstream SNR offset" -msgstr "Низхідний зсув SNR" - -msgid "Dropbear Instance" -msgstr "Реалізація Dropbear" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear — це SSH-" -"сервер із вбудованим SCP" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Динамічний DHCP" - -msgid "Dynamic tunnel" -msgstr "Динамічний тунель" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"Динамічне виділення DHCP-адрес для клієнтів. Якщо вимкнути, будуть " -"обслуговуватися тільки клієнти, які мають статичні оренди." - -msgid "EA-bits length" -msgstr "Довжина EA-бітів" - -msgid "EAP-Method" -msgstr "EAP-Метод" - -msgid "Edit" -msgstr "Редагувати" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" -"Щоб виправити якусь помилку, відредагуйте вихідні дані конфігурації вище і " -"натисніть \"Зберегти\", щоб перезавантажити сторінку." - -msgid "Edit this interface" -msgstr "Редагувати цей інтерфейс" - -msgid "Edit this network" -msgstr "Редагувати цю мережу" - -msgid "Emergency" -msgstr "Аварійний" - -msgid "Enable" -msgstr "Увімкнути" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" -"Увімкнути відстеження IGMP" - -msgid "Enable STP" -msgstr "Увімкнути STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "Увімкнути динамічне оновлення кінцевої точки HE.net" - -msgid "Enable IPv6 negotiation" -msgstr "Увімкнути узгодження IPv6" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "Увімкнути узгодження IPv6 для PPP-з’єднань" - -msgid "Enable Jumbo Frame passthrough" -msgstr "Пропускати Jumbo-фрейми" - -msgid "Enable NTP client" -msgstr "Увімкнути клієнта NTP" - -msgid "Enable Single DES" -msgstr "Увімкнути Single DES" - -msgid "Enable TFTP server" -msgstr "Увімкнути TFTP-сервер" - -msgid "Enable VLAN functionality" -msgstr "Увімкнути підтримку VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "Увімкнути кнопку WPS, потребує WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "Увімкнути протидію
    перевстановленню ключів (KRACK)" - -msgid "Enable learning and aging" -msgstr "Увімкнути learning та aging" - -msgid "Enable mirroring of incoming packets" -msgstr "Увімкнути віддзеркалення вхідних пакетів" - -msgid "Enable mirroring of outgoing packets" -msgstr "Увімкнути віддзеркалення вихідних пакетів" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "Увімкнути прапорець DF (Don't Fragment) для інкапсульованих пакетів." - -msgid "Enable this mount" -msgstr "Увімкнути це монтування" - -msgid "Enable this network" -msgstr "Увімкнути цю мережу" - -msgid "Enable this swap" -msgstr "Увімкнути цей своп" - -msgid "Enable/Disable" -msgstr "Увімкнено/Вимкнено" - -msgid "Enabled" -msgstr "Увімкнено" - -msgid "Enables IGMP snooping on this bridge" -msgstr "Вмикає відстеження IGMP на цьому мосту" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" -"Вмикає швидкий роумінг між точками доступу, що належать до одного і того ж " -"домену мобільності" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "" -"Вмикає STP на цьому мосту" - -msgid "Encapsulation mode" -msgstr "Режим інкапсуляції" - -msgid "Encryption" -msgstr "Шифрування" - -msgid "Endpoint Host" -msgstr "Хост кінцевої точки" - -msgid "Endpoint Port" -msgstr "Порт кінцевої точки" - -msgid "Enter custom value" -msgstr "Введіть власне значення" - -msgid "Enter custom values" -msgstr "Введіть власні значення" - -msgid "Erasing..." -msgstr "Видалення..." - -msgid "Error" -msgstr "Помилка" - -msgid "Errored seconds (ES)" -msgstr "Секунд з помилками (ES)" - -msgid "Ethernet Adapter" -msgstr "Ethernet-адаптер" - -msgid "Ethernet Switch" -msgstr "Ethernet-комутатор" - -msgid "Exclude interfaces" -msgstr "Виключити інтерфейси" - -msgid "Expand hosts" -msgstr "Розширення вузлів" - -msgid "Expires" -msgstr "Збігає за" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "Термін оренди адрес, мінімум 2 хвилини (2m)." - -msgid "External" -msgstr "Зовнішнє" - -msgid "External R0 Key Holder List" -msgstr "Зовнішній список власників ключів R0" - -msgid "External R1 Key Holder List" -msgstr "Зовнішній список власників ключів R1" - -msgid "External system log server" -msgstr "Зовнішній сервер системного журналу" - -msgid "External system log server port" -msgstr "Порт зовнішнього сервера системного журналу" - -msgid "External system log server protocol" -msgstr "Протокол зовнішнього сервера системного журналу" - -msgid "Extra SSH command options" -msgstr "Додаткові параметри команд SSH" - -msgid "FT over DS" -msgstr "FT через DS" - -msgid "FT over the Air" -msgstr "FT через повітря" - -msgid "FT protocol" -msgstr "Протокол FT" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "Не вдалося підтвердити застосування на протязі %d с, очікуємо відкату…" - -msgid "File" -msgstr "Файл" - -msgid "Filename of the boot image advertised to clients" -msgstr "І’мя завантажувального образу, що оголошується клієнтам" - -msgid "Filesystem" -msgstr "Файлова система" - -msgid "Filter" -msgstr "Фільтр" - -msgid "Filter private" -msgstr "Фільтрувати приватні" - -msgid "Filter useless" -msgstr "Фільтрувати непридатні" - -msgid "Finalizing failed" -msgstr "Завершення не вдалося" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" -"Знайти всі файлові системи та свопи, які наразі підключено і замінити " -"конфігурацію типовою на підставі того, що було виявлено" - -msgid "Find and join network" -msgstr "Знайти мережу й приєднатися" - -msgid "Find package" -msgstr "Знайти пакет" - -msgid "Finish" -msgstr "Готово" - -msgid "Firewall" -msgstr "Брандмауер" - -msgid "Firewall Mark" -msgstr "Позначка брандмауера" - -msgid "Firewall Settings" -msgstr "Налаштування брандмауера" - -msgid "Firewall Status" -msgstr "Стан брандмауера" - -msgid "Firmware File" -msgstr "Файл мікропрограми" - -msgid "Firmware Version" -msgstr "Версія мікропрограми" - -msgid "Fixed source port for outbound DNS queries" -msgstr "Фіксований порт для вихідних DNS-запитів" - -msgid "Flash Firmware" -msgstr "Прошиваємо мікропрограму" - -msgid "Flash image..." -msgstr "Прошити образ..." - -msgid "Flash new firmware image" -msgstr "Прошити новий образ мікропрограми" - -msgid "Flash operations" -msgstr "Операції прошивання" - -msgid "Flashing..." -msgstr "Прошиваємо..." - -msgid "Force" -msgstr "Примусово" - -msgid "Force 40MHz mode" -msgstr "Примусово застосовувати режим '40MHz'" - -msgid "Force CCMP (AES)" -msgstr "Примусово CCMP (AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "Примусово DHCP у цій мережі, навіть якщо виявлено інший сервер." - -msgid "Force TKIP" -msgstr "Примусово TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "Примусово TKIP та CCMP (AES)" - -msgid "Force link" -msgstr "Примусове з’єднання" - -msgid "Force use of NAT-T" -msgstr "Примусово використовувати NAT-T" - -msgid "Form token mismatch" -msgstr "Неузгодженість маркера форми" - -msgid "Forward DHCP traffic" -msgstr "Переспрямовувати DHCP-трафік" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "Секунди прямого коригування помилок (FECS)" - -msgid "Forward broadcast traffic" -msgstr "Переспрямовувати широкомовний трафік" - -msgid "Forward mesh peer traffic" -msgstr "Переспрямовувати одноранговий трафік" - -msgid "Forwarding mode" -msgstr "Режим переспрямовування" - -msgid "Fragmentation Threshold" -msgstr "Поріг фрагментації" - -msgid "Frame Bursting" -msgstr "Frame Bursting" - -msgid "Free" -msgstr "Вільно" - -msgid "Free space" -msgstr "Вільне місце" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" -"Більш детальна інформація про інтерфейси та вузли WireGuard на wireguard.com." - -msgid "GHz" -msgstr "ГГц" - -msgid "GPRS only" -msgstr "Тільки GPRS" - -msgid "Gateway" -msgstr "Шлюз" - -msgid "Gateway address is invalid" -msgstr "Неприпустима адреса шлюзу" - -msgid "Gateway ports" -msgstr "Порти шлюзу" - -msgid "General Settings" -msgstr "Загальні параметри" - -msgid "General Setup" -msgstr "Загальні налаштування" - -msgid "General options for opkg" -msgstr "Загальні параметри OPKG" - -msgid "Generate Config" -msgstr "Cтворити конфігурацію" - -msgid "Generate PMK locally" -msgstr "Генерувати PMK локально" - -msgid "Generate archive" -msgstr "Cтворити архів" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "Бездротовий 802.11%s контролер" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "Оскільки пароль і підтвердження не співпадають, то пароль не змінено!" - -msgid "Global Settings" -msgstr "Загальні параметри" - -msgid "Global network options" -msgstr "Глобальні параметри мережі" - -msgid "Go to password configuration..." -msgstr "Перейти до конфігурації пароля..." - -msgid "Go to relevant configuration page" -msgstr "Перейти до відповідної сторінки конфігурації" - -msgid "Group Password" -msgstr "Пароль групи" - -msgid "Guest" -msgstr "Гість" - -msgid "HE.net password" -msgstr "Пароль HE.net" - -msgid "HE.net username" -msgstr "Ім’я користувача HE.net" - -msgid "HT mode (802.11n)" -msgstr "Режим HT (802.11n)" - -msgid "Hang Up" -msgstr "Призупинити" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Тут ви можете налаштувати основні параметри вигляду вашого пристрою, такі як " -"назва (ім’я) вузла або часовий пояс." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" -"Тут ви можете вставити відкриті SSH-ключі (по одному на рядок) для SSH з " -"відкритим ключем автентифікації." - -msgid "Hide ESSID" -msgstr "" -"Приховати ESSID" - -msgid "Host" -msgstr "Вузол" - -msgid "Host entries" -msgstr "Записи вузлів" - -msgid "Host expiry timeout" -msgstr "Тайм-аут вузла" - -msgid "Host-IP or Network" -msgstr "IP вузла або мережа" - -msgid "Host-Uniq tag content" -msgstr "Зміст тегу Host-Uniq" - -msgid "Hostname" -msgstr "Назва (ім’я) вузла" - -msgid "Hostname to send when requesting DHCP" -msgstr "Ім’я вузла для надсилання при запиті DHCP" - -msgid "Hostnames" -msgstr "Імена вузлів" - -msgid "Hybrid" -msgstr "Гібрид" - -msgid "IKE DH Group" -msgstr "Група IKE DH" - -msgid "IP Addresses" -msgstr "IP-адреси" - -msgid "IP address" -msgstr "IP-адреса" - -msgid "IP address in invalid" -msgstr "Неприпустима IP-адреса" - -msgid "IP address is missing" -msgstr "Відсутня IP-адреса" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "Брандмауер IPv4" - -msgid "IPv4 Upstream" -msgstr "Висхідне з’єднання IPv4" - -msgid "IPv4 address" -msgstr "Адреса IPv4" - -msgid "IPv4 and IPv6" -msgstr "IPv4 та IPv6" - -msgid "IPv4 assignment length" -msgstr "Довжина присвоювання IPv4" - -msgid "IPv4 broadcast" -msgstr "Широкомовний IPv4" - -msgid "IPv4 gateway" -msgstr "Шлюз IPv4" - -msgid "IPv4 netmask" -msgstr "Маска мережі IPv4" - -msgid "IPv4 only" -msgstr "Тільки IPv4" - -msgid "IPv4 prefix" -msgstr "Префікс IPv4" - -msgid "IPv4 prefix length" -msgstr "Довжина префікса IPv4" - -msgid "IPv4-Address" -msgstr "IPv4-адреса" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "IPv4 у IPv4 (RFC2003)" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "Брандмауер IPv6" - -msgid "IPv6 Neighbours" -msgstr "Сусіди IPv6" - -msgid "IPv6 Settings" -msgstr "Налаштування IPv6" - -msgid "IPv6 ULA-Prefix" -msgstr "" -"ULA-" -"префікс IPv6" - -msgid "IPv6 Upstream" -msgstr "Висхідне з’єднання IPv6" - -msgid "IPv6 address" -msgstr "Адреса IPv6" - -msgid "IPv6 assignment hint" -msgstr "Натяк призначення IPv6" - -msgid "IPv6 assignment length" -msgstr "Довжина призначення IPv6" - -msgid "IPv6 gateway" -msgstr "Шлюз IPv6" - -msgid "IPv6 only" -msgstr "Тільки IPv6" - -msgid "IPv6 prefix" -msgstr "Префікс IPv6" - -msgid "IPv6 prefix length" -msgstr "Довжина префікса IPv6" - -msgid "IPv6 routed prefix" -msgstr "Надісланий префікс IPv6" - -msgid "IPv6 suffix" -msgstr "Суфікс IPv6" - -msgid "IPv6-Address" -msgstr "IPv6-адреса" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6 у IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6 через IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6 через IPv4 (6to4)" - -msgid "Identity" -msgstr "Посвідчення" - -msgid "If checked, 1DES is enabled" -msgstr "Якщо позначено, 1DES увімкнено" - -msgid "If checked, encryption is disabled" -msgstr "Якщо позначено, шифрування вимкнено" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" -"Якщо обрано, монтувати пристрій за його UUID замість фіксованого вузла " -"пристрою" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" -"Якщо обрано, монтувати пристрій за міткою його розділу замість фіксованого " -"вузла пристрою" - -msgid "If unchecked, no default route is configured" -msgstr "Якщо не позначено, типовий маршрут не налаштовано" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "Якщо не позначено, оголошувані адреси DNS-серверів ігноруються" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Якщо фізичної пам’яті недостатньо, невикористовувані дані можуть тимчасово " -"витіснятися на своп-пристрій, у результаті чого збільшується кількість " -"корисної оперативної пам’яті (RAM). Майте на увазі, що свопінг даних є дуже повільним процесом, оскільки " -"своп-пристрої не можуть бути доступні з такою високою швидкістю, як RAM." - -msgid "Ignore /etc/hosts" -msgstr "Ігнорувати/etc/hosts" - -msgid "Ignore interface" -msgstr "Ігнорувати интерфейс" - -msgid "Ignore resolve file" -msgstr "Ігнорувати файли resolv" - -msgid "Image" -msgstr "Образ" - -msgid "In" -msgstr "Вх." - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" -"Щоб запобігти несанкціонованому доступу до системи, ваш запит було " -"заблоковано. Натисніть \"Продовжити »\" нижче, щоб повернутися до " -"попередньої сторінки." - -msgid "Inactivity timeout" -msgstr "Тайм-аут бездіяльності" - -msgid "Inbound:" -msgstr "Вхідний:" - -msgid "Info" -msgstr "Інформація" - -msgid "Initialization failure" -msgstr "Помилка ініціалізації" - -msgid "Initscript" -msgstr "Скрипт ініціалізації" - -msgid "Initscripts" -msgstr "Скрипти ініціалізації" - -msgid "Install" -msgstr "Інсталювати" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "Інсталюйте iputils-traceroute6 для трасування IPv6" - -msgid "Install package %q" -msgstr "Інсталяція пакета %q" - -msgid "Install protocol extensions..." -msgstr "Інсталяція розширень протоколу..." - -msgid "Installed packages" -msgstr "Інстальовано пакети" - -msgid "Interface" -msgstr "Інтерфейс" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "Пристрій інтерфейсу %q автоматичного мігрував із %q на %q." - -msgid "Interface Configuration" -msgstr "Конфігурація інтерфейсу" - -msgid "Interface Overview" -msgstr "Огляд інтерфейсів" - -msgid "Interface is reconnecting..." -msgstr "Перепідключення інтерфейсу..." - -msgid "Interface name" -msgstr "Ім’я інтерфейсу" - -msgid "Interface not present or not connected yet." -msgstr "Інтерфейс відсутній або його ще не підключено." - -msgid "Interfaces" -msgstr "Інтерфейси" - -msgid "Internal" -msgstr "Внутрішній" - -msgid "Internal Server Error" -msgstr "Внутрішня помилка сервера" - -msgid "Invalid" -msgstr "Неприпустимо" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" -"Задано неприпустимий VLAN ID! Доступні тільки ідентифікатори в межах між %d " -"і %d." - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" -"Задано неприпустимий VLAN ID! Доступні тільки унікальні ідентифікатори." - -msgid "Invalid username and/or password! Please try again." -msgstr "Неприпустиме ім’я користувача та/або пароль! Спробуйте ще раз." - -msgid "Isolate Clients" -msgstr "Ізолювати клієнтів" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Схоже, що ви намагаєтеся прошити образ, який не вміщається до флеш-пам’яті! " -"Перевірте файл образу!" - -msgid "JavaScript required!" -msgstr "Потрібен JavaScript!" - -msgid "Join Network" -msgstr "Підключення до мережі" - -msgid "Join Network: Wireless Scan" -msgstr "Підключення до мережі: Сканування бездротових мереж" - -msgid "Joining Network: %q" -msgstr "Приєднання до мережі: %q" - -msgid "Keep settings" -msgstr "Зберегти налаштування" - -msgid "Kernel Log" -msgstr "Журнал ядра" - -msgid "Kernel Version" -msgstr "Версія ядра" - -msgid "Key" -msgstr "Ключ" - -msgid "Key #%d" -msgstr "Ключ #%d" - -msgid "Kill" -msgstr "Знищити" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "Сервер L2TP" - -msgid "LCP echo failure threshold" -msgstr "Поріг помилок ехо-запитів LCP" - -msgid "LCP echo interval" -msgstr "Інтервал ехо-запитів LCP" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "Мітка" - -msgid "Language" -msgstr "Мова" - -msgid "Language and Style" -msgstr "Мова та стиль" - -msgid "Latency" -msgstr "Затримка" - -msgid "Leaf" -msgstr "Лист" - -msgid "Lease time" -msgstr "Час оренди" - -msgid "Lease validity time" -msgstr "Час чинності оренди" - -msgid "Leasefile" -msgstr "Файл оренд" - -msgid "Leasetime remaining" -msgstr "Час оренди, що лишився" - -msgid "Leave empty to autodetect" -msgstr "Залиште поле порожнім для автовизначення" - -msgid "Leave empty to use the current WAN address" -msgstr "Залиште порожнім, щоб використовувати поточну адресу WAN" - -msgid "Legend:" -msgstr "Легенда:" - -msgid "Limit" -msgstr "Межа" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" -"Обмежувати службу DNS інтерфейсами підмереж, на яких ми обслуговуємо DNS." - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" -"Обмежитися прослуховуванням цих інтерфейсів і повернутися до початку циклу." - -msgid "Line Attenuation (LATN)" -msgstr "Затухання лінії" - -msgid "Line Mode" -msgstr "Режим лінії" - -msgid "Line State" -msgstr "Стан лінії" - -msgid "Line Uptime" -msgstr "Час безперервної роботи лінії" - -msgid "Link On" -msgstr "Зв’язок встановлено" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"Список DNS-серверів для " -"переспрямовування запитів" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" -"Список власників ключів R0 у тому ж домені мобільності.
    Формат: MAC-" -"адреса,NAS-ідентифікатор,128-бітний ключ у вигляді шістнадцяткового рядка. " -"
    Цей список використовується для відображення R0KH-ID (NAS-ідентифікатор) на " -"MAC-адреси призначення при запиті ключа PMK-R1 від R0KH, як станції, що була використана під час початкової " -"асоціації домену мобільності." - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" -"Список власників ключів R1 у тому ж домені мобільності.
    Формат: MAC-" -"адреса,R1KH-ID у " -"формі 6 октетів з двокрапками,128-бітний ключ у вигляді шістнадцяткового " -"рядка.
    Цей список використовується для відображення R1KH-ID на MAC-адреси призначення " -"при передаванні ключа PMK-R1 від R0KH. Це також список авторизованих R1KH у формі MD, які можуть запитувати ключі PMK-R1." - -msgid "List of SSH key files for auth" -msgstr "Список файлів SSH-ключів для авторизації" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "Список доменів, для яких дозволено RFC1918-відповіді" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "Список доменів, які підтримують результати підробки NX-доменів" - -msgid "Listen Interfaces" -msgstr "Інтерфейси прослуховування" - -msgid "Listen Port" -msgstr "Порти прослуховування" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" -"Прослуховувати тільки на цьому інтерфейсі, або на всіх (якщо не " -"визначено)" - -msgid "Listening port for inbound DNS queries" -msgstr "Порт прослуховування для вхідних DNS-запитів" - -msgid "Load" -msgstr "Навантаження" - -msgid "Load Average" -msgstr "Середнє навантаження" - -msgid "Loading" -msgstr "Завантаження" - -msgid "Local IP address is invalid" -msgstr "Неприпустима локальна ІР-адреса" - -msgid "Local IP address to assign" -msgstr "Локальна IP-адреса для призначення" - -msgid "Local IPv4 address" -msgstr "Локальна адреса IPv4" - -msgid "Local IPv6 address" -msgstr "Локальна адреса IPv6" - -msgid "Local Service Only" -msgstr "Тільки локальна служба" - -msgid "Local Startup" -msgstr "Локальний запуск" - -msgid "Local Time" -msgstr "Місцевий час" - -msgid "Local domain" -msgstr "Локальний домен" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" -"Специфікація локального домену. Імена, які зіставлено цьому домену, ніколи " -"не пересилаються і вирізняються тільки з файлу DHCP (/etc/config/dhcp) або " -"файлу hosts (/etc/hosts)" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" -"Суфікс локального домену додається до DHCP-імен вузлів та записів з файлу " -"hosts" - -msgid "Local server" -msgstr "Локальний сервер" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" -"Локалізувати ім’я хоста залежно від запитуючої підмережі, якщо доступно " -"кілька IP-адрес" - -msgid "Localise queries" -msgstr "Локалізувати запити" - -msgid "Locked to channel %s used by: %s" -msgstr "Заблоковано до каналу %s, який використовує: %s" - -msgid "Log output level" -msgstr "Рівень виведення інформаціі до журналу" - -msgid "Log queries" -msgstr "Журнал запитів" - -msgid "Logging" -msgstr "Журналювання" - -msgid "Login" -msgstr "Увійти" - -msgid "Logout" -msgstr "Вийти" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "Найнижча орендована адреса." - -msgid "MAC" -msgstr "MAC" - -msgid "MAC-Address" -msgstr "MAC-адреса" - -msgid "MAC-Address Filter" -msgstr "Фільтр MAC-адрес" - -msgid "MAC-Filter" -msgstr "MAC-фільтр" - -msgid "MAC-List" -msgstr "MAC-список" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "Неприпустиме правило MAP" - -msgid "MB/s" -msgstr "MБ/с" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "МГц" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" -"Переконайтеся, що ви клонуєте кореневу файлову систему, використовуючи такі " -"команди:" - -msgid "Manual" -msgstr "Вручну" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "Макс. досяжна швидкість передачі даних (ATTNDR)" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "Максимально допустима кількість активних оренд DHCP" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "Максимально допустима кількість одночасних DNS-запитів" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "Максимально допустимий розмір UDP-пакетів EDNS.0" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "Максимальний час очікування готовності модему (секунд)" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" -"Максимальна довжина імені становить 15 символів, включаючи префікс " -"автоматичного протоколу/мосту (br-, 6in4-, pppoe та ін.)" - -msgid "Maximum number of leased addresses." -msgstr "Максимальна кількість орендованих адрес." - -msgid "Mbit/s" -msgstr "Мбіт/с" - -msgid "Memory" -msgstr "Пам’ять" - -msgid "Memory usage (%)" -msgstr "Використання пам’яті, %" - -msgid "Mesh Id" -msgstr "Mesh Id" - -msgid "Metric" -msgstr "Метрика" - -msgid "Mirror monitor port" -msgstr "Дзеркало порту диспетчера" - -msgid "Mirror source port" -msgstr "Дзеркало вихідного порту" - -msgid "Missing protocol extension for proto %q" -msgstr "Відсутні розширення для протоколу %q" - -msgid "Mobility Domain" -msgstr "Домен мобільності" - -msgid "Mode" -msgstr "Режим" - -msgid "Model" -msgstr "Модель" - -msgid "Modem device" -msgstr "Модем" - -msgid "Modem information query failed" -msgstr "Помилка запиту інформації про модем" - -msgid "Modem init timeout" -msgstr "Тайм-аут ініціалізації модему" - -msgid "Monitor" -msgstr "Диспетчер" - -msgid "Mount Entry" -msgstr "Вхід монтування" - -msgid "Mount Point" -msgstr "Точка монтування" - -msgid "Mount Points" -msgstr "Точки монтування" - -msgid "Mount Points - Mount Entry" -msgstr "Точки монтування – Записи монтування" - -msgid "Mount Points - Swap Entry" -msgstr "Точки монтування – Вхід свопу" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Точки монтування визначають, до якої точки пристрою пам’яті буде прикріплено " -"файлову систему" - -msgid "Mount filesystems not specifically configured" -msgstr "Монтувати не конкретно налаштовані файлові системи" - -msgid "Mount options" -msgstr "Опції монтування" - -msgid "Mount point" -msgstr "Точка монтування" - -msgid "Mount swap not specifically configured" -msgstr "Монтувати не конкретно налаштований своп" - -msgid "Mounted file systems" -msgstr "Змонтовано файлові системи" - -msgid "Move down" -msgstr "Вниз" - -msgid "Move up" -msgstr "Вгору" - -msgid "Multicast address" -msgstr "Адреса багатоадресного потоку" - -msgid "NAS ID" -msgstr "Ідентифікатор NAS" - -msgid "NAT-T Mode" -msgstr "Режим NAT-T" - -msgid "NAT64 Prefix" -msgstr "Префікс NAT64" - -msgid "NCM" -msgstr "NCM" - -msgid "NDP-Proxy" -msgstr "NDP-проксі" - -msgid "NT Domain" -msgstr "Домен NT" - -msgid "NTP server candidates" -msgstr "Кандидати для синхронізації NTP-сервера" - -msgid "Name" -msgstr "Ім’я" - -msgid "Name of the new interface" -msgstr "Ім’я нового інтерфейсу" - -msgid "Name of the new network" -msgstr "Назва (ім’я) нової мережі" - -msgid "Navigation" -msgstr "Навігація" - -msgid "Netmask" -msgstr "Маска мережі" - -msgid "Network" -msgstr "Мережа" - -msgid "Network Utilities" -msgstr "Мережеві утиліти" - -msgid "Network boot image" -msgstr "Образ для мережевого завантаження" - -msgid "Network device is not present" -msgstr "Мережевий пристрій відсутній" - -msgid "Network without interfaces." -msgstr "Мережа без інтерфейсів." - -msgid "Next »" -msgstr "Наступний »" - -msgid "No DHCP Server configured for this interface" -msgstr "Немає DHCP-сервера, налаштованого для цього інтерфейсу" - -msgid "No NAT-T" -msgstr "Немає NAT-T" - -msgid "No chains in this table" -msgstr "У цій таблиці немає ланцюжків" - -msgid "No files found" -msgstr "Файли не знайдено" - -msgid "No information available" -msgstr "Інформація відсутня" - -msgid "No matching prefix delegation" -msgstr "Делегування відповідних префіксів відсутнє" - -msgid "No negative cache" -msgstr "Ніяких негативних кешувань" - -msgid "No network configured on this device" -msgstr "На цьому пристрої немає налаштованої мережі" - -msgid "No network name specified" -msgstr "Ім’я мережі не визначено" - -msgid "No package lists available" -msgstr "Немає доступних списків пакетів" - -msgid "No password set!" -msgstr "Пароль не встановлено!" - -msgid "No rules in this chain" -msgstr "У цьму ланцюжку нема правил" - -msgid "No scan results available yet..." -msgstr "Результати сканування наразі недоступні" - -msgid "No zone assigned" -msgstr "Зону не призначено" - -msgid "Noise" -msgstr "Шум" - -msgid "Noise Margin (SNR)" -msgstr "Співвідношення сигнал/шум" - -msgid "Noise:" -msgstr "Шум:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "Не запобіжні помилки CRC (CRC_P)" - -msgid "Non-wildcard" -msgstr "Без шаблону заміни" - -msgid "None" -msgstr "Жоден" - -msgid "Normal" -msgstr "Нормальний" - -msgid "Not Found" -msgstr "Не знайдено" - -msgid "Not associated" -msgstr "Не пов’язаний" - -msgid "Not connected" -msgstr "Не підключено" - -msgid "Note: Configuration files will be erased." -msgstr "Примітка: конфігураційні файли буде видалено." - -msgid "Note: interface name length" -msgstr "Примітка: довжина імені інтерфейсу" - -msgid "Notice" -msgstr "Попередження" - -msgid "Nslookup" -msgstr "DNS-запит" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "Кількість кешованих записів DNS (макс. - 10000, 0 - без кешування)" - -msgid "OK" -msgstr "OK" - -msgid "OPKG-Configuration" -msgstr "Конфігурація OPKG" - -msgid "Obfuscated Group Password" -msgstr "Обфусований груповий пароль" - -msgid "Obfuscated Password" -msgstr "Обфусований пароль" - -msgid "Obtain IPv6-Address" -msgstr "Отримати IPv6-адресу" - -msgid "Off-State Delay" -msgstr "Затримка Off-State" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"На цій сторінці ви можете налаштувати мережеві інтерфейси. Ви можете " -"об’єднати кілька інтерфейсів мостом, відзначивши поле \"Об’єднати інтерфейси " -"в міст\" та ввівши імена кількох мережевих інтерфейсів, розділені пробілами. " -"Також ви можете використовувати VLAN-позначення " -"ІНТЕРФЕЙС.НОМЕР_VLAN (наприклад, eth0.1)." - -msgid "On-State Delay" -msgstr "Затримка On-State" - -msgid "One of hostname or mac address must be specified!" -msgstr "Має бути зазначено одне з двох – ім’я вузла або МАС-адреса!" - -msgid "One or more fields contain invalid values!" -msgstr "Одне або декілька полів містять неприпустимі значення!" - -msgid "One or more invalid/required values on tab" -msgstr "Одне або декілька неприпустимих/обов’язкових значень на вкладці" - -msgid "One or more required fields have no value!" -msgstr "Одне або декілька обов’язкових полів не мають значень!" - -msgid "Open list..." -msgstr "Відкрити список..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "Робоча частота" - -msgid "Option changed" -msgstr "Опція змінена" - -msgid "Option removed" -msgstr "Опція видалена" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" -"Необов’язково. 32-бітна мітка для вихідних зашифрованих пакетів. Введіть " -"значення в шістнадцятковому форматі, починаючи з 0x." - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" -"Необов’язково. Припустимі значення: 'eui64', 'random' чи фіксоване значення, " -"наприклад '::1' або '::1:2'. Якщо префікс IPv6 (наприклад, 'a:b:c:d::') " -"отримано від сервера делегування, для формування IPv6-адреси інтерфейсу " -"(наприклад, 'a:b:c:d::1') використовуйте суфікс ('::1')." - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" -"Необов’язково. Заздалегідь установлений Base64-кодований спільний ключ. " -"Додавання додатково рівня шифрування із симетричним ключем для пост-" -"квантової стійкості." - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "Необов’язково. Створити для цього вузла маршрути для дозволених IP." - -msgid "Optional. Description of peer." -msgstr "Необов’язково. Опис вузла." - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "Необов’язково. Хост вузла. Імена буде виділено до підняття інтерфейсу." - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" -"Необов’язково. Максимальний блок передаваних даних тунельного інтерфейсу." - -msgid "Optional. Port of peer." -msgstr "Необов’язково. Порт вузла." - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" -"Необов’язково. Час (сек.) між перевірками активності повідомлень. Типове " -"значення - 0 (вимкнено). Рекомендоване значення для цього пристрою за NAT - " -"25." - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" -"Необов’язково. UDP-порт, який використовується для вихідних та вхідних " -"пакетів." - -msgid "Options" -msgstr "Опції" - -msgid "Other:" -msgstr "Інше:" - -msgid "Out" -msgstr "Вих." - -msgid "Outbound:" -msgstr "Вихідний:" - -msgid "Output Interface" -msgstr "Вихідний інтерфейс" - -msgid "Override MAC address" -msgstr "Перевизначити MAC-адресу" - -msgid "Override MTU" -msgstr "Перевизначити MTU" - -msgid "Override TOS" -msgstr "Перевизначити TOS" - -msgid "Override TTL" -msgstr "Перевизначити TTL" - -msgid "Override default interface name" -msgstr "Перевизначення типового імені інтерфейсу" - -msgid "Override the gateway in DHCP responses" -msgstr "Перевизначення шлюзу у відповідях DHCP" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" -"Перевизначення мережевої маски, яка надсилається клієнтам. Зазвичай вона " -"обчислюється від підмережі, що обслуговується." - -msgid "Override the table used for internal routes" -msgstr "" -"Перевизначення таблиці, що використовужться для внутрішніх спрямовувань" - -msgid "Overview" -msgstr "Огляд" - -msgid "Owner" -msgstr "Власник" - -msgid "PAP/CHAP password" -msgstr "Пароль PAP/CHAP" - -msgid "PAP/CHAP username" -msgstr "Ім’я користувача PAP/CHAP" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" -">PIN" - -msgid "PIN code rejected" -msgstr "PIN-код відхилено" - -msgid "PMK R1 Push" -msgstr "Проштовхуваня PMK R1" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "Інкапсуляція PPPoA" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "Потрібен пакет libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "Перелік пакетів створений більше ніж 24 години тому" - -msgid "Package name" -msgstr "Назва пакета" - -msgid "Packets" -msgstr "Пакети" - -msgid "Part of zone %q" -msgstr "Частина зони %q" - -msgid "Password" -msgstr "Пароль" - -msgid "Password authentication" -msgstr "Автентифікація за паролем" - -msgid "Password of Private Key" -msgstr "Пароль закритого ключа" - -msgid "Password of inner Private Key" -msgstr "Пароль внутрішнього закритого ключа" - -msgid "Password successfully changed!" -msgstr "Пароль успішно змінено!" - -msgid "Password2" -msgstr "Пароль2" - -msgid "Path to CA-Certificate" -msgstr "Шлях до центру сертифікції" - -msgid "Path to Client-Certificate" -msgstr "Шлях до сертифікату клієнта" - -msgid "Path to Private Key" -msgstr "Шлях до закритого ключа" - -msgid "Path to inner CA-Certificate" -msgstr "Шлях до внутрішнього CA-сертифікату" - -msgid "Path to inner Client-Certificate" -msgstr "Шлях до внутрішнього сертифікату клієнта" - -msgid "Path to inner Private Key" -msgstr "Шлях до внутрішнього закритого ключа" - -msgid "Peak:" -msgstr "Пік:" - -msgid "Peer IP address to assign" -msgstr "Запит IP-адреси призначення" - -msgid "Peer address is missing" -msgstr "Відсутня адреса вузла" - -msgid "Peers" -msgstr "Вузли" - -msgid "Perfect Forward Secrecy" -msgstr "Perfect Forward Secrecy" - -msgid "Perform reboot" -msgstr "Виконати перезавантаження" - -msgid "Perform reset" -msgstr "Відновити" - -msgid "Persistent Keep Alive" -msgstr "Завжди тримати ввімкненим" - -msgid "Phy Rate:" -msgstr "Фізична швидкість:" - -msgid "Physical Settings" -msgstr "Фізичні параметри" - -msgid "Ping" -msgstr "Ехо-запит" - -msgid "Pkts." -msgstr "пакетів" - -msgid "Please enter your username and password." -msgstr "Введіть ім’я користувача і пароль." - -msgid "Policy" -msgstr "Політика" - -msgid "Port" -msgstr "Порт" - -msgid "Port status:" -msgstr "Стан порту:" - -msgid "Power Management Mode" -msgstr "Режим керування живленням" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "Попереджувати помилки CRC (CRCP_P)" - -msgid "Prefer LTE" -msgstr "Переважно LTE" - -msgid "Prefer UMTS" -msgstr "Переважно UMTS" - -msgid "Prefix Delegated" -msgstr "Делеговано префікс" - -msgid "Preshared Key" -msgstr "Заздалегідь установлений спільний ключ" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" -"Вважати вузол недоступним після визначеної кількості невдач отримання ехо-" -"пакета LCP, використовуйте 0, щоб ігнорувати невдачі" - -msgid "Prevent listening on these interfaces." -msgstr "Перешкоджати прослуховуванню цих інтерфейсів." - -msgid "Prevents client-to-client communication" -msgstr "Перешкоджати спілкуванню клієнт-клієнт" - -msgid "Private Key" -msgstr "Приватний ключ" - -msgid "Proceed" -msgstr "Продовжити" - -msgid "Processes" -msgstr "Процеси" - -msgid "Profile" -msgstr "Профіль" - -msgid "Prot." -msgstr "Прот." - -msgid "Protocol" -msgstr "Протокол" - -msgid "Protocol family" -msgstr "Сімейство протоколів" - -msgid "Protocol of the new interface" -msgstr "Протокол нового інтерфейсу" - -msgid "Protocol support is not installed" -msgstr "Підтримка протоколу не інстальована" - -msgid "Provide NTP server" -msgstr "Забезпечувати сервер NTP" - -msgid "Provide new network" -msgstr "Укажіть нову мережу" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Псевдо Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "Відкритий ключ" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "Публічний префікс надісланий на цей пристрій для поширення клієнтам." - -msgid "QMI Cellular" -msgstr "Стільниковий QMI" - -msgid "Quality" -msgstr "Якість" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" -"Запит усіх наявних висхідних DNS-серверів" - -msgid "R0 Key Lifetime" -msgstr "Тривалість життя ключа R0" - -msgid "R1 Key Holder" -msgstr "Власник ключа R1" - -msgid "RFC3947 NAT-T mode" -msgstr "Режим RFC3947 NAT-T" - -msgid "RTS/CTS Threshold" -msgstr "Поріг RTS/CTS" - -msgid "RX" -msgstr "Одержано" - -msgid "RX Rate" -msgstr "Швидкість приймання" - -msgid "Radius-Accounting-Port" -msgstr "Порт Radius-Accounting" - -msgid "Radius-Accounting-Secret" -msgstr "Секрет Radius-Accounting" - -msgid "Radius-Accounting-Server" -msgstr "Сервер Radius-Accounting" - -msgid "Radius-Authentication-Port" -msgstr "Порт Radius-Authentication" - -msgid "Radius-Authentication-Secret" -msgstr "Секрет Radius-Authentication" - -msgid "Radius-Authentication-Server" -msgstr "Сервер Radius-Authentication" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" -"Сирі шістнадцяткові байти. Залиште порожнім, якщо ваш інтернет-провайдер не " -"вимагає цього." - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Читати /etc/ethers для налаштування DHCP-сервера" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" -"Дійсно видалити цей інтерфейс? Скасувати видалення неможливо! Ви можете " -"втратити доступ до цього пристрою, якщо вас підключено через цей інтерфейс." - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"Дійсно видалити цю бездротову мережу? Скасувати видалення неможливо! Ви " -"можете втратити доступ до цього пристрою, якщо вас підключено через цю " -"мережу." - -msgid "Really reset all changes?" -msgstr "Дійсно скинути всі зміни?" - -msgid "Really switch protocol?" -msgstr "Дійсно змінити протокол?" - -msgid "Realtime Connections" -msgstr "Підключення у реальному часі" - -msgid "Realtime Graphs" -msgstr "Графіки у реальному часі" - -msgid "Realtime Load" -msgstr "Навантаження у реальному часі" - -msgid "Realtime Traffic" -msgstr "Трафік у реальному часі" - -msgid "Realtime Wireless" -msgstr "Бездротові мережі у реальному часі" - -msgid "Reassociation Deadline" -msgstr "Кінцевий термін реассоціації" - -msgid "Rebind protection" -msgstr "Захист від переприв’язки" - -msgid "Reboot" -msgstr "Перезавантаження" - -msgid "Rebooting..." -msgstr "Перезавантаження..." - -msgid "Reboots the operating system of your device" -msgstr "Перезавантажити операційну систему вашого пристрою" - -msgid "Receive" -msgstr "Приймання" - -msgid "Receiver Antenna" -msgstr "Антена приймача" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "Рекомендовано. IP-адреси інтерфейсу WireGuard." - -msgid "Reconnect this interface" -msgstr "Перепідключити цей інтерфейс" - -msgid "References" -msgstr "Посилання" - -msgid "Relay" -msgstr "Ретранслятор" - -msgid "Relay Bridge" -msgstr "Міст-ретранслятор" - -msgid "Relay between networks" -msgstr "Міжмережевий ретранслятор" - -msgid "Relay bridge" -msgstr "Міст-ретранслятор" - -msgid "Remote IPv4 address" -msgstr "Віддалена адреса IPv4" - -msgid "Remote IPv4 address or FQDN" -msgstr "Віддалена адреса IPv4 або FQDN" - -msgid "Remove" -msgstr "Видалити" - -msgid "Repeat scan" -msgstr "Повторити сканування" - -msgid "Replace entry" -msgstr "Замінити запис" - -msgid "Replace wireless configuration" -msgstr "Замінити конфігурацію бездротової мережі" - -msgid "Request IPv6-address" -msgstr "Запит IPv6-адреси" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "Потрібно" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "Потрібно для деяких провайдерів, наприклад, Charter із DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "Потрібно. Base64-закодований закритий ключ для цього інтерфейсу." - -msgid "Required. Base64-encoded public key of peer." -msgstr "Потрібно. Base64-закодований відкритий ключ вузла." - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" -"Потребує \"повної\" версії wpad/hostapd та підтримки драйвером WiFi
    (станом на лютий 2017 року: ath9k та ath10k, у LEDE також mwlwifi та mt76)" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Скинути" - -msgid "Reset Counters" -msgstr "Скинути лічильники" - -msgid "Reset to defaults" -msgstr "Відновити початковий стан" - -msgid "Resolv and Hosts Files" -msgstr "Файли resolv і hosts" - -msgid "Resolve file" -msgstr "Файл resolv" - -msgid "Restart" -msgstr "Перезавантажити" - -msgid "Restart Firewall" -msgstr "Перезавантажити брандмауер" - -msgid "Restart radio interface" -msgstr "Перезавантажити радіоінтерфейс" - -msgid "Restore" -msgstr "Відновити" - -msgid "Restore backup" -msgstr "Відновити з резервної копії" - -msgid "Reveal/hide password" -msgstr "Показати/приховати пароль" - -msgid "Revert" -msgstr "Скасувати" - -msgid "Revert changes" -msgstr "Скасувати зміни" - -msgid "Revert request failed with status %h" -msgstr "Помилка запиту на скасування зі статусом %h" - -msgid "Reverting configuration…" -msgstr "Відкат конфігурації…" - -msgid "Root" -msgstr "Корінь" - -msgid "Root directory for files served via TFTP" -msgstr "Кореневий каталог для файлів TFTP" - -msgid "Root preparation" -msgstr "Підготовка Root" - -msgid "Route Allowed IPs" -msgstr "Маршрутизація дозволених IP-адрес" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "Служба оголошень маршрутизатора" - -msgid "Router Password" -msgstr "Пароль маршрутизатора" - -msgid "Routes" -msgstr "Маршрути" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Маршрути визначають через який інтерфейс і шлюз можна досягнути певного " -"вузла або мережі." - -msgid "Run a filesystem check before mounting the device" -msgstr "Виконати перевірку файлової системи перед монтуванням пристрою" - -msgid "Run filesystem check" -msgstr "Виконати перевірку файлової системи" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "SSH-доступ" - -msgid "SSH server address" -msgstr "Адреса сервера SSH" - -msgid "SSH server port" -msgstr "Порт сервера SSH" - -msgid "SSH username" -msgstr "Ім’я користувача SSH" - -msgid "SSH-Keys" -msgstr "SSH-ключі" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Зберегти" - -msgid "Save & Apply" -msgstr "Зберегти і застосувати" - -msgid "Scan" -msgstr "Сканувати" - -msgid "Scan request failed" -msgstr "Помилка запиту на сканування" - -msgid "Scheduled Tasks" -msgstr "Заплановані завдання" - -msgid "Section added" -msgstr "Секцію додано" - -msgid "Section removed" -msgstr "Секцію видалено" - -msgid "See \"mount\" manpage for details" -msgstr "Подробиці дивись на сторінці керівництва \"mount\"." - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" -"Надсилати ехо-пакети LCP зі вказаним інтервалом (секунди), ефективно тільки " -"в поєднанні з порогом помилок" - -msgid "Separate Clients" -msgstr "Розділяти клієнтів" - -msgid "Server Settings" -msgstr "Настройки сервера" - -msgid "Service Name" -msgstr "Назва (ім’я) сервісу" - -msgid "Service Type" -msgstr "Тип сервісу" - -msgid "Services" -msgstr "Сервіси" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" -"Властивості інтерфейсу встановлюються незалежно від каналу зв’язку (якщо " -"позначено, обробник автовизначення не викликається при змінах)." - -msgid "Set up Time Synchronization" -msgstr "Налаштування синхронізації часу" - -msgid "Setting PLMN failed" -msgstr "Не вдалося налаштувати PLMN" - -msgid "Setting operation mode failed" -msgstr "Не вдалося налаштувати режим роботи" - -msgid "Setup DHCP Server" -msgstr "Налаштування DHCP-сервера" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "Short GI" - -msgid "Short Preamble" -msgstr "Коротка преамбула" - -msgid "Show current backup file list" -msgstr "Показати поточний список файлів резервного копіювання" - -msgid "Shutdown this interface" -msgstr "Вимкнути цей інтерфейс" - -msgid "Signal" -msgstr "Сигнал" - -msgid "Signal Attenuation (SATN)" -msgstr "Затухання сигналу (SATN)" - -msgid "Signal:" -msgstr "Сигнал:" - -msgid "Size" -msgstr "Розмір" - -msgid "Size (.ipk)" -msgstr "Розмір (.ipk)" - -msgid "Size of DNS query cache" -msgstr "Розмір кешу запитів DNS" - -msgid "Skip" -msgstr "Пропустити" - -msgid "Skip to content" -msgstr "Перейти до вмісту" - -msgid "Skip to navigation" -msgstr "Перейти до навігації" - -msgid "Slot time" -msgstr "Час слота" - -msgid "Software" -msgstr "Програмне забезпечення" - -msgid "Software VLAN" -msgstr "Програмово реалізований VLAN" - -msgid "Some fields are invalid, cannot save values!" -msgstr "Деякі поля є неприпустимими, неможливо зберегти значення!" - -msgid "Sorry, the object you requested was not found." -msgstr "На жаль, об’єкт, який ви просили, не знайдено." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "На жаль, на сервері сталася неочікувана помилка." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"На жаль, оновлення системи не підтримується. Новий образ мікропрограми слід " -"прошити вручну. Зверніться до Wiki за інструкцією з інсталяції для " -"конкретного пристрою." - -msgid "Source" -msgstr "Джерело" - -msgid "Specifies the directory the device is attached to" -msgstr "Визначає каталог, до якого приєднаний пристрій" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "Визначає порт прослуховування цієї реалізації Dropbear" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" -"Визначає максимальну кількість невдалих ARP-запитів до вузлів, після якого " -"вважається, що вузли \"мертві\"" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" -"Визначає максимальний час (секунди), після якого вважається, що вузли " -"\"мертві\"" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "Вкажіть тут секретний ключ шифрування." - -msgid "Start" -msgstr "Запустити" - -msgid "Start priority" -msgstr "Стартовий пріоритет" - -msgid "Starting configuration apply…" -msgstr "Застосовується стартова конфігурація…" - -msgid "Starting wireless scan..." -msgstr "Розпочато сканування бездротових мереж..." - -msgid "Startup" -msgstr "Запуск" - -msgid "Static IPv4 Routes" -msgstr "Статичні маршрути IPv4" - -msgid "Static IPv6 Routes" -msgstr "Статичні маршрути IPv6" - -msgid "Static Leases" -msgstr "Статичні оренди" - -msgid "Static Routes" -msgstr "Статичні маршрути" - -msgid "Static address" -msgstr "Статична адреса" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"Статичні оренди використовуються для призначення фіксованих IP-адрес і " -"символічних імен вузлів DHCP-клієнтам. Вони також необхідні для статичних " -"конфігурацій інтерфейсів, коли обслуговуються тільки вузли з відповідною " -"орендою." - -msgid "Status" -msgstr "Стан" - -msgid "Stop" -msgstr "Зупинити" - -msgid "Strict order" -msgstr "Строгий порядок" - -msgid "Submit" -msgstr "Надіслати" - -msgid "Suppress logging" -msgstr "Блокувати журналювання" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "Блокувати ведення журналу звичайної роботи цих протоколів" - -msgid "Swap" -msgstr "Своп" - -msgid "Swap Entry" -msgstr "Вхід своп" - -msgid "Switch" -msgstr "Комутатор" - -msgid "Switch %q" -msgstr "Комутатор %q" - -msgid "Switch %q (%s)" -msgstr "Комутатор %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" -"Комутатор %q має невідому топологію – параметри VLAN можуть бути " -"неправильними." - -msgid "Switch Port Mask" -msgstr "Маска портів комутатора" - -msgid "Switch VLAN" -msgstr "VLAN комутатора" - -msgid "Switch protocol" -msgstr "Протокол комутатора" - -msgid "Sync with browser" -msgstr "Синхронізувати з браузером" - -msgid "Synchronizing..." -msgstr "Синхронізація..." - -msgid "System" -msgstr "Система" - -msgid "System Log" -msgstr "Системний журнал" - -msgid "System Properties" -msgstr "Властивості системи" - -msgid "System log buffer size" -msgstr "Розмір буфера системного журналу" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "Налаштування TFTP" - -msgid "TFTP server root" -msgstr "Корінь TFTP-сервера" - -msgid "TX" -msgstr "Передано" - -msgid "TX Rate" -msgstr "Швидкість передавання" - -msgid "Table" -msgstr "Таблиця" - -msgid "Target" -msgstr "Ціль" - -msgid "Target network" -msgstr "Цільова мережа" - -msgid "Terminate" -msgstr "Завершити" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"Розділ Конфігурація пристрою охоплює фізичні параметри апаратних " -"радіо-засобів, такі, як канал, потужність передавача або вибір антени, які є " -"спільними для всіх визначених бездротових мереж (якщо апаратні радіо-засоби " -"здатні підтримувати кілька SSID). Параметри окремих мереж, такі, як " -"шифрування або режим роботи, згруповано в розділі Конфігурація " -"інтерфейсу." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"Пакет libiwinfo-lua не інстальований. Щоб мати можливість " -"налаштувати безпровідні мережі, слід інсталювати цей компонент!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" -"Призначений провайдером IPv6-префікс, зазвичай закінчується на ::" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"Дозволено символи: A-Z, a-z, 0-9 та " -"_" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "Архів резервної копії не є правильним файлом gzip." - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "Файл конфігурації не вдалося завантажити через таку помилку:" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" -"Пристрій недосяжний протягом %d секунд після застосування очікуючих змін, що " -"призвело до відкочування конфигурації з міркувань безпеки. Проте, якщо ви " -"впевнені, що зміни конфігурації є правильними, застосуйте неперевірену " -"конфігурацію. Крім того, ви можете відхилити це попередження та " -"відредагувати зміни, перш ніж намагатись застосувати їх знову, або ж " -"скасувати всі очікуючі зміни, щоб зберегти поточну робочу конфігурацію." - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "Файл пристрою пам’яті або розділу (наприклад, /dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Файлова система, яка використовуватиметься для форматування пам’яті " -"(наприклад, ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"Образ завантажено. Нижче наведено контрольну суму та розмір файлу. " -"Порівняйте їх з вихідним файлом, шоб переконатися в цілісності даних.
    " -"Натисніть \"Продовжити\", щоб розпочати процедуру прошивання." - -msgid "The following changes have been reverted" -msgstr "Наведені нижче зміни було скасовано" - -msgid "The following rules are currently active on this system." -msgstr "Наразі в цій системі активні такі правила." - -msgid "The given network name is not unique" -msgstr "Задане мережеве ім’я не є унікальним" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" -"Обладнання не підтримує мульти-SSID і, якщо ви продовжите, існуючу " -"конфігурацію буде замінено." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "Довжина IPv4-префікса в бітах, решта використовується в IPv6-адресах." - -msgid "The length of the IPv6 prefix in bits" -msgstr "Довжина IPv6-префікса в бітах" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"Мережеві порти вашого пристрою може бути об’єднано у декілька VLAN, у яких комп’ютери можуть напряму спілкуватися один з одним. " -"VLAN часто використовуються для розділення мережі на окремі " -"сегменти. Зазвичай один виcхідний порт використовується для з’єднання з " -"більшою мережею, такою наприклад, як Інтернет, а інші порти — для локальної " -"мережі." - -msgid "The selected protocol needs a device assigned" -msgstr "Обраний протокол потребує призначених пристроїв" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" -"Зараз система видаляє розділ конфігурації і коли закінчить, " -"перезавантажиться." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Система перепрошивається.
    НЕ ВИМИКАЙТЕ ЖИВЛЕННЯ ПРИСТРОЮ!
    Зачекайте кілька хвилин перед тим, як пробувати знову " -"з'єднатися. Залежно від ваших настройок, можливо, вам треба буде оновити " -"адресу вашого комп'ютера, щоб знову отримати доступ до пристрою." - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Завантажений файл образу не містить підтримуваний формат. Переконайтеся, що " -"ви вибираєте універсальний формат образу для вашої платформи." - -msgid "There are no active leases." -msgstr "Активних оренд немає." - -msgid "There are no changes to apply." -msgstr "Немає жодних змін до застосування." - -msgid "There are no pending changes to revert!" -msgstr "Немає жодних очікуючих змін до скасування!" - -msgid "There are no pending changes!" -msgstr "Немає жодних очікуючих змін!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" -"Немає жодного призначеного пристрою. Призначте мережевий пристрій у вкладці " -"\"Фізичні параметри\"." - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" -"Цей маршрутизатор не має пароля. Встановіть пароль, шоб захистити веб-" -"інтерфейс і увімкнути SSH." - -msgid "This IPv4 address of the relay" -msgstr "Це IPv4-адреса ретранслятора" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" -"Цей файл може містити такі рядки, як 'server=/domain/1.2.3.4' або " -"'server=1.2.3.4' для домен-орієнтованих або повних висхідних DNS-серверів." - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"Це список шаблонів для відбору файлів і каталогів, які мають увійти до " -"резервної копії. Змінені файли у /etc/config/ та деякі інші " -"зберігаються автоматично." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" -"Це або \"Update Key\", сконфігурований для тунелю, або пароль облікового " -"запису, якщо ключ оновлення не налаштовано" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"Це вміст файлу /etc/rc.local. Вставте тут ваші власні команди " -"(перед 'exit 0'), щоб виконати їх у кінці процесу завантаження." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" -"Це локальна адреса кінцевої точки, яку присвоєно тунельним брокером, вона " -"зазвичай закінчується на …:2/64" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Тільки для DHCP у локальній мережі" - -msgid "This is the plain username for logging into the account" -msgstr "Це звичайне ім’я користувача для входу до облікового запису" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" -"Це префікс, що надсилається до вас тунельним брокером для використання " -"клієнтами" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "" -"Це системна таблиця Cron (crontab), у якій можна визначити заплановані " -"завдання." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" -"Зазвичай, це адреса найближчої точки присутності, що управляється тунельним " -"брокером" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "У цьому списку наведено працюючі наразі системні процеси та їх стан." - -msgid "This page gives an overview over currently active network connections." -msgstr "Ця сторінка надає огляд поточних активних мережевих підключень." - -msgid "This section contains no values yet" -msgstr "Ця секція поки що не містить значень" - -msgid "Time Synchronization" -msgstr "Синхронізація часу" - -msgid "Time Synchronization is not configured yet." -msgstr "Синхронізацію часу не налаштовано." - -msgid "Timezone" -msgstr "Часовий пояс" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"Щоб відновити файли конфігурації, ви можете відвантажити раніше створений " -"архів резервної копії. Для відновлення мікропрограми до її початкового стану " -"натисніть кнопку \"Відновити\" (можливо тільки з образами SquashFS)." - -msgid "Tone" -msgstr "Тоновий" - -msgid "Total Available" -msgstr "Усього доступно" - -msgid "Traceroute" -msgstr "Трасування" - -msgid "Traffic" -msgstr "Трафік" - -msgid "Transfer" -msgstr "Передано" - -msgid "Transmission Rate" -msgstr "Швидкість передавання" - -msgid "Transmit" -msgstr "Передавання" - -msgid "Transmit Power" -msgstr "Потужність передавача" - -msgid "Transmitter Antenna" -msgstr "Антена передавача" - -msgid "Trigger" -msgstr "Тригер" - -msgid "Trigger Mode" -msgstr "Режим запуску" - -msgid "Tunnel ID" -msgstr "Ідентифікатор тунелю" - -msgid "Tunnel Interface" -msgstr "Інтерфейс тунелю" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "Потужність передавача" - -msgid "Type" -msgstr "Тип" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "Тільки UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB-пристрій" - -msgid "USB Ports" -msgstr "USB-порт" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "Не вдається визначити ім’я пристрою" - -msgid "Unable to determine external IP address" -msgstr "Не вдається визначити зовнішню ІР-адресу" - -msgid "Unable to determine upstream interface" -msgstr "Не вдається визначити висхідний інтерфейс" - -msgid "Unable to dispatch" -msgstr "Не вдається опрацювати запит" - -msgid "Unable to obtain client ID" -msgstr "Не вдається отримати ідентифікатор клієнта" - -msgid "Unable to resolve AFTR host name" -msgstr "Не вдається розрізнити ім’я хоста AFTR" - -msgid "Unable to resolve peer host name" -msgstr "Не вдається розрізнити ім’я хоста вузла" - -msgid "Unavailable Seconds (UAS)" -msgstr "Недоступні секунди (UAS)" - -msgid "Unknown" -msgstr "Невідомо" - -msgid "Unknown Error, password not changed!" -msgstr "Невідома помилка, пароль не змінено!" - -msgid "Unknown error (%s)" -msgstr "Невідома помилка (%s)" - -msgid "Unmanaged" -msgstr "Некерований" - -msgid "Unmount" -msgstr "Демонтувати" - -msgid "Unsaved Changes" -msgstr "Незбережені зміни" - -msgid "Unsupported MAP type" -msgstr "Непідтримуваний тип MAP" - -msgid "Unsupported modem" -msgstr "Непідтримуваний модем" - -msgid "Unsupported protocol type." -msgstr "Непідтримуваний тип протоколу." - -msgid "Up" -msgstr "Вгору" - -msgid "Update lists" -msgstr "Оновити списки" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"Відвантажити sysupgrade-сумісний образ, щоб замінити поточну мікропрограму. " -"Для збереження поточної конфігурації встановіть прапорець \"Зберегти " -"налаштування\" (потрібен сумісний образ мікропрограми)." - -msgid "Upload archive..." -msgstr "Відвантажити архів..." - -msgid "Uploaded File" -msgstr "Відвантажений файл" - -msgid "Uptime" -msgstr "Час безперервної роботи" - -msgid "Use /etc/ethers" -msgstr "Використовувати /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "Використовувати DHCP-шлюз" - -msgid "Use DNS servers advertised by peer" -msgstr "Використовувати DNS-сервери, оголошувані вузлом" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "Використовуйте коди країн згідно ISO/IEC 3166 alpha2." - -msgid "Use MTU on tunnel interface" -msgstr "Використовувати на тунельному інтерфейсі MTU" - -msgid "Use TTL on tunnel interface" -msgstr "Використовувати на тунельному інтерфейсі TTL" - -msgid "Use as external overlay (/overlay)" -msgstr "Використовувати як зовнішній оверлей (/overlay)" - -msgid "Use as root filesystem (/)" -msgstr "Використовувати як кореневу файлову систему (/)" - -msgid "Use broadcast flag" -msgstr "Використовувати прапорець широкомовності" - -msgid "Use builtin IPv6-management" -msgstr "Використовувати вбудоване керування IPv6" - -msgid "Use custom DNS servers" -msgstr "Використовувати особливі DNS-сервери" - -msgid "Use default gateway" -msgstr "Використовувати типовий шлюз" - -msgid "Use gateway metric" -msgstr "Використовувати метрику шлюзу" - -msgid "Use routing table" -msgstr "Використовувати таблицю маршрутизації" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"Використовуйте кнопку Додати, щоб додати новий запис оренди. " -"MAC-адреса ідентифікує вузол, IPv4-адреса визначає " -"фіксовану адресу, яка буде використовуватися, а Назва (ім’я) вузла " -"призначає символічне ім’я вузла." - -msgid "Used" -msgstr "Використано" - -msgid "Used Key Slot" -msgstr "Використовується слот ключа" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" -"Використовується для двох різних цілей: RADIUS NAS ID і 802.11r R0KH-ID. Не потрібно за " -"звичайного WPA(2)-PSK." - -msgid "User certificate (PEM encoded)" -msgstr "Сертифікат користувача (PEM-кодований)" - -msgid "User key (PEM encoded)" -msgstr "Ключ користувача (PEM-кодований)" - -msgid "Username" -msgstr "Ім’я користувача" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "VLAN на %q" - -msgid "VLANs on %q (%s)" -msgstr "VLAN на %q (%s)" - -msgid "VPN Local address" -msgstr "Локальна адреса VPN" - -msgid "VPN Local port" -msgstr "Локальний порт VPN" - -msgid "VPN Server" -msgstr "VPN-сервер" - -msgid "VPN Server port" -msgstr "Порт VPN-сервера" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "SHA1-геш сертифіката VPN-сервера" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "VPNC (CISCO 3000 (та інш.) VPN)" - -msgid "Vendor" -msgstr "Постачальник" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "Клас постачальника для відправки при запиті DHCP" - -msgid "Verify" -msgstr "Перевірте" - -msgid "Version" -msgstr "Версія" - -msgid "Virtual dynamic interface" -msgstr "Віртуальний динамічний інтерфейс" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "Відкрита система WEP" - -msgid "WEP Shared Key" -msgstr "Спільний ключ WEP" - -msgid "WEP passphrase" -msgstr "Парольна фраза WEP" - -msgid "WMM Mode" -msgstr "Режим WMM" - -msgid "WPA passphrase" -msgstr "Парольна фраза WPA" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-шифрування потребує інсталяції wpa_supplicant (для режиму " -"клієнта) або hostapd (для Точки доступу та режиму ad-hoc)." - -msgid "Waiting for changes to be applied..." -msgstr "Очікуємо, доки зміни наберуть чинності..." - -msgid "Waiting for command to complete..." -msgstr "Очікуємо завершення виконання команди..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "Чекаємо на застосування конфігурації… %d c" - -msgid "Waiting for device..." -msgstr "Очікуємо пристрій..." - -msgid "Warning" -msgstr "Застереження" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" -"Застереження: Є незбережені зміни, які буде втрачено при перезавантаженні!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "Ширина" - -msgid "WireGuard VPN" -msgstr "WireGuard VPN" - -msgid "Wireless" -msgstr "Бездротові мережі" - -msgid "Wireless Adapter" -msgstr "Бездротовий адаптер" - -msgid "Wireless Network" -msgstr "Бездротова мережа" - -msgid "Wireless Overview" -msgstr "Огляд бездротових мереж" - -msgid "Wireless Security" -msgstr "Безпека бездротової мережі" - -msgid "Wireless is disabled" -msgstr "Бездротову мережу вимкнено" - -msgid "Wireless is not associated" -msgstr "Бездротову мережу не пов’язано" - -msgid "Wireless is restarting..." -msgstr "Бездротова мережа перезапускається..." - -msgid "Wireless network is disabled" -msgstr "Бездротову мережу вимкнено" - -msgid "Wireless network is enabled" -msgstr "Бездротову мережу ввімкнено" - -msgid "Write received DNS requests to syslog" -msgstr "Записувати отримані DNS-запити до системного журналу" - -msgid "Write system log to file" -msgstr "Записувати cистемний журнал до файлу" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Тут ви можете увімкнути або вимкнути інстальовані скрипти ініціалізації. " -"Зміни набудуть чинності після перезавантаження пристрою.
    Увага: " -"Якщо ви вимкнете основний скрипт ініціалізації (наприклад \"network\"), " -"пристрій може стати недоступним!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" -"Вам слід увімкнути JavaScript у вашому браузері, або LuCI не буде працювати " -"належним чином." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"Ваш Internet Explorer занадто старий, щоб правильно відобразити цю сторінку. " -"Поновіть його, принаймні, до версії 7 або скористайтесь іншим браузером, " -"таким як Firefox, Opera або Safari." - -msgid "any" -msgstr "будь-який" - -msgid "auto" -msgstr "авто" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "зв’язано" - -msgid "create" -msgstr "створити" - -msgid "create:" -msgstr "створити:" - -msgid "creates a bridge over specified interface(s)" -msgstr "Створює міст через зазначені інтерфейси" - -msgid "dB" -msgstr "дБ" - -msgid "dBm" -msgstr "дБм" - -msgid "disable" -msgstr "вимкнено" - -msgid "disabled" -msgstr "вимкнено" - -msgid "expired" -msgstr "минув" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Файл, де зберігаються видані DHCP-оренди" - -msgid "forward" -msgstr "переспрямувати" - -msgid "full-duplex" -msgstr "повний дуплекс" - -msgid "half-duplex" -msgstr "напівдуплекс" - -msgid "hidden" -msgstr "прихований" - -msgid "hybrid mode" -msgstr "гібридний режим" - -msgid "if target is a network" -msgstr "якщо ціль — мережа" - -msgid "input" -msgstr "вхід" - -msgid "kB" -msgstr "КБ" - -msgid "kB/s" -msgstr "КБ/с" - -msgid "kbit/s" -msgstr "Кбіт/с" - -msgid "local DNS file" -msgstr "" -"Локальний DNS-файл" - -msgid "minutes" -msgstr "хв." - -msgid "mixed WPA/WPA2" -msgstr "змішаний WPA/WPA2" - -msgid "no" -msgstr "ні" - -msgid "no link" -msgstr "нема з’єднання" - -msgid "none" -msgstr "нема нічого" - -msgid "not present" -msgstr "не присутній" - -msgid "off" -msgstr "вимкнено" - -msgid "on" -msgstr "увімкнено" - -msgid "open" -msgstr "відкрита" - -msgid "output" -msgstr "вихід" - -msgid "overlay" -msgstr "оверлей" - -msgid "random" -msgstr "випадковий" - -msgid "relay mode" -msgstr "режим реле" - -msgid "routed" -msgstr "спрямовано" - -msgid "server mode" -msgstr "режим сервера" - -msgid "stateful-only" -msgstr "тільки ЗІ збереженням стану" - -msgid "stateless" -msgstr "БЕЗ збереження стану" - -msgid "stateless + stateful" -msgstr "БЕЗ та ЗІ збереженням стану" - -msgid "tagged" -msgstr "позначено" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "одиниці часу (TUs / 1.024 ms) [1000-65535]" - -msgid "unknown" -msgstr "невідомий" - -msgid "unlimited" -msgstr "необмежений" - -msgid "unspecified" -msgstr "не визначено" - -msgid "unspecified -or- create:" -msgstr "не визначено -або- створити:" - -msgid "untagged" -msgstr "не позначено" - -msgid "yes" -msgstr "так" - -msgid "« Back" -msgstr "« Назад" diff --git a/luci-base/po/vi/base.po b/luci-base/po/vi/base.po deleted file mode 100644 index 6451853bb..000000000 --- a/luci-base/po/vi/base.po +++ /dev/null @@ -1,3973 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-08-16 06:59+0200\n" -"PO-Revision-Date: 2009-08-14 12:23+0200\n" -"Last-Translator: Hong Phuc Dang \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Pootle 1.1.0\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "" - -#, fuzzy -msgid "(%s available)" -msgstr "(%s available)" - -msgid "(empty)" -msgstr "" - -msgid "(no interfaces attached)" -msgstr "" - -msgid "-- Additional Field --" -msgstr "---Mục bổ sung---" - -msgid "-- Please choose --" -msgstr "--Hãy chọn--" - -msgid "-- custom --" -msgstr "--tùy chỉnh--" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "" - -msgid "15 Minute Load:" -msgstr "" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "" - -msgid "DNS server port" -msgstr "" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-Address" - -msgid "IPv4-Gateway" -msgstr "IPv4-Gateway" - -msgid "IPv4-Netmask" -msgstr "IPv4-Netmask" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-Address or Network " -"(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-Gateway" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED Configuration" - -msgid "LED Name" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-Address" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" - -msgid "Max. concurrent queries" -msgstr "" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "" - -msgid "ARP retry threshold" -msgstr "" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" - -msgid "ATM device number" -msgstr "" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "" - -msgid "Access Point" -msgstr "Điểm truy cập" - -msgid "Actions" -msgstr "Hành động" - -msgid "Active IPv4-Routes" -msgstr "Active IPv4-Routes" - -msgid "Active IPv6-Routes" -msgstr "Active IPv6-Routes" - -msgid "Active Connections" -msgstr "kết nối đang hoạt động" - -msgid "Active DHCP Leases" -msgstr "" - -msgid "Active DHCPv6 Leases" -msgstr "" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "Thêm vào" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "" - -msgid "Add new interface..." -msgstr "" - -msgid "Additional Hosts files" -msgstr "" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "" - -msgid "Address to access local relay bridge" -msgstr "" - -msgid "Administration" -msgstr "Quản trị" - -msgid "Advanced Settings" -msgstr "" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "Cho phép SSH xác thực mật mã" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "Cho phép tất cả trừ danh sách liệt kê" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "Chỉ cho phép danh sách liệt kê" - -msgid "Allow localhost" -msgstr "" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "" - -msgid "Allow root logins with password" -msgstr "" - -msgid "Allow the root user to login with password" -msgstr "" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "" - -msgid "Antenna 2" -msgstr "" - -msgid "Antenna Configuration" -msgstr "" - -msgid "Any zone" -msgstr "" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "" - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "Xác thực" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "Authoritative" - -msgid "Authorization Required" -msgstr "Yêu cầu ủy quyền" - -msgid "Auto Refresh" -msgstr "" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "Sẵn có" - -msgid "Available packages" -msgstr "" - -msgid "Average:" -msgstr "" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "" - -msgid "Back" -msgstr "" - -msgid "Back to Overview" -msgstr "" - -msgid "Back to configuration" -msgstr "" - -msgid "Back to overview" -msgstr "" - -msgid "Back to scan results" -msgstr "" - -msgid "Backup" -msgstr "" - -msgid "Backup / Flash Firmware" -msgstr "" - -msgid "Backup file list" -msgstr "" - -msgid "Bad address specified!" -msgstr "" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "" - -msgid "Bogus NX Domain Override" -msgstr "" - -msgid "Bridge" -msgstr "" - -msgid "Bridge interfaces" -msgstr "Giao diện cầu nối" - -msgid "Bridge unit number" -msgstr "" - -msgid "Bring up on boot" -msgstr "" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "" - -msgid "Buffered" -msgstr "" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU usage (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "Bỏ qua" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "chuỗi" - -msgid "Changes" -msgstr "Thay đổi" - -msgid "Changes applied." -msgstr "Thay đổi đã áp dụng" - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "" - -msgid "Channel" -msgstr "Kênh" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "Checksum" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "Giao diện này chưa thuộc về bất kỳ firewall zone nào." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" - -msgid "Cipher" -msgstr "" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "" - -msgid "Client" -msgstr "Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "" - -msgid "Close list..." -msgstr "" - -msgid "Collecting data..." -msgstr "" - -msgid "Command" -msgstr "Lệnh" - -msgid "Common Configuration" -msgstr "" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "Cấu hình" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "" - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "Xác nhận" - -msgid "Connect" -msgstr "" - -msgid "Connected" -msgstr "" - -msgid "Connection Limit" -msgstr "Giới hạn kết nối" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "" - -msgid "Country Code" -msgstr "Mã quốc gia" - -msgid "Cover the following interface" -msgstr "" - -msgid "Cover the following interfaces" -msgstr "" - -msgid "Create / Assign firewall-zone" -msgstr "Tạo/ gán firewall-zone" - -msgid "Create Interface" -msgstr "" - -msgid "Create a bridge over multiple interfaces" -msgstr "" - -msgid "Critical" -msgstr "" - -msgid "Cron Log Level" -msgstr "" - -msgid "Custom Interface" -msgstr "" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"Tùy chỉnh chế độ của thiết bị LEDs nếu có thể." - -msgid "DHCP Server" -msgstr "" - -msgid "DHCP and DNS" -msgstr "" - -msgid "DHCP client" -msgstr "" - -msgid "DHCP-Options" -msgstr "Tùy chọn DHCP" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "" - -msgid "DNS forwardings" -msgstr "" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "" - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "" - -msgid "Default %d" -msgstr "" - -msgid "Default gateway" -msgstr "" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "" - -msgid "Define a name for this network." -msgstr "" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" - -msgid "Delete" -msgstr "Xóa" - -msgid "Delete this network" -msgstr "" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "Mô tả" - -msgid "Design" -msgstr "Thiết kế" - -msgid "Destination" -msgstr "Điểm đến" - -msgid "Device" -msgstr "Công cụ" - -msgid "Device Configuration" -msgstr "" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Disable" -msgstr "" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" - -msgid "Disable DNS setup" -msgstr "" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "" - -msgid "Distance Optimization" -msgstr "Khoảng cách tối ưu" - -msgid "Distance to farthest network member in meters." -msgstr "Khoảng cách tới thành viên xa nhất trong mạng lưới tính bằng mét" - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "Tính đa dạng" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq là một phối hợp DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "" - -msgid "Do not forward reverse lookups for local networks" -msgstr "" - -msgid "Domain required" -msgstr "Domain yêu cầu" - -msgid "Domain whitelist" -msgstr "" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"Don&#39;t chuyển tiếp DNS-Yêu " -"cầu không cần DNS-Tên" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "Tải và cài đặt gói" - -msgid "Download backup" -msgstr "" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear cung cấp SSH mạng lưới shell " -"truy cập và một SCP server tích hợp" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "" -"Dynamic DHCP" - -msgid "Dynamic tunnel" -msgstr "" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP-Method" - -msgid "Edit" -msgstr "Chỉnh sửa" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "" - -msgid "Edit this network" -msgstr "" - -msgid "Emergency" -msgstr "" - -msgid "Enable" -msgstr "" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "Kích hoạt STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "" - -msgid "Enable Jumbo Frame passthrough" -msgstr "" - -msgid "Enable NTP client" -msgstr "" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "" - -msgid "Enable VLAN functionality" -msgstr "" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "" - -msgid "Enable/Disable" -msgstr "Cho kích hoạt/ Vô hiệu hóa" - -msgid "Enabled" -msgstr "" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "Kích hoạt Spanning Tree Protocol trên cầu nối này" - -msgid "Encapsulation mode" -msgstr "" - -msgid "Encryption" -msgstr "Encryption" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "" - -msgid "Error" -msgstr "Lỗi" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "Bộ tương hợp ethernet" - -msgid "Ethernet Switch" -msgstr "Bộ chuyển đảo ethernet" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "" - -msgid "Expires" -msgstr "" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "" - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "" - -msgid "External system log server port" -msgstr "" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "" - -msgid "Filename of the boot image advertised to clients" -msgstr "" - -msgid "Filesystem" -msgstr "Tập tin hệ thống" - -msgid "Filter" -msgstr "Lọc" - -msgid "Filter private" -msgstr "Filter private" - -msgid "Filter useless" -msgstr "Lọc không hữu dụng" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "" - -msgid "Find package" -msgstr "Tìm gói" - -msgid "Finish" -msgstr "" - -msgid "Firewall" -msgstr "Firewall" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "" - -msgid "Firewall Status" -msgstr "" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "" - -msgid "Fixed source port for outbound DNS queries" -msgstr "" - -msgid "Flash Firmware" -msgstr "Phần cứng flash" - -msgid "Flash image..." -msgstr "" - -msgid "Flash new firmware image" -msgstr "" - -msgid "Flash operations" -msgstr "" - -msgid "Flashing..." -msgstr "" - -msgid "Force" -msgstr "Force" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "" - -msgid "Force TKIP" -msgstr "" - -msgid "Force TKIP and CCMP (AES)" -msgstr "" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "" - -msgid "Fragmentation Threshold" -msgstr "Ngưỡng cửa Phân đoạn" - -msgid "Frame Bursting" -msgstr "Khung nổ" - -msgid "Free" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "" - -msgid "GPRS only" -msgstr "" - -msgid "Gateway" -msgstr "" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "" - -msgid "General Settings" -msgstr "" - -msgid "General Setup" -msgstr "" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "" - -msgid "Go to relevant configuration page" -msgstr "Đi tới trang cấu hình thích hợp" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr "" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "Hang Up" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "" -"Ở đây bạn có thể cấu hình những đặc tính cơ bản của thiết bị như tên máy chủ " -"hoặc múi giờ." - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "" - -msgid "Hide ESSID" -msgstr "Giấu ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "Host entries" - -msgid "Host expiry timeout" -msgstr "" - -msgid "Host-IP or Network" -msgstr "Host-IP or Network" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "Tên host" - -msgid "Hostname to send when requesting DHCP" -msgstr "" - -msgid "Hostnames" -msgstr "Tên host" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "Địa chỉ IP" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "" - -msgid "IPv4 Firewall" -msgstr "" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "" - -msgid "IPv4 and IPv6" -msgstr "" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "" - -msgid "IPv4 gateway" -msgstr "" - -msgid "IPv4 netmask" -msgstr "" - -msgid "IPv4 only" -msgstr "" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "" - -msgid "IPv4-Address" -msgstr "" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "" - -msgid "IPv6 only" -msgstr "" - -msgid "IPv6 prefix" -msgstr "" - -msgid "IPv6 prefix length" -msgstr "" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "" - -msgid "Identity" -msgstr "Nhận dạng" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "" - -msgid "If unchecked, no default route is configured" -msgstr "" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"Nếu bộ nhớ vật lý không đủ dữ liệu không dùng có thể được swap tạm thời đến " -"một thiết bị swap để tạo ra nhiều khoảng trống hơn trong RAM. Hãy nhận biết rằng swapping dữ liệu là " -"một quá trình rất chậm vì một thiết bị swap không thể được truy cập với " -"datarates cao hơn của RAM." - -msgid "Ignore /etc/hosts" -msgstr "Lờ đi /etc/hosts" - -msgid "Ignore interface" -msgstr "Lờ đi giao diện" - -msgid "Ignore resolve file" -msgstr "Lờ đi tập tin resolve" - -msgid "Image" -msgstr "" - -msgid "In" -msgstr "Trong" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "" - -msgid "Inbound:" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "Initscript" - -msgid "Initscripts" -msgstr "Initscripts" - -msgid "Install" -msgstr "Cài đặt " - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "" - -msgid "Install protocol extensions..." -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Interface" -msgstr "Giao diện " - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "" - -msgid "Interface Overview" -msgstr "" - -msgid "Interface is reconnecting..." -msgstr "" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "" - -msgid "Interfaces" -msgstr "Giao diện " - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "" - -msgid "Invalid" -msgstr "Giá trị nhập vào không hợp lí" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "" - -msgid "Invalid username and/or password! Please try again." -msgstr "Tên và mật mã không đúng. Xin thử lại " - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "" -"Dường như bạn cố gắng flash một hình ảnh không phù hợp với bộ nhớ flash, xin " -"vui lòng xác minh các tập tin hình ảnh!" - -msgid "JavaScript required!" -msgstr "" - -msgid "Join Network" -msgstr "" - -msgid "Join Network: Wireless Scan" -msgstr "" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "" - -msgid "Kernel Log" -msgstr "Kernel Log" - -msgid "Kernel Version" -msgstr "" - -msgid "Key" -msgstr "Phím " - -msgid "Key #%d" -msgstr "" - -msgid "Kill" -msgstr "Kill" - -msgid "L2TP" -msgstr "" - -msgid "L2TP Server" -msgstr "" - -msgid "LCP echo failure threshold" -msgstr "" - -msgid "LCP echo interval" -msgstr "" - -msgid "LLC" -msgstr "" - -msgid "Label" -msgstr "" - -msgid "Language" -msgstr "Ngôn ngữ" - -msgid "Language and Style" -msgstr "" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "" - -msgid "Leasefile" -msgstr "Leasefile" - -msgid "Leasetime remaining" -msgstr "Leasetime còn lại" - -msgid "Leave empty to autodetect" -msgstr "" - -msgid "Leave empty to use the current WAN address" -msgstr "" - -msgid "Legend:" -msgstr "" - -msgid "Limit" -msgstr "Giới hạn " - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "Link On" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "" - -msgid "Listening port for inbound DNS queries" -msgstr "" - -msgid "Load" -msgstr "Tải " - -msgid "Load Average" -msgstr "" - -msgid "Loading" -msgstr "" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "" - -msgid "Local IPv6 address" -msgstr "" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "" - -msgid "Local Time" -msgstr "Giờ địa phương" - -msgid "Local domain" -msgstr "" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "" - -msgid "Local server" -msgstr "" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "" - -msgid "Localise queries" -msgstr "Tra vấn địa phương" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "" - -msgid "Log queries" -msgstr "Bản ghi tra vấn" - -msgid "Logging" -msgstr "" - -msgid "Login" -msgstr "Đăng nhập " - -msgid "Logout" -msgstr "Thoát ra" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "" - -msgid "MAC-Address Filter" -msgstr "Lọc địa chỉ MAC" - -msgid "MAC-Filter" -msgstr "Lọc MAC" - -msgid "MAC-List" -msgstr "Danh sách MAC" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "" - -msgid "MTU" -msgstr "" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "" - -msgid "Mbit/s" -msgstr "" - -msgid "Memory" -msgstr "Bộ nhớ" - -msgid "Memory usage (%)" -msgstr "Memory usage (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "Metric" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "Chế độ" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "Thiết bị modem" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "" - -msgid "Monitor" -msgstr "Monitor" - -msgid "Mount Entry" -msgstr "" - -msgid "Mount Point" -msgstr "Lắp điểm" - -msgid "Mount Points" -msgstr "Lắp điểm" - -msgid "Mount Points - Mount Entry" -msgstr "" - -msgid "Mount Points - Swap Entry" -msgstr "" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "" -"Số điểm lắp xác định tại một điểm mà ở đó bộ nhớ sẽ được gắn vào hệ thống " -"tập tin" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "" - -msgid "Mount point" -msgstr "" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "Lắp tập tin hệ thống" - -msgid "Move down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Multicast address" -msgstr "" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "" - -msgid "Name" -msgstr "Tên" - -msgid "Name of the new interface" -msgstr "" - -msgid "Name of the new network" -msgstr "" - -msgid "Navigation" -msgstr "Sự điều hướng" - -msgid "Netmask" -msgstr "" - -msgid "Network" -msgstr "mạng lưới " - -msgid "Network Utilities" -msgstr "" - -msgid "Network boot image" -msgstr "" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "" - -msgid "Next »" -msgstr "" - -msgid "No DHCP Server configured for this interface" -msgstr "" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "Không có chuỗi trong bảng này" - -msgid "No files found" -msgstr "" - -msgid "No information available" -msgstr "" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "" - -msgid "No network configured on this device" -msgstr "" - -msgid "No network name specified" -msgstr "" - -msgid "No package lists available" -msgstr "" - -msgid "No password set!" -msgstr "" - -msgid "No rules in this chain" -msgstr "Không có quy luật trong chuỗi này" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "" - -msgid "Noise" -msgstr "" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "" - -msgid "Normal" -msgstr "" - -msgid "Not Found" -msgstr "" - -msgid "Not associated" -msgstr "" - -msgid "Not connected" -msgstr "" - -msgid "Note: Configuration files will be erased." -msgstr "" - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "" - -msgid "Nslookup" -msgstr "" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "OK " - -msgid "OPKG-Configuration" -msgstr "Cấu hình OPKG-" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"Trên trang này bạn có thể định cấu hình giao diện network. Bạn có thể bắt " -"cầu nhiều giao diện bằng cách đánh dấu &quot;bridge interfaces&quot; " -"field và nhập tên vào của nhiều giao diện network phân tách bởi những khoảng " -"trống. Bạn có thể cũng dùng VLAN notation INTERFACE.VLANNR (e." -"g.: eth0.1)." - -msgid "On-State Delay" -msgstr "" - -msgid "One of hostname or mac address must be specified!" -msgstr "" - -msgid "One or more fields contain invalid values!" -msgstr "" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "" - -msgid "Open list..." -msgstr "" - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "" - -msgid "Option removed" -msgstr "" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "Lựa chọn " - -msgid "Other:" -msgstr "" - -msgid "Out" -msgstr "Ra khỏi" - -msgid "Outbound:" -msgstr "" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "" - -msgid "Override MTU" -msgstr "" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "" - -msgid "Override the table used for internal routes" -msgstr "" - -msgid "Overview" -msgstr "Nhìn chung" - -msgid "Owner" -msgstr "Owner" - -msgid "PAP/CHAP password" -msgstr "" - -msgid "PAP/CHAP username" -msgstr "" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA Encapsulation" - -msgid "PPPoATM" -msgstr "" - -msgid "PPPoE" -msgstr "" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "" - -msgid "Package lists are older than 24 hours" -msgstr "" - -msgid "Package name" -msgstr "Tên gói" - -msgid "Packets" -msgstr "Gói tin" - -msgid "Part of zone %q" -msgstr "" - -msgid "Password" -msgstr "Mật mã" - -msgid "Password authentication" -msgstr "Xác thực mật mã" - -msgid "Password of Private Key" -msgstr "Mật mã của private key" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "Đường dẫn tới CA-Certificate" - -msgid "Path to Client-Certificate" -msgstr "" - -msgid "Path to Private Key" -msgstr "Đường dẫn tới private key" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "Tiến hành reboot" - -msgid "Perform reset" -msgstr "" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "" - -msgid "Physical Settings" -msgstr "Cài đặt căn bản" - -msgid "Ping" -msgstr "" - -msgid "Pkts." -msgstr "" - -msgid "Please enter your username and password." -msgstr "Nhập tên và mật mã" - -msgid "Policy" -msgstr "Chính sách" - -msgid "Port" -msgstr "Cửa " - -msgid "Port status:" -msgstr "" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "Ngăn chặn giao tiếp giữa client-và-client" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "Proceed" - -msgid "Processes" -msgstr "Processes" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "Prot." - -msgid "Protocol" -msgstr "Protocol" - -msgid "Protocol family" -msgstr "" - -msgid "Protocol of the new interface" -msgstr "" - -msgid "Protocol support is not installed" -msgstr "" - -msgid "Provide NTP server" -msgstr "" - -msgid "Provide new network" -msgstr "" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "Pseudo Ad-Hoc (ahdemo)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS Threshold" - -msgid "RX" -msgstr "RX" - -msgid "RX Rate" -msgstr "" - -msgid "Radius-Accounting-Port" -msgstr "" - -msgid "Radius-Accounting-Secret" -msgstr "" - -msgid "Radius-Accounting-Server" -msgstr "" - -msgid "Radius-Authentication-Port" -msgstr "" - -msgid "Radius-Authentication-Secret" -msgstr "" - -msgid "Radius-Authentication-Server" -msgstr "" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"Đọc /etc/ethers để định cấu hình DHCP-Server" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" - -msgid "Really reset all changes?" -msgstr "" - -msgid "Really switch protocol?" -msgstr "" - -msgid "Realtime Connections" -msgstr "" - -msgid "Realtime Graphs" -msgstr "" - -msgid "Realtime Load" -msgstr "" - -msgid "Realtime Traffic" -msgstr "" - -msgid "Realtime Wireless" -msgstr "" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "" - -msgid "Reboot" -msgstr "Reboot" - -msgid "Rebooting..." -msgstr "" - -msgid "Reboots the operating system of your device" -msgstr "Reboots hệ điều hành của công cụ" - -msgid "Receive" -msgstr "Receive" - -msgid "Receiver Antenna" -msgstr "Máy thu Antenna" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "" - -msgid "References" -msgstr "Tham chiếu" - -msgid "Relay" -msgstr "" - -msgid "Relay Bridge" -msgstr "" - -msgid "Relay between networks" -msgstr "" - -msgid "Relay bridge" -msgstr "" - -msgid "Remote IPv4 address" -msgstr "" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "Loại bỏ" - -msgid "Repeat scan" -msgstr "" - -msgid "Replace entry" -msgstr "thay đổi nội dung" - -msgid "Replace wireless configuration" -msgstr "" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "Reset" - -msgid "Reset Counters" -msgstr "Reset bộ đếm" - -msgid "Reset to defaults" -msgstr "" - -msgid "Resolv and Hosts Files" -msgstr "" - -msgid "Resolve file" -msgstr "" - -msgid "Restart" -msgstr "" - -msgid "Restart Firewall" -msgstr "Khởi động lại Firewall" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "" - -msgid "Restore backup" -msgstr "Phục hồi backup" - -msgid "Reveal/hide password" -msgstr "" - -msgid "Revert" -msgstr "Revert" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "" - -msgid "Root directory for files served via TFTP" -msgstr "" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "" - -msgid "Routes" -msgstr "Routes" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "" -"Routes chỉ định trên giao diện và cổng một host nhất định hay network được " -"tiếp cận." - -msgid "Run a filesystem check before mounting the device" -msgstr "" - -msgid "Run filesystem check" -msgstr "" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "Lưu" - -msgid "Save & Apply" -msgstr "Lưu & áp dụng " - -msgid "Scan" -msgstr "Scan" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "Scheduled Tasks" - -msgid "Section added" -msgstr "" - -msgid "Section removed" -msgstr "" - -msgid "See \"mount\" manpage for details" -msgstr "" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "" - -msgid "Separate Clients" -msgstr "Cô lập đối tượng" - -msgid "Server Settings" -msgstr "" - -msgid "Service Name" -msgstr "" - -msgid "Service Type" -msgstr "" - -msgid "Services" -msgstr "Dịch vụ " - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -msgid "Set up Time Synchronization" -msgstr "" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "" - -msgid "Shutdown this interface" -msgstr "" - -msgid "Signal" -msgstr "" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "" - -msgid "Size" -msgstr "Dung lượng " - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "" - -msgid "Skip to content" -msgstr "Nhảy tới nội dung" - -msgid "Skip to navigation" -msgstr "Chuyển đến mục định hướng" - -msgid "Slot time" -msgstr "" - -msgid "Software" -msgstr "Phần mềm" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "" - -msgid "Sorry, the object you requested was not found." -msgstr "" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" - -msgid "Source" -msgstr "Nguồn" - -msgid "Specifies the directory the device is attached to" -msgstr "" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "" - -msgid "Start" -msgstr "Bắt đầu " - -msgid "Start priority" -msgstr "Bắt đầu ưu tiên" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "" - -msgid "Static IPv4 Routes" -msgstr "Static IPv4 Routes" - -msgid "Static IPv6 Routes" -msgstr "Static IPv6 Routes" - -msgid "Static Leases" -msgstr "Thống kê leases" - -msgid "Static Routes" -msgstr "Static Routes" - -msgid "Static address" -msgstr "" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" - -msgid "Status" -msgstr "Tình trạng" - -msgid "Stop" -msgstr "" - -msgid "Strict order" -msgstr "Yêu cầu nghiêm ngặt" - -msgid "Submit" -msgstr "Trình " - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "" - -msgid "Switch" -msgstr "chuyển đổi" - -msgid "Switch %q" -msgstr "" - -msgid "Switch %q (%s)" -msgstr "" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "" - -msgid "Sync with browser" -msgstr "" - -msgid "Synchronizing..." -msgstr "" - -msgid "System" -msgstr "Hệ thống" - -msgid "System Log" -msgstr "System Log" - -msgid "System Properties" -msgstr "" - -msgid "System log buffer size" -msgstr "" - -msgid "TCP:" -msgstr "" - -msgid "TFTP Settings" -msgstr "" - -msgid "TFTP server root" -msgstr "" - -msgid "TX" -msgstr "TX" - -msgid "TX Rate" -msgstr "" - -msgid "Table" -msgstr "Bảng" - -msgid "Target" -msgstr "Đích" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "Terminate" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"Tập tin công cụ của bộ nhớ hoặc phân vùng (e.g. " -"/dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"Filesystem mà được dùng để format memory (e.g. ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" - -msgid "The following changes have been reverted" -msgstr "Những thay đối sau đây đã được để trở về tình trạng cũ. " - -msgid "The following rules are currently active on this system." -msgstr "" - -msgid "The given network name is not unique" -msgstr "" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "" - -msgid "The length of the IPv6 prefix in bits" -msgstr "" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" - -msgid "The selected protocol needs a device assigned" -msgstr "" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "" - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"Hệ thống bây giờ đang flashing.
    DO NOT POWER OFF THE DEVICE!
    Chờ " -"một vài phút cho tới khi kết nối lại. Có thể cần phải làm mới địa chỉ của " -"máy tính để tiếp cận thiết bị một lần nữa, phụ thuộc vào cài đặt của bạn. " - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"Tập tin đang tải hình ảnh không bao gồm một hổ trợ format. Bảo đảm rằng bạn " -"chọn một image format tổng quát cho platform." - -msgid "There are no active leases." -msgstr "" - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "" - -msgid "There are no pending changes!" -msgstr "" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "" - -msgid "This IPv4 address of the relay" -msgstr "" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"Đây là DHCP duy " -"nhất trong mạng địa phương. " - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "Đây là system crontab mà scheduled tasks có thể bị định nghĩa." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "" -"List này đưa ra một tầm nhìn tổng quát về xử lý hệ thống đang chạy và tình " -"trạng của chúng." - -msgid "This page gives an overview over currently active network connections." -msgstr "" -"Trang này cung cấp một tổng quan về đang hoạt động kết nối mạng hiện tại." - -msgid "This section contains no values yet" -msgstr "Phần này chưa có giá trị nào" - -msgid "Time Synchronization" -msgstr "" - -msgid "Time Synchronization is not configured yet." -msgstr "" - -msgid "Timezone" -msgstr "Múi giờ " - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "" - -msgid "Traceroute" -msgstr "" - -msgid "Traffic" -msgstr "" - -msgid "Transfer" -msgstr "Chuyển giao" - -msgid "Transmission Rate" -msgstr "Truyền tải rate" - -msgid "Transmit" -msgstr "Transmit" - -msgid "Transmit Power" -msgstr "Truyền tải năng lượng" - -msgid "Transmitter Antenna" -msgstr "Máy phát Antenna" - -msgid "Trigger" -msgstr "" - -msgid "Trigger Mode" -msgstr "" - -msgid "Tunnel ID" -msgstr "" - -msgid "Tunnel Interface" -msgstr "" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "" - -msgid "Type" -msgstr "Loại " - -msgid "UDP:" -msgstr "" - -msgid "UMTS only" -msgstr "" - -msgid "UMTS/GPRS/EV-DO" -msgstr "" - -msgid "USB Device" -msgstr "" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Unknown Error, password not changed!" -msgstr "" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "Thay đổi không lưu" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "" - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" - -msgid "Upload archive..." -msgstr "" - -msgid "Uploaded File" -msgstr "Tập tin đã tải lên" - -msgid "Uptime" -msgstr "Uptime" - -msgid "Use /etc/ethers" -msgstr "Dùng /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "" - -msgid "Use DNS servers advertised by peer" -msgstr "" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "" - -msgid "Use MTU on tunnel interface" -msgstr "" - -msgid "Use TTL on tunnel interface" -msgstr "" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "" - -msgid "Use default gateway" -msgstr "" - -msgid "Use gateway metric" -msgstr "" - -msgid "Use routing table" -msgstr "" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" - -msgid "Used" -msgstr "Đã sử dụng" - -msgid "Used Key Slot" -msgstr "" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "Tên người dùng " - -msgid "VC-Mux" -msgstr "" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "" - -msgid "VLANs on %q (%s)" -msgstr "" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "" - -msgid "Verify" -msgstr "" - -msgid "Version" -msgstr "Phiên bản" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "" - -msgid "WEP Shared Key" -msgstr "" - -msgid "WEP passphrase" -msgstr "" - -msgid "WMM Mode" -msgstr "WMM Mode" - -msgid "WPA passphrase" -msgstr "" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" - -msgid "Waiting for changes to be applied..." -msgstr "" - -msgid "Waiting for command to complete..." -msgstr "" - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "" - -msgid "Wireless Adapter" -msgstr "Bộ tương hợp không dây" - -msgid "Wireless Network" -msgstr "" - -msgid "Wireless Overview" -msgstr "" - -msgid "Wireless Security" -msgstr "" - -msgid "Wireless is disabled" -msgstr "" - -msgid "Wireless is not associated" -msgstr "" - -msgid "Wireless is restarting..." -msgstr "" - -msgid "Wireless network is disabled" -msgstr "" - -msgid "Wireless network is enabled" -msgstr "" - -msgid "Write received DNS requests to syslog" -msgstr "" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"Bạn có thể bật hoặc tắt cài đặt init script tại đây. Thay đổi này sẽ được áp " -"dụng sau khi một thiết bị khởi động lại.
    Cảnh báo: Nếu bạn vô " -"hiệu hoá init script thiết yếu như &quot;network&quot;, công cụ của " -"bạn chó thể trở nên không truy cập được" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "" - -msgid "auto" -msgstr "tự động" - -msgid "baseT" -msgstr "" - -msgid "bridged" -msgstr "" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "" - -msgid "creates a bridge over specified interface(s)" -msgstr "tạo một cầu nối trên một giao diện được chỉ định" - -msgid "dB" -msgstr "" - -msgid "dBm" -msgstr "" - -msgid "disable" -msgstr "Vô hiệu hóa" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"Tập tin được cho DHCP-leases sẽ được lưu trữ" - -msgid "forward" -msgstr "" - -msgid "full-duplex" -msgstr "" - -msgid "half-duplex" -msgstr "" - -msgid "hidden" -msgstr "" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "Nếu mục tiêu là một network" - -msgid "input" -msgstr "" - -msgid "kB" -msgstr "" - -msgid "kB/s" -msgstr "" - -msgid "kbit/s" -msgstr "" - -msgid "local DNS file" -msgstr "Tập tin DNS địa phương" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "" - -msgid "no link" -msgstr "" - -msgid "none" -msgstr "không " - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "" - -msgid "on" -msgstr "" - -msgid "open" -msgstr "" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "" - -msgid "unlimited" -msgstr "" - -msgid "unspecified" -msgstr "" - -msgid "unspecified -or- create:" -msgstr "" - -msgid "untagged" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "« Back" -msgstr "" - -#~ msgid "Backup / Restore" -#~ msgstr "Backup/ Restore" - -#~ msgid "Apply" -#~ msgstr "Áp dụng" - -#~ msgid "Applying changes" -#~ msgstr "Tiến hành thay đổi" - -#~ msgid "Action" -#~ msgstr "Action" - -#~ msgid "Maximum hold time" -#~ msgstr "Mức cao nhất" - -#~ msgid "Minimum hold time" -#~ msgstr "Mức thấp nhất" - -#~ msgid "Leasetime" -#~ msgstr "Leasetime" - -#, fuzzy -#~ msgid "automatic" -#~ msgstr "thống kê" - -#~ msgid "AR Support" -#~ msgstr "Hỗ trợ AR" - -#~ msgid "Background Scan" -#~ msgstr "Background Scan" - -#~ msgid "Compression" -#~ msgstr "Sức nén" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "Vô hiệu hóa bộ chỉnh giờ HW-Beacon" - -#~ msgid "Do not send probe responses" -#~ msgstr "Không gửi nhắc hồi đáp" - -#~ msgid "Fast Frames" -#~ msgstr "Khung nhanh" - -#~ msgid "Maximum Rate" -#~ msgstr "Mức cao nhất" - -#~ msgid "Minimum Rate" -#~ msgstr "Mức thấp nhất" - -#~ msgid "Multicast Rate" -#~ msgstr "Multicast Rate" - -#~ msgid "Outdoor Channels" -#~ msgstr "Kênh ngoại mạng" - -#~ msgid "Regulatory Domain" -#~ msgstr "Miền điều chỉnh" - -#~ msgid "Separate WDS" -#~ msgstr "Phân tách WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "Turbo Mode" - -#~ msgid "XR Support" -#~ msgstr "Hỗ trợ XR" diff --git a/luci-base/po/zh-cn/base.po b/luci-base/po/zh-cn/base.po deleted file mode 100644 index 888ceca93..000000000 --- a/luci-base/po/zh-cn/base.po +++ /dev/null @@ -1,4035 +0,0 @@ -msgid "" -msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" -"Last-Translator: Hsing-Wang Liao \n" - -msgid "%.1f dB" -msgstr "%.1f dB" - -msgid "%s is untagged in multiple VLANs!" -msgstr "%s 在多个 VLAN 中均未标记!" - -msgid "(%d minute window, %d second interval)" -msgstr "(最近 %d 分钟信息,每 %d 秒刷新)" - -msgid "(%s available)" -msgstr "(%s 可用)" - -msgid "(empty)" -msgstr "(空)" - -msgid "(no interfaces attached)" -msgstr "(没有接口连接)" - -msgid "-- Additional Field --" -msgstr "-- 更多选项 --" - -msgid "-- Please choose --" -msgstr "-- 请选择 --" - -msgid "-- custom --" -msgstr "-- 自定义 --" - -msgid "-- match by device --" -msgstr "-- 根据设备匹配 --" - -msgid "-- match by label --" -msgstr "-- 根据标签匹配 --" - -msgid "-- match by uuid --" -msgstr "-- 根据 UUID 匹配 --" - -msgid "-- please select --" -msgstr "-- 请选择 --" - -msgid "1 Minute Load:" -msgstr "1 分钟负载:" - -msgid "15 Minute Load:" -msgstr "15 分钟负载:" - -msgid "4-character hexadecimal ID" -msgstr "4 字符的十六进制 ID" - -msgid "464XLAT (CLAT)" -msgstr "464XLAT (CLAT)" - -msgid "5 Minute Load:" -msgstr "5 分钟负载:" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "十六进制表示的 6 字节标识符,无冒号分隔" - -msgid "802.11r Fast Transition" -msgstr "802.11r 快速切换" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "802.11w 关联 SA 查询最大超时" - -msgid "802.11w Association SA Query retry timeout" -msgstr "802.11w 关联 SA 查询重试超时" - -msgid "802.11w Management Frame Protection" -msgstr "802.11w 管理帧保护" - -msgid "802.11w maximum timeout" -msgstr "802.11w 最大超时" - -msgid "802.11w retry timeout" -msgstr "802.11w 重试超时" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS 查询端口" - -msgid "DNS server port" -msgstr "DNS 服务器端口" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "" -"按照“解析文件”里的顺序查询 DNS 服务" -"器" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4 地址" - -msgid "IPv4-Gateway" -msgstr "IPv4 网关" - -msgid "IPv4-Netmask" -msgstr "IPv4 子网掩码" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6 地址或网段(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6 网关" - -msgid "IPv6-Suffix (hex)" -msgstr "" -"IPv6 后缀(十六进制)" - -msgid "LED Configuration" -msgstr "LED 配置" - -msgid "LED Name" -msgstr "LED 名称" - -msgid "MAC-Address" -msgstr "MAC 地址" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"最大 DHCP 租约数量" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"最大 EDNS0 数据包大小" - -msgid "Max. concurrent queries" -msgstr "最大并发查询数" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" -"
    注意:如果 crontab 文件在编辑前为空,则需要手动重新启动 cron 服务。" - -msgid "A43C + J43 + A43" -msgstr "A43C + J43 + A43" - -msgid "A43C + J43 + A43 + V43" -msgstr "A43C + J43 + A43 + V43" - -msgid "ADSL" -msgstr "ADSL" - -msgid "ANSI T1.413" -msgstr "ANSI T1.413" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP 重试阈值" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "ATM(异步传输模式)" - -msgid "ATM Bridges" -msgstr "ATM 桥接" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM 虚拟通道标识(VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM 虚拟路径标识(VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM 桥是以 AAL5 协议封装以太网的虚拟 Linux 网桥,用于协同 DHCP 或 PPP 来拨号" -"连接到网络运营商。" - -msgid "ATM device number" -msgstr "ATM 设备号码" - -msgid "ATU-C System Vendor ID" -msgstr "ATU-C 系统供应商 ID" - -msgid "Access Concentrator" -msgstr "接入集中器" - -msgid "Access Point" -msgstr "接入点 AP" - -msgid "Actions" -msgstr "动作" - -msgid "Active IPv4-Routes" -msgstr "活动的 IPv4 路由" - -msgid "Active IPv6-Routes" -msgstr "活动的 IPv6 路由" - -msgid "Active Connections" -msgstr "活动连接" - -msgid "Active DHCP Leases" -msgstr "已分配的 DHCP 租约" - -msgid "Active DHCPv6 Leases" -msgstr "已分配的 DHCPv6 租约" - -msgid "Ad-Hoc" -msgstr "点对点 Ad-Hoc" - -msgid "Add" -msgstr "添加" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "添加本地域名后缀到 HOSTS 文件中的域名" - -msgid "Add new interface..." -msgstr "添加新接口..." - -msgid "Additional Hosts files" -msgstr "额外的 HOSTS 文件" - -msgid "Additional servers file" -msgstr "额外的 SERVERS 文件" - -msgid "Address" -msgstr "地址" - -msgid "Address to access local relay bridge" -msgstr "接入本地中继桥的地址" - -msgid "Administration" -msgstr "管理权" - -msgid "Advanced Settings" -msgstr "高级设置" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "总发射功率(ACTATP)" - -msgid "Alert" -msgstr "警戒" - -msgid "Alias Interface" -msgstr "接口别名" - -msgid "Alias of \"%s\"" -msgstr "\"%s\" 的别名" - -msgid "All Servers" -msgstr "所有服务器" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "从最低可用地址开始顺序分配 IP 地址" - -msgid "Allocate IP sequentially" -msgstr "顺序分配 IP" - -msgid "Allow SSH password authentication" -msgstr "允许 SSH 密码验证" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "允许 AP 模式时在 low ACK 的情况下断开无线终端" - -msgid "Allow all except listed" -msgstr "仅允许列表外" - -msgid "Allow legacy 802.11b rates" -msgstr "允许传统的 802.11b 速率" - -msgid "Allow listed only" -msgstr "仅允许列表内" - -msgid "Allow localhost" -msgstr "允许本机" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "允许远程主机连接到本地 SSH 转发端口" - -msgid "Allow root logins with password" -msgstr "允许 root 用户凭密码登录" - -msgid "Allow the root user to login with password" -msgstr "允许 root 用户凭密码登录" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "允许 127.0.0.0/8 回环范围内的上行响应,例如:RBL 服务" - -msgid "Allowed IPs" -msgstr "允许的 IP" - -msgid "Always announce default router" -msgstr "总是通告默认路由" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" -"即使辅助信道重叠,也始终使用 40MHz 信道。使用此选项不符合IEEE 802.11n-2009!" - -msgid "Annex" -msgstr "Annex" - -msgid "Annex A + L + M (all)" -msgstr "Annex A + L + M(全部)" - -msgid "Annex A G.992.1" -msgstr "Annex A G.992.1" - -msgid "Annex A G.992.2" -msgstr "Annex A G.992.2" - -msgid "Annex A G.992.3" -msgstr "Annex A G.992.3" - -msgid "Annex A G.992.5" -msgstr "Annex A G.992.5" - -msgid "Annex B (all)" -msgstr "Annex B(全部)" - -msgid "Annex B G.992.1" -msgstr "Annex B G.992.1" - -msgid "Annex B G.992.3" -msgstr "Annex B G.992.3" - -msgid "Annex B G.992.5" -msgstr "Annex B G.992.5" - -msgid "Annex J (all)" -msgstr "Annex J(全部)" - -msgid "Annex L G.992.3 POTS 1" -msgstr "Annex L G.992.3 POTS 1" - -msgid "Annex M (all)" -msgstr "Annex M(全部)" - -msgid "Annex M G.992.3" -msgstr "Annex M G.992.3" - -msgid "Annex M G.992.5" -msgstr "Annex M G.992.5" - -msgid "Announce as default router even if no public prefix is available." -msgstr "即使没有可用的公网前缀,也仍通告自己为默认路由。" - -msgid "Announced DNS domains" -msgstr "通告的 DNS 域名" - -msgid "Announced DNS servers" -msgstr "通告的 DNS 服务器" - -msgid "Anonymous Identity" -msgstr "匿名身份" - -msgid "Anonymous Mount" -msgstr "自动挂载未配置的磁盘分区" - -msgid "Anonymous Swap" -msgstr "自动挂载未配置的 Swap 分区" - -msgid "Antenna 1" -msgstr "天线 1" - -msgid "Antenna 2" -msgstr "天线 2" - -msgid "Antenna Configuration" -msgstr "天线配置" - -msgid "Any zone" -msgstr "任意区域" - -msgid "Apply request failed with status %h" -msgstr "应用请求失败,状态 %h" - -msgid "Apply unchecked" -msgstr "强制应用" - -msgid "Architecture" -msgstr "架构" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "将每个公共 IPv6 前缀的给定长度部分分配给此接口" - -msgid "Assign interfaces..." -msgstr "分配接口..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "将此十六进制子 ID 前缀分配给此接口" - -msgid "Associated Stations" -msgstr "已连接站点" - -msgid "Associations" -msgstr "关联数" - -msgid "Auth Group" -msgstr "认证组" - -msgid "Authentication" -msgstr "认证" - -msgid "Authentication Type" -msgstr "认证类型" - -msgid "Authoritative" -msgstr "唯一授权" - -msgid "Authorization Required" -msgstr "需要授权" - -msgid "Auto Refresh" -msgstr "自动刷新" - -msgid "Automatic" -msgstr "自动" - -msgid "Automatic Homenet (HNCP)" -msgstr "自动家庭网络(HNCP)" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "在挂载前自动检查文件系统错误" - -msgid "Automatically mount filesystems on hotplug" -msgstr "通过 hotplug 自动挂载磁盘" - -msgid "Automatically mount swap on hotplug" -msgstr "通过 hotplug 自动挂载 swap 分区" - -msgid "Automount Filesystem" -msgstr "自动挂载磁盘" - -msgid "Automount Swap" -msgstr "自动挂载 Swap" - -msgid "Available" -msgstr "可用" - -msgid "Available packages" -msgstr "可用软件包" - -msgid "Average:" -msgstr "平均:" - -msgid "B43 + B43C" -msgstr "B43 + B43C" - -msgid "B43 + B43C + V43" -msgstr "B43 + B43C + V43" - -msgid "BR / DMR / AFTR" -msgstr "BR / DMR / AFTR" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "返回" - -msgid "Back to Overview" -msgstr "返回至概况" - -msgid "Back to configuration" -msgstr "返回至配置" - -msgid "Back to overview" -msgstr "返回至概况" - -msgid "Back to scan results" -msgstr "返回至扫描结果" - -msgid "Backup" -msgstr "备份" - -msgid "Backup / Flash Firmware" -msgstr "备份/升级" - -msgid "Backup file list" -msgstr "文件备份列表" - -msgid "Bad address specified!" -msgstr "指定了错误的地址!" - -msgid "Band" -msgstr "频宽" - -msgid "Beacon Interval" -msgstr "Beacon 间隔" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"下面是待备份的文件清单。包含了更改的配置文件、必要的基础文件和用户自定义的需" -"备份文件。" - -msgid "Bind interface" -msgstr "绑定接口" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "仅绑定到特定接口,而不是全部地址。" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "将隧道绑定到此接口(可选)。" - -msgid "Bitrate" -msgstr "传输速率" - -msgid "Bogus NX Domain Override" -msgstr "忽略虚假空域名解析" - -msgid "Bridge" -msgstr "桥接" - -msgid "Bridge interfaces" -msgstr "桥接接口" - -msgid "Bridge unit number" -msgstr "桥接号" - -msgid "Bring up on boot" -msgstr "开机自动运行" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s 无线控制器" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 无线控制器" - -msgid "Buffered" -msgstr "已缓冲" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "由固件指定的软件源。此处的设置在任何系统升级中都不会被保留。" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "CA 证书,如果留空,则证书将在第一次连接后被保存。" - -msgid "CPU usage (%)" -msgstr "CPU 使用率(%)" - -msgid "Call failed" -msgstr "调用失败" - -msgid "Cancel" -msgstr "取消" - -msgid "Category" -msgstr "分类" - -msgid "Chain" -msgstr "链" - -msgid "Changes" -msgstr "更改数" - -msgid "Changes applied." -msgstr "更改已应用。" - -msgid "Changes have been reverted." -msgstr "更改已恢复。" - -msgid "Changes the administrator password for accessing the device" -msgstr "更改访问设备的管理员密码" - -msgid "Channel" -msgstr "信道" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "信道 %d 在 %s 监管区域内不可用并已自动调整到 %d。" - -msgid "Check" -msgstr "检查" - -msgid "Check filesystems before mount" -msgstr "在挂载前检查文件系统" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "选中此选项以从无线中删除现有网络。" - -msgid "Checksum" -msgstr "校验值" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"为此接口分配所属的防火墙区域,选择“不指定”可将该接口移出已关联的区域,或者填" -"写“创建”栏来创建一个新的区域,并将当前接口与之建立关联。" - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "选择指派到此无线接口的网络,或者填写“创建”栏来新建网络。" - -msgid "Cipher" -msgstr "算法" - -msgid "Cisco UDP encapsulation" -msgstr "Cisco UDP 封装" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "点击“生成备份”下载当前配置文件的 tar 存档。" - -msgid "Client" -msgstr "客户端 Client" - -msgid "Client ID to send when requesting DHCP" -msgstr "请求 DHCP 时发送的客户端 ID" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "在给定时间(秒)后关闭非活动链接,0 为保持连接" - -msgid "Close list..." -msgstr "关闭列表..." - -msgid "Collecting data..." -msgstr "正在收集数据..." - -msgid "Command" -msgstr "命令" - -msgid "Common Configuration" -msgstr "一般配置" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" -"通过禁用用于安装密钥的 EAPOL-Key 帧的重新传输,来增加客户端密钥重安装攻击的复" -"杂度。此解决方法可能会导致互操作性问题,并降低密钥协商的可靠性,特别是在流量" -"负载较重的环境中。" - -msgid "Configuration" -msgstr "配置" - -msgid "Configuration failed" -msgstr "配置失败" - -msgid "Configuration files will be kept." -msgstr "配置文件将被保留。" - -msgid "Configuration has been applied." -msgstr "配置已应用。" - -msgid "Configuration has been rolled back!" -msgstr "配置已回滚!" - -msgid "Confirmation" -msgstr "确认密码" - -msgid "Connect" -msgstr "连接" - -msgid "Connected" -msgstr "已连接" - -msgid "Connection Limit" -msgstr "连接数限制" - -msgid "Connection attempt failed" -msgstr "尝试连接失败" - -msgid "Connections" -msgstr "连接" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" -"应用配置更改后,无法重新获得对设备的访问权限。如果您更改了网络相关设置如 IP " -"地址或无线安全证书,则可能需要重新连接。" - -msgid "Country" -msgstr "国家" - -msgid "Country Code" -msgstr "国家代码" - -msgid "Cover the following interface" -msgstr "包括以下接口" - -msgid "Cover the following interfaces" -msgstr "包括以下接口" - -msgid "Create / Assign firewall-zone" -msgstr "创建/分配防火墙区域" - -msgid "Create Interface" -msgstr "创建新接口" - -msgid "Create a bridge over multiple interfaces" -msgstr "在多个接口上创建桥接" - -msgid "Critical" -msgstr "致命错误" - -msgid "Cron Log Level" -msgstr "Cron 日志级别" - -msgid "Custom Interface" -msgstr "自定义接口" - -msgid "Custom delegated IPv6-prefix" -msgstr "自定义分配的 IPv6 前缀" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "自定义软件源地址,例如:私有的软件源。此文件在系统升级时将被保留。" - -msgid "Custom feeds" -msgstr "自定义软件源" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" -"自定义文件(证书、脚本)会保留在系统上。若无需保留,请先执行恢复出厂设置。" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "自定义此设备的 LED 行为。" - -msgid "DHCP Server" -msgstr "DHCP 服务器" - -msgid "DHCP and DNS" -msgstr "DHCP/DNS" - -msgid "DHCP client" -msgstr "DHCP 客户端" - -msgid "DHCP-Options" -msgstr "DHCP 选项" - -msgid "DHCPv6 client" -msgstr "DHCPv6 客户端" - -msgid "DHCPv6-Mode" -msgstr "DHCPv6 模式" - -msgid "DHCPv6-Service" -msgstr "DHCPv6 服务" - -msgid "DNS" -msgstr "DNS" - -msgid "DNS forwardings" -msgstr "DNS 转发" - -msgid "DNS-Label / FQDN" -msgstr "DNS-Label / FQDN" - -msgid "DNSSEC" -msgstr "DNSSEC" - -msgid "DNSSEC check unsigned" -msgstr "DNSSEC 检查未签名" - -msgid "DPD Idle Timeout" -msgstr "DPD 空闲超时" - -msgid "DS-Lite AFTR address" -msgstr "DS-Lite AFTR 地址" - -msgid "DSL" -msgstr "DSL" - -msgid "DSL Status" -msgstr "DSL 状态" - -msgid "DSL line mode" -msgstr "DSL 线路模式" - -msgid "DTIM Interval" -msgstr "DTIM 间隔" - -msgid "DUID" -msgstr "DUID" - -msgid "Data Rate" -msgstr "数据速率" - -msgid "Debug" -msgstr "调试" - -msgid "Default %d" -msgstr "默认 %d" - -msgid "Default gateway" -msgstr "默认网关" - -msgid "Default is stateless + stateful" -msgstr "默认是无状态的 + 有状态的" - -msgid "Default state" -msgstr "默认状态" - -msgid "Define a name for this network." -msgstr "为网络定义名称。" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"设置 DHCP 的附加选项,例如设定 \"6,192.168.2.1,192.168.2.2\" 表" -"示通告不同的 DNS 服务器给客户端。" - -msgid "Delete" -msgstr "删除" - -msgid "Delete this network" -msgstr "删除此网络" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "发送流量指示消息间隔" - -msgid "Description" -msgstr "描述" - -msgid "Design" -msgstr "主题" - -msgid "Destination" -msgstr "目标地址" - -msgid "Device" -msgstr "设备" - -msgid "Device Configuration" -msgstr "设备配置" - -msgid "Device is rebooting..." -msgstr "设备正在重启..." - -msgid "Device unreachable!" -msgstr "无法连接到设备" - -msgid "Device unreachable! Still waiting for device..." -msgstr "无法连接到设备!仍旧等待设备..." - -msgid "Diagnostics" -msgstr "网络诊断" - -msgid "Dial number" -msgstr "拨号号码" - -msgid "Directory" -msgstr "目录" - -msgid "Disable" -msgstr "禁用" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -"不在此接口提供 DHCP 服务。" - -msgid "Disable DNS setup" -msgstr "停用 DNS 设定" - -msgid "Disable Encryption" -msgstr "禁用加密" - -msgid "Disable this network" -msgstr "禁用此网络" - -msgid "Disabled" -msgstr "已禁用" - -msgid "Disabled (default)" -msgstr "已禁用(默认)" - -msgid "Disassociate On Low Acknowledgement" -msgstr "在 Low Acknowledgement 时断开连接" - -msgid "Discard upstream RFC1918 responses" -msgstr "丢弃 RFC1918 上行响应数据" - -msgid "Disconnection attempt failed" -msgstr "尝试断开连接失败" - -msgid "Dismiss" -msgstr "解除" - -msgid "Displaying only packages containing" -msgstr "只显示有内容的软件包" - -msgid "Distance Optimization" -msgstr "距离优化" - -msgid "Distance to farthest network member in meters." -msgstr "最远网络用户的距离(米)。" - -msgid "Distribution feeds" -msgstr "发行版软件源" - -msgid "Diversity" -msgstr "差异" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -"Dnsmasq 为 NAT 防火墙提供" -"了一个集成的 DHCP " -"服务器和 DNS 转发器" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "不缓存无用的回应, 比如:不存在的域名" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "不转发公共域名服务器无法回应的请求" - -msgid "Do not forward reverse lookups for local networks" -msgstr "不转发本地网络的反向查询" - -msgid "Domain required" -msgstr "忽略空域名解析" - -msgid "Domain whitelist" -msgstr "域名白名单" - -msgid "Don't Fragment" -msgstr "禁止分片" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"不转发没有 DNS 名称的解析请求" - -msgid "Down" -msgstr "向下" - -msgid "Download and install package" -msgstr "下载并安装软件包" - -msgid "Download backup" -msgstr "下载备份" - -msgid "Downstream SNR offset" -msgstr "下游 SNR 偏移" - -msgid "Dropbear Instance" -msgstr "Dropbear 实例" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear 提供 SSH 访问和 SCP 服务" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "Dual-Stack Lite (RFC6333)" - -msgid "Dynamic DHCP" -msgstr "动态 DHCP" - -msgid "Dynamic tunnel" -msgstr "动态隧道" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "" -"为所有客户端提供 DHCP 服务。如果禁用,将只对具有静态租约的客户提供服务。" - -msgid "EA-bits length" -msgstr "EA-bits 长度" - -msgid "EAP-Method" -msgstr "EAP 类型" - -msgid "Edit" -msgstr "编辑" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "编辑上方的原始配置数据来修复错误,点击“保存”按钮以重新载入此页面。" - -msgid "Edit this interface" -msgstr "编辑此接口" - -msgid "Edit this network" -msgstr "编辑此网络" - -msgid "Emergency" -msgstr "紧急" - -msgid "Enable" -msgstr "启用" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" -"启用 IGMP 窥探" - -msgid "Enable STP" -msgstr "开启 STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "启用 HE.net 动态终端更新" - -msgid "Enable IPv6 negotiation" -msgstr "启用 IPv6 协商" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "在 PPP 链路上启用 IPv6 协商" - -msgid "Enable Jumbo Frame passthrough" -msgstr "启用巨型帧透传" - -msgid "Enable NTP client" -msgstr "启用 NTP 客户端" - -msgid "Enable Single DES" -msgstr "启用单个 DES" - -msgid "Enable TFTP server" -msgstr "启用 TFTP 服务器" - -msgid "Enable VLAN functionality" -msgstr "启用 VLAN" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "启用 WPS 一键加密按钮,需要 WPA(2)-PSK" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "启用密钥重新安装(KRACK)对策" - -msgid "Enable learning and aging" -msgstr "启用智能交换学习" - -msgid "Enable mirroring of incoming packets" -msgstr "启用流入数据包镜像" - -msgid "Enable mirroring of outgoing packets" -msgstr "启用流出数据包镜像" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "启用后报文的 DF(禁止分片)标志。" - -msgid "Enable this mount" -msgstr "启用此挂载点" - -msgid "Enable this network" -msgstr "启用此网络" - -msgid "Enable this swap" -msgstr "启用此 swap 分区" - -msgid "Enable/Disable" -msgstr "启用/禁用" - -msgid "Enabled" -msgstr "已启用" - -msgid "Enables IGMP snooping on this bridge" -msgstr "在此桥接上启用 IGMP 窥探" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "启用属于同一移动域的接入点之间的快速漫游" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "在此桥接上启用生成树协议" - -msgid "Encapsulation mode" -msgstr "封装模式" - -msgid "Encryption" -msgstr "加密" - -msgid "Endpoint Host" -msgstr "端点主机" - -msgid "Endpoint Port" -msgstr "端点端口" - -msgid "Enter custom value" -msgstr "输入自定义值" - -msgid "Enter custom values" -msgstr "输入自定义值" - -msgid "Erasing..." -msgstr "擦除中..." - -msgid "Error" -msgstr "错误" - -msgid "Errored seconds (ES)" -msgstr "错误秒数(ES)" - -msgid "Ethernet Adapter" -msgstr "以太网适配器" - -msgid "Ethernet Switch" -msgstr "以太网交换机" - -msgid "Exclude interfaces" -msgstr "排除接口" - -msgid "Expand hosts" -msgstr "扩展 HOSTS 文件中的主机后缀" - -msgid "Expires" -msgstr "到期时间" - -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "租用地址的到期时间,最短 2 分钟(2m)。" - -msgid "External" -msgstr "外部" - -msgid "External R0 Key Holder List" -msgstr "外部 R0KH 列表" - -msgid "External R1 Key Holder List" -msgstr "外部 R1KH 列表" - -msgid "External system log server" -msgstr "外部系统日志服务器地址" - -msgid "External system log server port" -msgstr "外部系统日志服务器端口" - -msgid "External system log server protocol" -msgstr "外部系统日志服务器协议" - -msgid "Extra SSH command options" -msgstr "额外的 SSH 命令选项" - -msgid "FT over DS" -msgstr "FT over DS" - -msgid "FT over the Air" -msgstr "FT over the Air" - -msgid "FT protocol" -msgstr "FT 协议" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "在 %d 秒内确认应用失败,等待回滚..." - -msgid "File" -msgstr "文件" - -msgid "Filename of the boot image advertised to clients" -msgstr "向客户端通告的启动镜像文件名" - -msgid "Filesystem" -msgstr "文件系统" - -msgid "Filter" -msgstr "过滤器" - -msgid "Filter private" -msgstr "过滤本地包" - -msgid "Filter useless" -msgstr "过滤无用包" - -msgid "Finalizing failed" -msgstr "最终确认失败" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "查找当前系统上的所有分区和 swap 设备,并根据查找结果生成并替换现有配置" - -msgid "Find and join network" -msgstr "搜索并加入网络" - -msgid "Find package" -msgstr "查找软件包" - -msgid "Finish" -msgstr "完成" - -msgid "Firewall" -msgstr "防火墙" - -msgid "Firewall Mark" -msgstr "防火墙标识" - -msgid "Firewall Settings" -msgstr "防火墙设置" - -msgid "Firewall Status" -msgstr "防火墙状态" - -msgid "Firmware File" -msgstr "固件文件" - -msgid "Firmware Version" -msgstr "固件版本" - -msgid "Fixed source port for outbound DNS queries" -msgstr "指定的 DNS 查询源端口" - -msgid "Flash Firmware" -msgstr "刷新固件" - -msgid "Flash image..." -msgstr "刷写固件..." - -msgid "Flash new firmware image" -msgstr "刷写新的固件" - -msgid "Flash operations" -msgstr "刷新操作" - -msgid "Flashing..." -msgstr "刷写中..." - -msgid "Force" -msgstr "强制" - -msgid "Force 40MHz mode" -msgstr "强制 40MHz 模式" - -msgid "Force CCMP (AES)" -msgstr "强制 CCMP(AES)" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "即使检测到另一台服务器,也要强制使用此网络上的 DHCP。" - -msgid "Force TKIP" -msgstr "强制 TKIP" - -msgid "Force TKIP and CCMP (AES)" -msgstr "强制 TKIP 和 CCMP(AES)" - -msgid "Force link" -msgstr "强制链路" - -msgid "Force use of NAT-T" -msgstr "强制使用 NAT-T" - -msgid "Form token mismatch" -msgstr "表单令牌不匹配" - -msgid "Forward DHCP traffic" -msgstr "转发 DHCP 数据包" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "前向纠错秒数(FECS)" - -msgid "Forward broadcast traffic" -msgstr "转发广播数据包" - -msgid "Forward mesh peer traffic" -msgstr "转发 mesh 节点数据包" - -msgid "Forwarding mode" -msgstr "转发模式" - -msgid "Fragmentation Threshold" -msgstr "分片阈值" - -msgid "Frame Bursting" -msgstr "帧突发" - -msgid "Free" -msgstr "空闲数" - -msgid "Free space" -msgstr "空闲空间" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" -"有关 WireGuard 接口和 Peer 的更多信息:wireguard.com。" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "仅 GPRS" - -msgid "Gateway" -msgstr "网关" - -msgid "Gateway address is invalid" -msgstr "网关地址无效" - -msgid "Gateway ports" -msgstr "网关端口" - -msgid "General Settings" -msgstr "基本设置" - -msgid "General Setup" -msgstr "基本设置" - -msgid "General options for opkg" -msgstr "OPKG 基础配置" - -msgid "Generate Config" -msgstr "生成配置" - -msgid "Generate PMK locally" -msgstr "本地生成 PMK" - -msgid "Generate archive" -msgstr "生成备份" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "通用 802.11%s 无线控制器" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "由于密码验证不匹配,密码没有更改!" - -msgid "Global Settings" -msgstr "全局设置" - -msgid "Global network options" -msgstr "全局网络选项" - -msgid "Go to password configuration..." -msgstr "跳转到密码配置页..." - -msgid "Go to relevant configuration page" -msgstr "跳转到相关的配置页面" - -msgid "Group Password" -msgstr "组密码" - -msgid "Guest" -msgstr "访客" - -msgid "HE.net password" -msgstr "HE.net 密码" - -msgid "HE.net username" -msgstr "HE.net 用户名" - -msgid "HT mode (802.11n)" -msgstr "HT 模式(802.11n)" - -msgid "Hang Up" -msgstr "挂起" - -msgid "Header Error Code Errors (HEC)" -msgstr "请求头错误代码错误(HEC)" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "此处配置设备的基础信息,如主机名称或时区。" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "请在此处粘贴 SSH 公钥,每行一个,用于 SSH 公钥认证。" - -msgid "Hide ESSID" -msgstr "隐藏 ESSID" - -msgid "Host" -msgstr "主机" - -msgid "Host entries" -msgstr "主机目录" - -msgid "Host expiry timeout" -msgstr "主机到期超时" - -msgid "Host-IP or Network" -msgstr "主机 IP 或网络" - -msgid "Host-Uniq tag content" -msgstr "Host-Uniq 标签内容" - -msgid "Hostname" -msgstr "主机名" - -msgid "Hostname to send when requesting DHCP" -msgstr "请求 DHCP 时发送的主机名" - -msgid "Hostnames" -msgstr "主机名" - -msgid "Hybrid" -msgstr "混合" - -msgid "IKE DH Group" -msgstr "IKE DH 组" - -msgid "IP Addresses" -msgstr "IP 地址" - -msgid "IP address" -msgstr "IP 地址" - -msgid "IP address in invalid" -msgstr "IP 地址无效" - -msgid "IP address is missing" -msgstr "IP 地址缺失" - -msgid "IPv4" -msgstr "IPv4" - -msgid "IPv4 Firewall" -msgstr "IPv4 防火墙" - -msgid "IPv4 Upstream" -msgstr "IPv4 上游" - -msgid "IPv4 address" -msgstr "IPv4 地址" - -msgid "IPv4 and IPv6" -msgstr "IPv4 和 IPv6" - -msgid "IPv4 assignment length" -msgstr "分配 IPv4 长度" - -msgid "IPv4 broadcast" -msgstr "IPv4 广播" - -msgid "IPv4 gateway" -msgstr "IPv4 网关" - -msgid "IPv4 netmask" -msgstr "IPv4 子网掩码" - -msgid "IPv4 only" -msgstr "仅 IPv4" - -msgid "IPv4 prefix" -msgstr "IPv4 地址前缀" - -msgid "IPv4 prefix length" -msgstr "IPv4 地址前缀长度" - -msgid "IPv4-Address" -msgstr "IPv4 地址" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "IPv4-in-IPv4 (RFC2003)" - -msgid "IPv6" -msgstr "IPv6" - -msgid "IPv6 Firewall" -msgstr "IPv6 防火墙" - -msgid "IPv6 Neighbours" -msgstr "IPv6 网上邻居" - -msgid "IPv6 Settings" -msgstr "IPv6 设置" - -msgid "IPv6 ULA-Prefix" -msgstr "IPv6 ULA 前缀" - -msgid "IPv6 Upstream" -msgstr "IPv6 上游" - -msgid "IPv6 address" -msgstr "IPv6 地址" - -msgid "IPv6 assignment hint" -msgstr "IPv6 分配提示" - -msgid "IPv6 assignment length" -msgstr "IPv6 分配长度" - -msgid "IPv6 gateway" -msgstr "IPv6 网关" - -msgid "IPv6 only" -msgstr "仅 IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6 地址前缀" - -msgid "IPv6 prefix length" -msgstr "IPv6 地址前缀长度" - -msgid "IPv6 routed prefix" -msgstr "IPv6 路由前缀" - -msgid "IPv6 suffix" -msgstr "IPv6 后缀" - -msgid "IPv6-Address" -msgstr "IPv6 地址" - -msgid "IPv6-PD" -msgstr "IPv6-PD" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6-in-IPv4 (RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6-over-IPv4 (6rd)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6-over-IPv4 (6to4)" - -msgid "Identity" -msgstr "鉴权" - -msgid "If checked, 1DES is enabled" -msgstr "如果选中,则启用1DES。" - -msgid "If checked, encryption is disabled" -msgstr "如果选中,则禁用加密" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "如果指定,则通过 UUID 而不是固定的设备文件来挂载设备" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "如果指定,则通过分区卷标而不是固定的设备文件来挂载设备" - -msgid "If unchecked, no default route is configured" -msgstr "留空则不配置默认路由" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "留空则忽略所通告的 DNS 服务器地址" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"如果物理内存不足,闲置数据可自动移到 swap 区暂存,以增加可用的 RAM。请注意:swap 区的数据处理会非常慢,因为 " -"swap 设备无法像 RAM 这样的高速率" -"访问。" - -msgid "Ignore /etc/hosts" -msgstr "忽略 /etc/hosts" - -msgid "Ignore interface" -msgstr "忽略此接口" - -msgid "Ignore resolve file" -msgstr "忽略解析文件" - -msgid "Image" -msgstr "固件文件" - -msgid "In" -msgstr "入口" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" -"为了防止未经授权访问系统,您的请求已被阻止。点击下面的 “继续 »” 来返回上一" -"页。" - -msgid "Inactivity timeout" -msgstr "活动超时" - -msgid "Inbound:" -msgstr "入站:" - -msgid "Info" -msgstr "信息" - -msgid "Initialization failure" -msgstr "初始化失败" - -msgid "Initscript" -msgstr "启动脚本" - -msgid "Initscripts" -msgstr "启动脚本" - -msgid "Install" -msgstr "安装" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "安装 iputils-traceroute6 以进行 IPv6 路由追踪" - -msgid "Install package %q" -msgstr "安装软件包 %q" - -msgid "Install protocol extensions..." -msgstr "安装扩展协议..." - -msgid "Installed packages" -msgstr "已安装软件包" - -msgid "Interface" -msgstr "接口" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "接口设备 %q 从 %q 自动迁移到了 %q。" - -msgid "Interface Configuration" -msgstr "接口配置" - -msgid "Interface Overview" -msgstr "接口总览" - -msgid "Interface is reconnecting..." -msgstr "正在重新连接接口..." - -msgid "Interface name" -msgstr "接口名称" - -msgid "Interface not present or not connected yet." -msgstr "接口不存在或未连接。" - -msgid "Interfaces" -msgstr "接口" - -msgid "Internal" -msgstr "内部" - -msgid "Internal Server Error" -msgstr "内部服务器错误" - -msgid "Invalid" -msgstr "无效" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "无效的 VLAN ID!只有 %d 和 %d 之间的 ID 有效。" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "无效的 VLAN ID!只允许唯一的 ID" - -msgid "Invalid username and/or password! Please try again." -msgstr "无效的用户名和/或密码!请重试。" - -msgid "Isolate Clients" -msgstr "隔离客户端" - -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "您尝试刷写的固件与本路由器不兼容,请重新验证固件文件。" - -msgid "JavaScript required!" -msgstr "需要 JavaScript!" - -msgid "Join Network" -msgstr "加入网络" - -msgid "Join Network: Wireless Scan" -msgstr "加入网络:搜索无线" - -msgid "Joining Network: %q" -msgstr "加入网络:%q" - -msgid "Keep settings" -msgstr "保留配置" - -msgid "Kernel Log" -msgstr "内核日志" - -msgid "Kernel Version" -msgstr "内核版本" - -msgid "Key" -msgstr "密码" - -msgid "Key #%d" -msgstr "密码 #%d" - -msgid "Kill" -msgstr "强制关闭" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP 服务器" - -msgid "LCP echo failure threshold" -msgstr "LCP 响应故障阈值" - -msgid "LCP echo interval" -msgstr "LCP 响应间隔" - -msgid "LLC" -msgstr "LLC" - -msgid "Label" -msgstr "卷标" - -msgid "Language" -msgstr "语言" - -msgid "Language and Style" -msgstr "语言和界面" - -msgid "Latency" -msgstr "延迟" - -msgid "Leaf" -msgstr "叶节点" - -msgid "Lease time" -msgstr "租期" - -msgid "Lease validity time" -msgstr "有效租期" - -msgid "Leasefile" -msgstr "租约文件" - -msgid "Leasetime remaining" -msgstr "剩余租期" - -msgid "Leave empty to autodetect" -msgstr "留空则自动探测" - -msgid "Leave empty to use the current WAN address" -msgstr "留空则使用当前 WAN 地址" - -msgid "Legend:" -msgstr "图例:" - -msgid "Limit" -msgstr "客户数" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "仅在网卡所属的子网中提供 DNS 服务。" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "仅监听这些接口和环回接口。" - -msgid "Line Attenuation (LATN)" -msgstr "线路衰减(LATN)" - -msgid "Line Mode" -msgstr "线路模式" - -msgid "Line State" -msgstr "线路状态" - -msgid "Line Uptime" -msgstr "线路运行时间" - -msgid "Link On" -msgstr "活动链接" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "" -"将请求转发到的 DNS 服务器列表" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" -"同一移动域中的 R0KH 列表。
    格式:MAC 地址,NAS 标识符,128 位密钥(十六" -"进制字符串)。
    在从初始移动域关联期间使用的 R0KH 中请求 PMK-R1 密钥时," -"该列表用于将 R0KH-ID(NAS 标识符)映射到目标 MAC 地址。" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" -"同一移动域中的 R1KH 列表。
    格式:MAC 地址,R1KH-ID(包含冒号的 6 个八位" -"字节),128 位密钥(十六进制字符串)。
    当从 R0KH 发送 PMK-R1 键时,此列" -"表用于将 R1KH-ID 映射到目标 MAC 地址。这也是可以请求 PMK-R1 键的 MD 中授权的 " -"R1KH 的列表。" - -msgid "List of SSH key files for auth" -msgstr "用于认证的 SSH 密钥文件列表" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "允许 RFC1918 响应的域名列表" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "允许虚假空域名响应的服务器列表" - -msgid "Listen Interfaces" -msgstr "监听接口" - -msgid "Listen Port" -msgstr "监听端口" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "仅监听指定的接口,未指定则监听全部" - -msgid "Listening port for inbound DNS queries" -msgstr "入站 DNS 查询端口" - -msgid "Load" -msgstr "负载" - -msgid "Load Average" -msgstr "平均负载" - -msgid "Loading" -msgstr "加载中" - -msgid "Local IP address is invalid" -msgstr "本地 IP 地址无效" - -msgid "Local IP address to assign" -msgstr "要分配的本地 IP 地址" - -msgid "Local IPv4 address" -msgstr "本地 IPv4 地址" - -msgid "Local IPv6 address" -msgstr "本地 IPv6 地址" - -msgid "Local Service Only" -msgstr "仅本地服务" - -msgid "Local Startup" -msgstr "本地启动脚本" - -msgid "Local Time" -msgstr "本地时间" - -msgid "Local domain" -msgstr "本地域名" - -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "本地域名规则。与此域匹配的名称从不转发,仅从 DHCP 或 HOSTS 文件解析" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "本地域名后缀将添加到 DHCP 和 HOSTS 文件条目" - -msgid "Local server" -msgstr "本地服务器" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "如果有多个 IP 可用,则根据请求来源的子网来本地化主机名" - -msgid "Localise queries" -msgstr "本地化查询" - -msgid "Locked to channel %s used by: %s" -msgstr "信道道已被锁定为 %s,因为该信道被 %s 使用" - -msgid "Log output level" -msgstr "日志记录等级" - -msgid "Log queries" -msgstr "记录查询日志" - -msgid "Logging" -msgstr "日志" - -msgid "Login" -msgstr "登录" - -msgid "Logout" -msgstr "退出" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "信号丢失秒数(LOSS)" - -msgid "Lowest leased address as offset from the network address." -msgstr "网络地址的起始分配基址。" - -msgid "MAC" -msgstr "MAC" - -msgid "MAC-Address" -msgstr "MAC 地址" - -msgid "MAC-Address Filter" -msgstr "MAC 地址过滤" - -msgid "MAC-Filter" -msgstr "MAC 过滤" - -msgid "MAC-List" -msgstr "MAC 列表" - -msgid "MAP / LW4over6" -msgstr "MAP / LW4over6" - -msgid "MAP rule is invalid" -msgstr "MAP 规则无效" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "MD5" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "确保使用以下命令来复制根文件系统:" - -msgid "Manual" -msgstr "手动" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "最大可达数据速率(ATTNDR)" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "允许的最大 DHCP 租用数" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "允许的最大并发 DNS 查询数" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "允许的最大 EDNS.0 UDP 数据包大小" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "调制解调器就绪的最大等待时间(秒)" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" -"名称的最大长度为 15 个字符,包含根据协议类型,网桥自动添加上的名字前缀(br-、" -"6in4-、pppoe- 等)" - -msgid "Maximum number of leased addresses." -msgstr "最大地址分配数量。" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "内存" - -msgid "Memory usage (%)" -msgstr "内存使用率(%)" - -msgid "Mesh Id" -msgstr "Mesh ID" - -msgid "Metric" -msgstr "跃点数" - -msgid "Mirror monitor port" -msgstr "数据包镜像监听端口" - -msgid "Mirror source port" -msgstr "数据包镜像源端口" - -msgid "Missing protocol extension for proto %q" -msgstr "缺少协议 %q 的协议扩展" - -msgid "Mobility Domain" -msgstr "移动域" - -msgid "Mode" -msgstr "模式" - -msgid "Model" -msgstr "主机型号" - -msgid "Modem device" -msgstr "调制解调器节点" - -msgid "Modem information query failed" -msgstr "调制解调器信息查询失败" - -msgid "Modem init timeout" -msgstr "调制解调器初始化超时" - -msgid "Monitor" -msgstr "监听" - -msgid "Mount Entry" -msgstr "挂载项目" - -msgid "Mount Point" -msgstr "挂载点" - -msgid "Mount Points" -msgstr "挂载点" - -msgid "Mount Points - Mount Entry" -msgstr "挂载点 - 存储区" - -msgid "Mount Points - Swap Entry" -msgstr "挂载点 - 交换区" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "配置存储设备挂载到文件系统中的位置和参数" - -msgid "Mount filesystems not specifically configured" -msgstr "自动挂载未专门配置挂载点的分区" - -msgid "Mount options" -msgstr "挂载选项" - -msgid "Mount point" -msgstr "挂载点" - -msgid "Mount swap not specifically configured" -msgstr "自动挂载未专门配置的 swap 分区" - -msgid "Mounted file systems" -msgstr "已挂载的文件系统" - -msgid "Move down" -msgstr "下移" - -msgid "Move up" -msgstr "上移" - -msgid "Multicast address" -msgstr "多播地址" - -msgid "NAS ID" -msgstr "NAS ID" - -msgid "NAT-T Mode" -msgstr "NAT-T 模式" - -msgid "NAT64 Prefix" -msgstr "NAT64 前缀" - -msgid "NCM" -msgstr "NCM" - -msgid "NDP-Proxy" -msgstr "NDP 代理" - -msgid "NT Domain" -msgstr "NT 域" - -msgid "NTP server candidates" -msgstr "候选 NTP 服务器" - -msgid "Name" -msgstr "名称" - -msgid "Name of the new interface" -msgstr "新接口的名称" - -msgid "Name of the new network" -msgstr "新网络的名称" - -msgid "Navigation" -msgstr "导航" - -msgid "Netmask" -msgstr "子网掩码" - -msgid "Network" -msgstr "网络" - -msgid "Network Utilities" -msgstr "网络工具" - -msgid "Network boot image" -msgstr "网络启动镜像" - -msgid "Network device is not present" -msgstr "网络设备不存在" - -msgid "Network without interfaces." -msgstr "无接口的网络。" - -msgid "Next »" -msgstr "下一步 »" - -msgid "No DHCP Server configured for this interface" -msgstr "本接口未配置 DHCP 服务器" - -msgid "No NAT-T" -msgstr "无 NAT-T" - -msgid "No chains in this table" -msgstr "本表中没有链" - -msgid "No files found" -msgstr "未找到文件" - -msgid "No information available" -msgstr "无可用信息" - -msgid "No matching prefix delegation" -msgstr "无匹配的前缀委托" - -msgid "No negative cache" -msgstr "禁用无效信息缓存" - -msgid "No network configured on this device" -msgstr "本设备未配置网络" - -msgid "No network name specified" -msgstr "未指定网络名" - -msgid "No package lists available" -msgstr "无可用软件列表" - -msgid "No password set!" -msgstr "未设置密码!" - -msgid "No rules in this chain" -msgstr "本链没有规则" - -msgid "No scan results available yet..." -msgstr "还没有可用的扫描结果..." - -msgid "No zone assigned" -msgstr "未指定区域" - -msgid "Noise" -msgstr "噪声" - -msgid "Noise Margin (SNR)" -msgstr "噪声容限(SNR)" - -msgid "Noise:" -msgstr "噪声:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "非抢占 CRC 错误(CRC_P)" - -msgid "Non-wildcard" -msgstr "非全部地址" - -msgid "None" -msgstr "无" - -msgid "Normal" -msgstr "正常" - -msgid "Not Found" -msgstr "未找到" - -msgid "Not associated" -msgstr "未关联" - -msgid "Not connected" -msgstr "未连接" - -msgid "Note: Configuration files will be erased." -msgstr "注意:配置文件将被删除。" - -msgid "Note: interface name length" -msgstr "注意:接口名称长度" - -msgid "Notice" -msgstr "注意" - -msgid "Nslookup" -msgstr "Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "缓存的 DNS 条目数量(最大 10000,0 表示不缓存)" - -msgid "OK" -msgstr "确认" - -msgid "OPKG-Configuration" -msgstr "OPKG 配置" - -msgid "Obfuscated Group Password" -msgstr "混淆组密码" - -msgid "Obfuscated Password" -msgstr "混淆密码" - -msgid "Obtain IPv6-Address" -msgstr "获取 IPv6 地址" - -msgid "Off-State Delay" -msgstr "关闭时间" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"在此页面,您可以配置网络接口。您可以勾选“桥接接口”,并输入由空格分隔的多个网" -"络接口的名称来桥接多个接口。接口名称中可以使用 VLAN 记号 INTERFACE.VLANNR(例如:" -"eth0.1)。" - -msgid "On-State Delay" -msgstr "通电时间" - -msgid "One of hostname or mac address must be specified!" -msgstr "请指定主机名或MAC地址!" - -msgid "One or more fields contain invalid values!" -msgstr "一个或多个选项值有误!" - -msgid "One or more invalid/required values on tab" -msgstr "选项卡上存在一个或多个无效/必需值" - -msgid "One or more required fields have no value!" -msgstr "一个或多个必选项值为空!" - -msgid "Open list..." -msgstr "打开列表..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "OpenConnect (CISCO AnyConnect)" - -msgid "Operating frequency" -msgstr "工作频率" - -msgid "Option changed" -msgstr "选项已更改" - -msgid "Option removed" -msgstr "选项已移除" - -msgid "Optional" -msgstr "可选" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" -"可选,传出加密数据包的 32 位标记。请输入十六进制值,以 0x 开头。" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" -"可选,允许的值:'eui64'、'random' 和其他固定值(例如:'::1' 或 '::1:2')。当" -"从授权服务器获取到 IPv6 前缀(如 'a:b:c:d::'),使用后缀(如 '::1')合成 " -"IPv6 地址('a:b:c:d::1')分配给此接口。" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "可选,Base64 编码的预共享密钥。" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "可选,为此 Peer 创建允许 IP 的路由。" - -msgid "Optional. Description of peer." -msgstr "可选,Peer 的描述。" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "可选,Peer 的主机。" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "可选,隧道接口的最大传输单元。" - -msgid "Optional. Port of peer." -msgstr "可选,Peer 的端口。" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" -"可选,Keep-Alive 消息之间的秒数,默认为 0(禁用)。如果此设备位于 NAT 之后," -"建议使用的值为 25。" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "可选,用于传出和传入数据包的 UDP 端口。" - -msgid "Options" -msgstr "选项" - -msgid "Other:" -msgstr "其余:" - -msgid "Out" -msgstr "出口" - -msgid "Outbound:" -msgstr "出站:" - -msgid "Output Interface" -msgstr "网络出口" - -msgid "Override MAC address" -msgstr "重设 MAC 地址" - -msgid "Override MTU" -msgstr "重设 MTU" - -msgid "Override TOS" -msgstr "重设 TOS" - -msgid "Override TTL" -msgstr "重设 TTL" - -msgid "Override default interface name" -msgstr "重设默认接口名称" - -msgid "Override the gateway in DHCP responses" -msgstr "重设 DHCP 响应网关" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "重设发送到客户端的子网掩码。" - -msgid "Override the table used for internal routes" -msgstr "重设内部路由表" - -msgid "Overview" -msgstr "总览" - -msgid "Owner" -msgstr "用户名" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP 密码" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP 用户名" - -msgid "PID" -msgstr "PID" - -msgid "PIN" -msgstr "PIN" - -msgid "PIN code rejected" -msgstr "PIN 码被拒绝" - -msgid "PMK R1 Push" -msgstr "R1 推送 PMK" - -msgid "PPP" -msgstr "PPP" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA 封包" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "PPPoSSH" - -msgid "PPtP" -msgstr "PPtP" - -msgid "PSID offset" -msgstr "PSID 偏移" - -msgid "PSID-bits length" -msgstr "PSID-bits 长度" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "PTM/EFM(分组传输模式)" - -msgid "Package libiwinfo required!" -msgstr "需要 libiwinfo 软件包!" - -msgid "Package lists are older than 24 hours" -msgstr "软件包列表已超过 24 小时未更新" - -msgid "Package name" -msgstr "软件包名称" - -msgid "Packets" -msgstr "数据包" - -msgid "Part of zone %q" -msgstr "区域 %q" - -msgid "Password" -msgstr "密码" - -msgid "Password authentication" -msgstr "密码验证" - -msgid "Password of Private Key" -msgstr "私有密钥" - -msgid "Password of inner Private Key" -msgstr "内部私钥的密码" - -msgid "Password successfully changed!" -msgstr "密码更改成功!" - -msgid "Password2" -msgstr "密码 2" - -msgid "Path to CA-Certificate" -msgstr "CA 证书路径" - -msgid "Path to Client-Certificate" -msgstr "客户端证书路径" - -msgid "Path to Private Key" -msgstr "私钥路径" - -msgid "Path to inner CA-Certificate" -msgstr "内部 CA 证书的路径" - -msgid "Path to inner Client-Certificate" -msgstr "内部客户端证书的路径" - -msgid "Path to inner Private Key" -msgstr "内部私钥的路径" - -msgid "Peak:" -msgstr "峰值:" - -msgid "Peer IP address to assign" -msgstr "要分配的 Peer IP 地址" - -msgid "Peer address is missing" -msgstr "Peer 地址缺失" - -msgid "Peers" -msgstr "Peers" - -msgid "Perfect Forward Secrecy" -msgstr "完全正向保密" - -msgid "Perform reboot" -msgstr "执行重启" - -msgid "Perform reset" -msgstr "执行重置" - -msgid "Persistent Keep Alive" -msgstr "持续 Keep-Alive" - -msgid "Phy Rate:" -msgstr "物理速率:" - -msgid "Physical Settings" -msgstr "物理设置" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "数据包" - -msgid "Please enter your username and password." -msgstr "请输入用户名和密码。" - -msgid "Policy" -msgstr "策略" - -msgid "Port" -msgstr "端口" - -msgid "Port status:" -msgstr "端口状态:" - -msgid "Power Management Mode" -msgstr "电源管理模式" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "抢占式 CRC 错误(CRCP_P)" - -msgid "Prefer LTE" -msgstr "首选 LTE" - -msgid "Prefer UMTS" -msgstr "首选 UMTS" - -msgid "Prefix Delegated" -msgstr "分发前缀" - -msgid "Preshared Key" -msgstr "预共享密钥" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "在指定数量的 LCP 响应故障后假定链路已断开,0 为忽略故障" - -msgid "Prevent listening on these interfaces." -msgstr "不监听这些接口。" - -msgid "Prevents client-to-client communication" -msgstr "禁止客户端间通信" - -msgid "Private Key" -msgstr "私钥" - -msgid "Proceed" -msgstr "执行" - -msgid "Processes" -msgstr "系统进程" - -msgid "Profile" -msgstr "配置文件" - -msgid "Prot." -msgstr "协议" - -msgid "Protocol" -msgstr "协议" - -msgid "Protocol family" -msgstr "协议族" - -msgid "Protocol of the new interface" -msgstr "新接口的协议" - -msgid "Protocol support is not installed" -msgstr "未安装协议支持" - -msgid "Provide NTP server" -msgstr "作为 NTP 服务器提供服务" - -msgid "Provide new network" -msgstr "添加新网络" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "伪装 Ad-Hoc(ahdemo)" - -msgid "Public Key" -msgstr "公钥" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "分配到此设备的公共前缀,用以分发到客户端。" - -msgid "QMI Cellular" -msgstr "QMI 蜂窝" - -msgid "Quality" -msgstr "质量" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "查询所有可用的上游 DNS 服务器" - -msgid "R0 Key Lifetime" -msgstr "R0 密钥生存期" - -msgid "R1 Key Holder" -msgstr "R1 密钥持有者" - -msgid "RFC3947 NAT-T mode" -msgstr "RFC3947 NAT-T 模式" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS 阈值" - -msgid "RX" -msgstr "接收" - -msgid "RX Rate" -msgstr "接收速率" - -msgid "Radius-Accounting-Port" -msgstr "Radius 计费端口" - -msgid "Radius-Accounting-Secret" -msgstr "Radius 计费密钥" - -msgid "Radius-Accounting-Server" -msgstr "Radius 计费服务器" - -msgid "Radius-Authentication-Port" -msgstr "Radius 认证端口" - -msgid "Radius-Authentication-Secret" -msgstr "Radius 认证密钥" - -msgid "Radius-Authentication-Server" -msgstr "Radius 认证服务器" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "原始 16 进制编码的字节。除非您的 ISP 要求,否则请留空" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -"根据 /etc/ethers 来配置 DHCP 服务器" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" -"确定要删除此接口?删除操作无法撤消!若您删除此接口,可能导致无法再访问此设备" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"确定要删除此无线网络?删除操作无法撤销!若您删除此无线网络,可能导致无法再访问" -"此设备。" - -msgid "Really reset all changes?" -msgstr "确定要放弃所有更改?" - -msgid "Really switch protocol?" -msgstr "确定要切换协议?" - -msgid "Realtime Connections" -msgstr "实时连接" - -msgid "Realtime Graphs" -msgstr "实时信息" - -msgid "Realtime Load" -msgstr "实时负载" - -msgid "Realtime Traffic" -msgstr "实时流量" - -msgid "Realtime Wireless" -msgstr "实时无线" - -msgid "Reassociation Deadline" -msgstr "重关联截止时间" - -msgid "Rebind protection" -msgstr "重绑定保护" - -msgid "Reboot" -msgstr "重启" - -msgid "Rebooting..." -msgstr "重启中..." - -msgid "Reboots the operating system of your device" -msgstr "重启您设备上的系统" - -msgid "Receive" -msgstr "接收" - -msgid "Receiver Antenna" -msgstr "接收天线" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "推荐,Wire Guard 接口的 IP 地址。" - -msgid "Reconnect this interface" -msgstr "重连此接口" - -msgid "References" -msgstr "引用" - -msgid "Relay" -msgstr "中继" - -msgid "Relay Bridge" -msgstr "中继桥" - -msgid "Relay between networks" -msgstr "网络间中继" - -msgid "Relay bridge" -msgstr "中继桥" - -msgid "Remote IPv4 address" -msgstr "远程 IPv4 地址" - -msgid "Remote IPv4 address or FQDN" -msgstr "远程 IPv4 地址或 FQDN" - -msgid "Remove" -msgstr "移除" - -msgid "Repeat scan" -msgstr "重新扫描" - -msgid "Replace entry" -msgstr "重置条目" - -msgid "Replace wireless configuration" -msgstr "重置无线配置" - -msgid "Request IPv6-address" -msgstr "请求 IPv6 地址" - -msgid "Request IPv6-prefix of length" -msgstr "请求指定长度的 IPv6 前缀" - -msgid "Required" -msgstr "必须" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "某些 ISP 需要,例如:同轴线网络 DOCSIS 3" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "必须,此接口的 Base64 编码私钥。" - -msgid "Required. Base64-encoded public key of peer." -msgstr "必须,Peer 的 Base64 编码公钥。" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" -"必须,允许该 Peer 在隧道中使用的 IP 地址和前缀,通常是该 Peer 的隧道 IP 地址" -"和通过隧道的路由网络。" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" -"需要完整版本的 wpad/hostapd,并且 WiFi 驱动支持
    (截止 2017.02,已知支持" -"此特性的驱动有 ath9k、ath10k,以及 LEDE 中的 mwlwifi 和 mt76)" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "需要上级支持 DNSSEC,验证未签名的响应确实是来自未签名的域名" - -msgid "Reset" -msgstr "复位" - -msgid "Reset Counters" -msgstr "复位计数器" - -msgid "Reset to defaults" -msgstr "恢复到出厂设置" - -msgid "Resolv and Hosts Files" -msgstr "HOSTS 和解析文件" - -msgid "Resolve file" -msgstr "解析文件" - -msgid "Restart" -msgstr "重启" - -msgid "Restart Firewall" -msgstr "重启防火墙" - -msgid "Restart radio interface" -msgstr "重启无线接口" - -msgid "Restore" -msgstr "恢复" - -msgid "Restore backup" -msgstr "恢复配置" - -msgid "Reveal/hide password" -msgstr "显示/隐藏 密码" - -msgid "Revert" -msgstr "恢复" - -msgid "Revert changes" -msgstr "恢复更改" - -msgid "Revert request failed with status %h" -msgstr "恢复请求失败,状态 %h" - -msgid "Reverting configuration…" -msgstr "正在恢复配置..." - -msgid "Root" -msgstr "Root" - -msgid "Root directory for files served via TFTP" -msgstr "TFTP 服务器的根目录" - -msgid "Root preparation" -msgstr "根目录准备" - -msgid "Route Allowed IPs" -msgstr "路由允许的 IP" - -msgid "Route type" -msgstr "路由类型" - -msgid "Router Advertisement-Service" -msgstr "路由通告服务" - -msgid "Router Password" -msgstr "主机密码" - -msgid "Routes" -msgstr "路由表" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "路由表描述了数据包的可达路径。" - -msgid "Run a filesystem check before mounting the device" -msgstr "挂载设备前运行文件系统检查" - -msgid "Run filesystem check" -msgstr "文件系统检查" - -msgid "SHA256" -msgstr "SHA256" - -msgid "SNR" -msgstr "SNR" - -msgid "SSH Access" -msgstr "SSH 访问" - -msgid "SSH server address" -msgstr "SSH 服务器地址" - -msgid "SSH server port" -msgstr "SSH 服务器端口" - -msgid "SSH username" -msgstr "SSH 用户名" - -msgid "SSH-Keys" -msgstr "SSH 密钥" - -msgid "SSID" -msgstr "SSID" - -msgid "Save" -msgstr "保存" - -msgid "Save & Apply" -msgstr "保存并应用" - -msgid "Scan" -msgstr "扫描" - -msgid "Scan request failed" -msgstr "扫描请求失败" - -msgid "Scheduled Tasks" -msgstr "计划任务" - -msgid "Section added" -msgstr "添加的节点" - -msgid "Section removed" -msgstr "移除的节点" - -msgid "See \"mount\" manpage for details" -msgstr "详参 \"mount\" 联机帮助" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "定时发送 LCP 响应(秒),仅在结合了故障阈值时有效" - -msgid "Separate Clients" -msgstr "隔离客户端" - -msgid "Server Settings" -msgstr "服务器设置" - -msgid "Service Name" -msgstr "服务名" - -msgid "Service Type" -msgstr "服务类型" - -msgid "Services" -msgstr "服务" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" -"不管接口的链路状态如何,总是用应用设置(如果勾选,链路状态变更将不再触发 " -"hotplug 事件处理)。" - -msgid "Set up Time Synchronization" -msgstr "设置时间同步" - -msgid "Setting PLMN failed" -msgstr "设置 PLMN 失败" - -msgid "Setting operation mode failed" -msgstr "设置操作模式失败" - -msgid "Setup DHCP Server" -msgstr "配置 DHCP 服务器" - -msgid "Severely Errored Seconds (SES)" -msgstr "严重误码秒(SES)" - -msgid "Short GI" -msgstr "Short GI" - -msgid "Short Preamble" -msgstr "Short Preamble" - -msgid "Show current backup file list" -msgstr "显示当前备份文件列表" - -msgid "Shutdown this interface" -msgstr "关闭此接口" - -msgid "Signal" -msgstr "信号" - -msgid "Signal Attenuation (SATN)" -msgstr "信号衰减(SATN)" - -msgid "Signal:" -msgstr "信号:" - -msgid "Size" -msgstr "大小" - -msgid "Size (.ipk)" -msgstr "大小(.ipk)" - -msgid "Size of DNS query cache" -msgstr "DNS 查询缓存的大小" - -msgid "Skip" -msgstr "跳过" - -msgid "Skip to content" -msgstr "跳到内容" - -msgid "Skip to navigation" -msgstr "跳转到导航" - -msgid "Slot time" -msgstr "时隙" - -msgid "Software" -msgstr "软件包" - -msgid "Software VLAN" -msgstr "软件 VLAN" - -msgid "Some fields are invalid, cannot save values!" -msgstr "一些项目的值无效,无法保存!" - -msgid "Sorry, the object you requested was not found." -msgstr "对不起,请求的目标未找到。" - -msgid "Sorry, the server encountered an unexpected error." -msgstr "对不起,服务器遇到未知错误。" - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"抱歉,您的设备暂不支持 sysupgrade 升级,需手动更新固件。请参考 Wiki 中关于此" -"设备的固件更新说明。" - -msgid "Source" -msgstr "源地址" - -msgid "Specifies the directory the device is attached to" -msgstr "指定设备的挂载目录" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "指定此 Dropbear 实例的监听端口" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "判定主机已下线的最少 ARP 请求失败数" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "判断主机已下线的超时时间(秒)" - -msgid "Specify a TOS (Type of Service)." -msgstr "指定 TOS(服务类型)。" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "为封装数据包设置 TTL(生存时间),缺省值:64" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "设置 MTU(最大传输单位),缺省值:1280 bytes" - -msgid "Specify the secret encryption key here." -msgstr "在此指定密钥。" - -msgid "Start" -msgstr "开始" - -msgid "Start priority" -msgstr "启动优先级" - -msgid "Starting configuration apply…" -msgstr "开始应用配置..." - -msgid "Starting wireless scan..." -msgstr "正在启动无线扫描..." - -msgid "Startup" -msgstr "启动项" - -msgid "Static IPv4 Routes" -msgstr "静态 IPv4 路由" - -msgid "Static IPv6 Routes" -msgstr "静态 IPv6 路由" - -msgid "Static Leases" -msgstr "静态地址分配" - -msgid "Static Routes" -msgstr "静态路由" - -msgid "Static address" -msgstr "静态地址" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"静态租约用于给 DHCP 客户端分配固定的 IP 地址和主机标识。只有指定的主机才能连" -"接,并且接口须为非动态配置。" - -msgid "Status" -msgstr "状态" - -msgid "Stop" -msgstr "关闭" - -msgid "Strict order" -msgstr "严谨查序" - -msgid "Submit" -msgstr "提交" - -msgid "Suppress logging" -msgstr "不记录日志" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "不记录这些协议的常规操作日志。" - -msgid "Swap" -msgstr "Swap" - -msgid "Swap Entry" -msgstr "Swap 节点" - -msgid "Switch" -msgstr "交换机" - -msgid "Switch %q" -msgstr "交换机 %q" - -msgid "Switch %q (%s)" -msgstr "交换机 %q(%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "交换机 %q 具有未知的拓扑结构,VLAN 设置可能不正确。" - -msgid "Switch Port Mask" -msgstr "交换机端口掩码" - -msgid "Switch VLAN" -msgstr "交换机 VLAN" - -msgid "Switch protocol" -msgstr "切换协议" - -msgid "Sync with browser" -msgstr "同步浏览器时间" - -msgid "Synchronizing..." -msgstr "同步中..." - -msgid "System" -msgstr "系统" - -msgid "System Log" -msgstr "系统日志" - -msgid "System Properties" -msgstr "系统属性" - -msgid "System log buffer size" -msgstr "系统日志缓冲区大小" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP 设置" - -msgid "TFTP server root" -msgstr "TFTP 服务器根目录" - -msgid "TX" -msgstr "发送" - -msgid "TX Rate" -msgstr "发送速率" - -msgid "Table" -msgstr "表" - -msgid "Target" -msgstr "对象" - -msgid "Target network" -msgstr "目标网络" - -msgid "Terminate" -msgstr "关闭" - -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"“设备配置”区域可配置无线的硬件参数,比如:信道、发射功率或发射天线,如果此无" -"线硬件支持多 SSID,则全部 SSID 共用此设备配置。“接口配置”区域则可配置接口各自" -"参数,如工作模式、加密方式等。" - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "软件包 libiwinfo-lua 未安装,必须安装此组件以配置无线!" - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "HE.net 客户端更新设置已经被改变,您现在必须使用用户名代替用户 ID!" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "远程隧道端的 IPv4 地址或完整域名。" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "运营商特定的 IPv6 前缀,通常以 :: 为结尾" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"合法字符:A-Z, a-z, 0-9_" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "备份存档似乎不是有效的 gzip 文件。" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "由于以下错误,配置文件无法被加载:" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" -"在应用挂起的更改后 %d 秒内无法连接到此设备,出于安全原因导致配置回滚。如果您认" -"为配置的更改是正确的,请执行强制应用。或者您可以在再次尝试应用之前解除" -"此警告并编辑配置,或者恢复所有挂起的更改以保持当前正在工作的配置状态。" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "存储器或分区的设备文件,(例如:/dev/sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"用于格式化存储器的文件系统(例如:ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"固件已上传,请注意核对文件大小和校验值!
    点击下面的“继续”开始刷写,刷新" -"过程中切勿断电!" - -msgid "The following changes have been reverted" -msgstr "以下更改已恢复" - -msgid "The following rules are currently active on this system." -msgstr "以下规则当前在系统中处于活动状态。" - -msgid "The given network name is not unique" -msgstr "给定的网络名重复" - -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "本机的硬件不支持多 SSID,如果继续,现有配置将被替换。" - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "IPv4 前缀长度(bit),其余的用在 IPv6 地址。" - -msgid "The length of the IPv6 prefix in bits" -msgstr "IPv6 前缀长度(bit)" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "所创建隧道的本地 IPv4 地址(可选)。" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"本设备可以划分为多个 VLAN," -"并支持电脑间的直接通讯。VLAN 也常用于分割不同网段。默认通常是一条上行端口连接 ISP,其余端口为本地子" -"网。" - -msgid "The selected protocol needs a device assigned" -msgstr "所选的协议需要分配设备" - -msgid "The submitted security token is invalid or already expired!" -msgstr "提交的安全令牌无效或已过期!" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "系统正在擦除配置分区,完成后会自动重启。" - -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"正在刷新系统...
    切勿关闭电源! DO NOT POWER OFF THE DEVICE!
    等待数分" -"钟后即可尝试重新连接到路由。您可能需要更改计算机的 IP 地址以重新连接。" - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "不支持所上传的映像文件格式,请选择适合当前平台的通用映像文件。" - -msgid "There are no active leases." -msgstr "没有已分配的租约。" - -msgid "There are no changes to apply." -msgstr "没有待应用的更改。" - -msgid "There are no pending changes to revert!" -msgstr "没有挂起的更改可恢复!" - -msgid "There are no pending changes!" -msgstr "没有挂起的更改!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "尚未分配设备,请在“物理设置”选项卡中选择网络设备" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "尚未设置密码。请为 root 用户设置密码以保护主机并启用 SSH。" - -msgid "This IPv4 address of the relay" -msgstr "中继的 IPv4 地址" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" -"此文件包含类似于 'server=/domain/1.2.3.4' 或 'server=1.2.3.4' 的行,用于解析" -"特定域名或指定上游 DNS 服务器。" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"系统升级时要保存的配置文件和目录的清单。目录 /etc/config/ 内更改过的文件以及" -"部分其他配置会被自动保存。" - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "如果更新密钥没有设置的话,隧道的“更新密钥”或者账户密码必须填写。" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "启动脚本插入到 'exit 0' 之前即可随系统启动运行。" - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "隧道代理分配的本地终端地址,通常以 ...:2/64 结尾" - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"这是本地网络中唯一的 DHCP 服务器" - -msgid "This is the plain username for logging into the account" -msgstr "登录账户时填写的用户名" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "这是隧道代理分配给您的路由前缀,供客户端使用" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "自定义系统 crontab 中的计划任务。" - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "这通常是隧道代理所管理的最近的 PoP 的地址" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "系统中正在运行的进程概况和它们的状态信息。" - -msgid "This page gives an overview over currently active network connections." -msgstr "活跃的网络连接概况。" - -msgid "This section contains no values yet" -msgstr "尚无任何配置" - -msgid "Time Synchronization" -msgstr "时间同步" - -msgid "Time Synchronization is not configured yet." -msgstr "尚未配置时间同步" - -msgid "Timezone" -msgstr "时区" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"上传备份存档以恢复配置。要将固件恢复到初始状态,请单击“执行重置”(仅 " -"squashfs 格式的固件有效)。" - -msgid "Tone" -msgstr "Tone" - -msgid "Total Available" -msgstr "可用数" - -msgid "Traceroute" -msgstr "Traceroute" - -msgid "Traffic" -msgstr "流量" - -msgid "Transfer" -msgstr "传输" - -msgid "Transmission Rate" -msgstr "传送速率" - -msgid "Transmit" -msgstr "传送" - -msgid "Transmit Power" -msgstr "无线电功率" - -msgid "Transmitter Antenna" -msgstr "传送天线" - -msgid "Trigger" -msgstr "触发器" - -msgid "Trigger Mode" -msgstr "触发模式" - -msgid "Tunnel ID" -msgstr "隧道 ID" - -msgid "Tunnel Interface" -msgstr "隧道接口" - -msgid "Tunnel Link" -msgstr "隧道链接" - -msgid "Tx-Power" -msgstr "传输功率" - -msgid "Type" -msgstr "类型" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "仅 UMTS(WCDMA)" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB 设备" - -msgid "USB Ports" -msgstr "USB 接口" - -msgid "UUID" -msgstr "UUID" - -msgid "Unable to determine device name" -msgstr "无法确认设备名称" - -msgid "Unable to determine external IP address" -msgstr "无法确认外部 IP 地址" - -msgid "Unable to determine upstream interface" -msgstr "无法确认上游接口" - -msgid "Unable to dispatch" -msgstr "无法调度" - -msgid "Unable to obtain client ID" -msgstr "无法获取客户端 ID" - -msgid "Unable to resolve AFTR host name" -msgstr "无法解析 AFTR 主机名" - -msgid "Unable to resolve peer host name" -msgstr "无法解析 Pear 主机名" - -msgid "Unavailable Seconds (UAS)" -msgstr "不可用秒数(UAS)" - -msgid "Unknown" -msgstr "未知" - -msgid "Unknown Error, password not changed!" -msgstr "未知错误,密码未更改!" - -msgid "Unknown error (%s)" -msgstr "未知错误(%s)" - -msgid "Unmanaged" -msgstr "不配置协议" - -msgid "Unmount" -msgstr "卸载分区" - -msgid "Unsaved Changes" -msgstr "未保存的配置" - -msgid "Unsupported MAP type" -msgstr "不支持的 MAP 类型" - -msgid "Unsupported modem" -msgstr "不支持的调制解调器" - -msgid "Unsupported protocol type." -msgstr "不支持的协议类型" - -msgid "Up" -msgstr "向上" - -msgid "Update lists" -msgstr "刷新列表" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"上传一个 sysupgrade 格式的固件映像文件以替换当前运行的固件。勾选“保留配置”以" -"使更新后的系统仍然使用当前的系统配置(新的固件需要和当前固件兼容)。" - -msgid "Upload archive..." -msgstr "上传备份..." - -msgid "Uploaded File" -msgstr "上传的文件" - -msgid "Uptime" -msgstr "运行时间" - -msgid "Use /etc/ethers" -msgstr "使用 /etc/ethers 配置" - -msgid "Use DHCP gateway" -msgstr "使用 DHCP 网关" - -msgid "Use DNS servers advertised by peer" -msgstr "使用对端通告的 DNS 服务器" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "参考 ISO/IEC 3166 alpha2 国家代码。" - -msgid "Use MTU on tunnel interface" -msgstr "隧道接口的 MTU" - -msgid "Use TTL on tunnel interface" -msgstr "隧道接口的 TTL" - -msgid "Use as external overlay (/overlay)" -msgstr "作为外部 overlay 使用(/overlay)" - -msgid "Use as root filesystem (/)" -msgstr "作为根文件系统使用(/)" - -msgid "Use broadcast flag" -msgstr "使用广播标签" - -msgid "Use builtin IPv6-management" -msgstr "使用内置的 IPv6 管理" - -msgid "Use custom DNS servers" -msgstr "使用自定义的 DNS 服务器" - -msgid "Use default gateway" -msgstr "使用默认网关" - -msgid "Use gateway metric" -msgstr "使用网关跃点" - -msgid "Use routing table" -msgstr "使用路由表" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"使用“添加”按钮来增加新的租约条目。“IPv4 地址”和“主机名”字段的值将被固定分配" -"给“MAC 地址”字段标识的主机,“租期”是一个可选字段,可为每个主机单独设定 DHCP " -"租期的时长,例如:12h、3d、inifinite,分别表示 12 小时、3 天、永久。" - -msgid "Used" -msgstr "已用" - -msgid "Used Key Slot" -msgstr "启用密码组" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" -"用于两种不同的用途:RADIUS NAS ID 和 802.11r R0KH-ID,普通 WPA(2)-PSK 不需" -"要。" - -msgid "User certificate (PEM encoded)" -msgstr "用户证书(PEM)" - -msgid "User key (PEM encoded)" -msgstr "用户密钥(PEM)" - -msgid "Username" -msgstr "用户名" - -msgid "VC-Mux" -msgstr "VC-Mux" - -msgid "VDSL" -msgstr "VDSL" - -msgid "VLANs on %q" -msgstr "%q 上的 VLAN" - -msgid "VLANs on %q (%s)" -msgstr "%q(%s)上的 VLAN" - -msgid "VPN Local address" -msgstr "VPN 本地地址" - -msgid "VPN Local port" -msgstr "VPN 本地端口" - -msgid "VPN Server" -msgstr "VPN 服务器" - -msgid "VPN Server port" -msgstr "VPN 服务器端口" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "VPN 服务器证书的 SHA1 哈希值" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "VPNC(CISCO 3000 和其他 VPN)" - -msgid "Vendor" -msgstr "Vendor" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "请求 DHCP 时发送的 Vendor Class 选项" - -msgid "Verify" -msgstr "验证" - -msgid "Version" -msgstr "版本" - -msgid "Virtual dynamic interface" -msgstr "虚拟动态接口" - -msgid "WDS" -msgstr "WDS" - -msgid "WEP Open System" -msgstr "WEP 开放式系统" - -msgid "WEP Shared Key" -msgstr "WEP 共享密钥" - -msgid "WEP passphrase" -msgstr "WEP 密钥" - -msgid "WMM Mode" -msgstr "WMM 模式" - -msgid "WPA passphrase" -msgstr "WPA 密钥" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA 加密需要安装 wpa_supplicant(客户端模式)或安装 hostapd(接入点 AP、点对" -"点 Ad-Hoc 模式)。" - -msgid "Waiting for changes to be applied..." -msgstr "正在应用更改..." - -msgid "Waiting for command to complete..." -msgstr "等待命令执行完成..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "等待应用配置... %d 秒" - -msgid "Waiting for device..." -msgstr "等待设备..." - -msgid "Warning" -msgstr "警告" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "警告:一些未保存的配置将在重启后丢失!" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "当使用 PSK 时,PMK 可以在没有 AP 间通信的情况下在本地生成" - -msgid "Width" -msgstr "频宽" - -msgid "WireGuard VPN" -msgstr "WireGuard VPN" - -msgid "Wireless" -msgstr "无线" - -msgid "Wireless Adapter" -msgstr "无线适配器" - -msgid "Wireless Network" -msgstr "无线网络" - -msgid "Wireless Overview" -msgstr "无线概况" - -msgid "Wireless Security" -msgstr "无线安全" - -msgid "Wireless is disabled" -msgstr "无线未开启" - -msgid "Wireless is not associated" -msgstr "无线未未关联" - -msgid "Wireless is restarting..." -msgstr "无线重启中..." - -msgid "Wireless network is disabled" -msgstr "无线网络已禁用" - -msgid "Wireless network is enabled" -msgstr "无线网络已启用" - -msgid "Write received DNS requests to syslog" -msgstr "将收到的 DNS 请求写入系统日志" - -msgid "Write system log to file" -msgstr "将系统日志写入文件" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"在此启用或禁用已安装的启动脚本,更改在设备重启后生效。
    警告:如" -"果禁用了必要的启动脚本,比如 \"network\",可能会导致无法访问设备!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "必须开启浏览器的 JavaScript 支持,否则 LuCI 无法正常工作。" - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" -"您的 IE 浏览器太老了,无法正常显示这个页面!请更新到 IE7 及以上或使用其他浏览" -"器,例如:Chrome、Firefox、Opera、Safari。" - -msgid "any" -msgstr "任意" - -msgid "auto" -msgstr "自动" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "桥接的" - -msgid "create" -msgstr "创建" - -msgid "create:" -msgstr "创建:" - -msgid "creates a bridge over specified interface(s)" -msgstr "为指定接口创建桥接" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "禁用" - -msgid "disabled" -msgstr "已禁用" - -msgid "expired" -msgstr "过期时间" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"用于存放已分配的 DHCP 租约的文件" - -msgid "forward" -msgstr "转发" - -msgid "full-duplex" -msgstr "全双工" - -msgid "half-duplex" -msgstr "半双工" - -msgid "hidden" -msgstr "隐藏" - -msgid "hybrid mode" -msgstr "混合模式" - -msgid "if target is a network" -msgstr "如果对象是一个网络" - -msgid "input" -msgstr "输入" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "本地 DNS 解析文件" - -msgid "minutes" -msgstr "分钟" - -msgid "mixed WPA/WPA2" -msgstr "mixed WPA/WPA2" - -msgid "no" -msgstr "否" - -msgid "no link" -msgstr "未连接" - -msgid "none" -msgstr "无" - -msgid "not present" -msgstr "不存在" - -msgid "off" -msgstr "关" - -msgid "on" -msgstr "开" - -msgid "open" -msgstr "开放式" - -msgid "output" -msgstr "输出" - -msgid "overlay" -msgstr "覆盖" - -msgid "random" -msgstr "随机" - -msgid "relay mode" -msgstr "中继模式" - -msgid "routed" -msgstr "已路由" - -msgid "server mode" -msgstr "服务器模式" - -msgid "stateful-only" -msgstr "有状态的" - -msgid "stateless" -msgstr "无状态的" - -msgid "stateless + stateful" -msgstr "无状态的 + 有状态的" - -msgid "tagged" -msgstr "已标记" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "时间单位(TUs / 1.024ms)[1000-65535]" - -msgid "unknown" -msgstr "未知" - -msgid "unlimited" -msgstr "无限制" - -msgid "unspecified" -msgstr "未指定" - -msgid "unspecified -or- create:" -msgstr "不指定或新建:" - -msgid "untagged" -msgstr "未标记" - -msgid "yes" -msgstr "是" - -msgid "« Back" -msgstr "« 后退" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "激活此网络" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Hermes 802.11b 无线控制器" - -#~ msgid "Interface is shutting down..." -#~ msgstr "正在关闭接口..." - -#~ msgid "Interface reconnected" -#~ msgstr "接口已重新连接" - -#~ msgid "Interface shut down" -#~ msgstr "接口已关闭" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Prism2/2.5/3 802.11b 无线控制器" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "RaLink 802.11%s 无线控制器" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "确定要关闭接口 \"%s\"?\\n如果您正在使用此接口连接路由器,关闭此网络可能导" -#~ "致连接断开!" - -#~ msgid "Reconnecting interface" -#~ msgstr "重连接口中..." - -#~ msgid "Shutdown this network" -#~ msgstr "关闭此网络" - -#~ msgid "Wireless restarted" -#~ msgstr "无线已重启" - -#~ msgid "Wireless shut down" -#~ msgstr "无线已关闭" - -#~ msgid "Device unreachableX" -#~ msgstr "无法连接到设备!" - -#~ msgid "DHCP Leases" -#~ msgstr "DHCP 分配" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "DHCPv6 分配" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "确定要删除此接口?删除操作无法撤销!\\n删除此接口,可能导致无法再访问路由" -#~ "器!" - -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "确定要关闭此网络?\\n如果您正在使用此接口连接路由器,关闭此网络可能导致连" -#~ "接断开!" - -#~ msgid "Sort" -#~ msgstr "排序" - -#~ msgid "help" -#~ msgstr "帮助" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "IPv4 WAN 状态" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "IPv6 WAN 状态" diff --git a/luci-base/po/zh-tw/base.po b/luci-base/po/zh-tw/base.po deleted file mode 100644 index 579d52656..000000000 --- a/luci-base/po/zh-tw/base.po +++ /dev/null @@ -1,4123 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2014-05-21 10:34+0200\n" -"Last-Translator: omnistack \n" -"Language-Team: none\n" -"Language: zh_TW\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Pootle 2.0.6\n" - -msgid "%.1f dB" -msgstr "" - -msgid "%s is untagged in multiple VLANs!" -msgstr "" - -msgid "(%d minute window, %d second interval)" -msgstr "(%d 分鐘訊息, %d 秒更新)" - -msgid "(%s available)" -msgstr "(%s 可用)" - -msgid "(empty)" -msgstr "(空白)" - -msgid "(no interfaces attached)" -msgstr "(未連接界面)" - -msgid "-- Additional Field --" -msgstr "-- 更多選項 --" - -msgid "-- Please choose --" -msgstr "-- 請選擇 --" - -msgid "-- custom --" -msgstr "-- 自訂 --" - -msgid "-- match by device --" -msgstr "" - -msgid "-- match by label --" -msgstr "" - -msgid "-- match by uuid --" -msgstr "" - -msgid "-- please select --" -msgstr "" - -msgid "1 Minute Load:" -msgstr "1分鐘負載" - -msgid "15 Minute Load:" -msgstr "15分鐘負載" - -msgid "4-character hexadecimal ID" -msgstr "" - -msgid "464XLAT (CLAT)" -msgstr "" - -msgid "5 Minute Load:" -msgstr "5分鐘負載" - -msgid "6-octet identifier as a hex string - no colons" -msgstr "" - -msgid "802.11r Fast Transition" -msgstr "" - -msgid "802.11w Association SA Query maximum timeout" -msgstr "" - -msgid "802.11w Association SA Query retry timeout" -msgstr "" - -msgid "802.11w Management Frame Protection" -msgstr "" - -msgid "802.11w maximum timeout" -msgstr "" - -msgid "802.11w retry timeout" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "DNS query port" -msgstr "DNS 查詢通訊埠" - -msgid "DNS server port" -msgstr "DNS 伺服器通訊埠" - -msgid "" -"DNS servers will be queried in the " -"order of the resolvfile" -msgstr "將會按照指定的順序查詢DNS" - -msgid "ESSID" -msgstr "ESSID" - -msgid "IPv4-Address" -msgstr "IPv4-位置" - -msgid "IPv4-Gateway" -msgstr "IPv4-閘道" - -msgid "IPv4-Netmask" -msgstr "IPv4-遮罩" - -msgid "" -"IPv6-Address or Network " -"(CIDR)" -msgstr "" -"IPv6-位置或網路(CIDR)" - -msgid "IPv6-Gateway" -msgstr "IPv6-閘道" - -msgid "IPv6-Suffix (hex)" -msgstr "" - -msgid "LED Configuration" -msgstr "LED 設定" - -msgid "LED Name" -msgstr "LED 名稱" - -msgid "MAC-Address" -msgstr "MAC-位置" - -msgid "DUID" -msgstr "" - -msgid "" -"Max. DHCP leases" -msgstr "" -"最大 DHCP 分配數量" - -msgid "" -"Max. EDNS0 packet size" -msgstr "" -"最大 EDNS0 封包大小" - -msgid "Max. concurrent queries" -msgstr "最大並發查詢數" - -msgid "" -"
    Note: you need to manually restart the cron service if the crontab file " -"was empty before editing." -msgstr "" - -msgid "A43C + J43 + A43" -msgstr "" - -msgid "A43C + J43 + A43 + V43" -msgstr "" - -msgid "ADSL" -msgstr "" - -msgid "ANSI T1.413" -msgstr "" - -msgid "APN" -msgstr "APN" - -msgid "ARP retry threshold" -msgstr "ARP重試門檻" - -msgid "ATM (Asynchronous Transfer Mode)" -msgstr "" - -msgid "ATM Bridges" -msgstr "ATM橋接" - -msgid "ATM Virtual Channel Identifier (VCI)" -msgstr "ATM虛擬通道識別(VCI)" - -msgid "ATM Virtual Path Identifier (VPI)" -msgstr "ATM虛擬路徑識別(VPI)" - -msgid "" -"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual " -"Linux network interfaces which can be used in conjunction with DHCP or PPP " -"to dial into the provider network." -msgstr "" -"ATM橋接是以AAL5協定封裝乙太網路如同虛擬Linux網路界面卡,用於連接DHCP或PPP來撥" -"號連接到網際網路。" - -msgid "ATM device number" -msgstr "ATM裝置號碼" - -msgid "ATU-C System Vendor ID" -msgstr "" - -msgid "Access Concentrator" -msgstr "接入集線器" - -msgid "Access Point" -msgstr "存取點 (AP)" - -msgid "Actions" -msgstr "動作" - -msgid "Active IPv4-Routes" -msgstr "啟用 IPv4-路由" - -msgid "Active IPv6-Routes" -msgstr "啟用 IPv6-路由" - -msgid "Active Connections" -msgstr "啟用連線" - -msgid "Active DHCP Leases" -msgstr "已分配的DHCP租用" - -msgid "Active DHCPv6 Leases" -msgstr "已分配的DHCPv6租用" - -msgid "Ad-Hoc" -msgstr "Ad-Hoc" - -msgid "Add" -msgstr "增加" - -msgid "Add local domain suffix to names served from hosts files" -msgstr "添加本地網域微碼到HOSTS檔案" - -msgid "Add new interface..." -msgstr "增加新界面" - -msgid "Additional Hosts files" -msgstr "額外的HOST檔案" - -msgid "Additional servers file" -msgstr "" - -msgid "Address" -msgstr "位置" - -msgid "Address to access local relay bridge" -msgstr "存取本地中繼橋接位置" - -msgid "Administration" -msgstr "管理" - -msgid "Advanced Settings" -msgstr "進階設定" - -msgid "Aggregate Transmit Power(ACTATP)" -msgstr "" - -msgid "Alert" -msgstr "警示" - -msgid "Alias Interface" -msgstr "" - -msgid "Alias of \"%s\"" -msgstr "" - -msgid "All Servers" -msgstr "" - -msgid "" -"Allocate IP addresses sequentially, starting from the lowest available " -"address" -msgstr "" - -msgid "Allocate IP sequentially" -msgstr "" - -msgid "Allow SSH password authentication" -msgstr "允許 SSH 密碼驗證" - -msgid "Allow AP mode to disconnect STAs based on low ACK condition" -msgstr "" - -msgid "Allow all except listed" -msgstr "僅允許列表外" - -msgid "Allow legacy 802.11b rates" -msgstr "" - -msgid "Allow listed only" -msgstr "僅允許列表內" - -msgid "Allow localhost" -msgstr "允許本機" - -msgid "Allow remote hosts to connect to local SSH forwarded ports" -msgstr "允許遠端主機連接到本機SSH轉送通訊埠" - -msgid "Allow root logins with password" -msgstr "允許root登入" - -msgid "Allow the root user to login with password" -msgstr "允許 root 使用者登入" - -msgid "" -"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services" -msgstr "允許127.0.0.0/8範圍內的上游回應,例如:RBL服務" - -msgid "Allowed IPs" -msgstr "" - -msgid "Always announce default router" -msgstr "" - -msgid "" -"Always use 40MHz channels even if the secondary channel overlaps. Using this " -"option does not comply with IEEE 802.11n-2009!" -msgstr "" - -msgid "Annex" -msgstr "" - -msgid "Annex A + L + M (all)" -msgstr "" - -msgid "Annex A G.992.1" -msgstr "" - -msgid "Annex A G.992.2" -msgstr "" - -msgid "Annex A G.992.3" -msgstr "" - -msgid "Annex A G.992.5" -msgstr "" - -msgid "Annex B (all)" -msgstr "" - -msgid "Annex B G.992.1" -msgstr "" - -msgid "Annex B G.992.3" -msgstr "" - -msgid "Annex B G.992.5" -msgstr "" - -msgid "Annex J (all)" -msgstr "" - -msgid "Annex L G.992.3 POTS 1" -msgstr "" - -msgid "Annex M (all)" -msgstr "" - -msgid "Annex M G.992.3" -msgstr "" - -msgid "Annex M G.992.5" -msgstr "" - -msgid "Announce as default router even if no public prefix is available." -msgstr "" - -msgid "Announced DNS domains" -msgstr "" - -msgid "Announced DNS servers" -msgstr "" - -msgid "Anonymous Identity" -msgstr "" - -msgid "Anonymous Mount" -msgstr "" - -msgid "Anonymous Swap" -msgstr "" - -msgid "Antenna 1" -msgstr "天線 1" - -msgid "Antenna 2" -msgstr "天線 2" - -msgid "Antenna Configuration" -msgstr "天線設定" - -msgid "Any zone" -msgstr "任意區域" - -msgid "Apply request failed with status %h" -msgstr "" - -msgid "Apply unchecked" -msgstr "" - -msgid "Architecture" -msgstr "" - -msgid "" -"Assign a part of given length of every public IPv6-prefix to this interface" -msgstr "" - -msgid "Assign interfaces..." -msgstr "分配界面..." - -msgid "" -"Assign prefix parts using this hexadecimal subprefix ID for this interface." -msgstr "" - -msgid "Associated Stations" -msgstr "已連接站點" - -msgid "Associations" -msgstr "" - -msgid "Auth Group" -msgstr "" - -msgid "Authentication" -msgstr "認證" - -msgid "Authentication Type" -msgstr "" - -msgid "Authoritative" -msgstr "授權" - -msgid "Authorization Required" -msgstr "需要授權" - -msgid "Auto Refresh" -msgstr "自動更新" - -msgid "Automatic" -msgstr "" - -msgid "Automatic Homenet (HNCP)" -msgstr "" - -msgid "Automatically check filesystem for errors before mounting" -msgstr "" - -msgid "Automatically mount filesystems on hotplug" -msgstr "" - -msgid "Automatically mount swap on hotplug" -msgstr "" - -msgid "Automount Filesystem" -msgstr "" - -msgid "Automount Swap" -msgstr "" - -msgid "Available" -msgstr "可用" - -msgid "Available packages" -msgstr "可用軟體包" - -msgid "Average:" -msgstr "平均:" - -msgid "B43 + B43C" -msgstr "" - -msgid "B43 + B43C + V43" -msgstr "" - -msgid "BR / DMR / AFTR" -msgstr "" - -msgid "BSSID" -msgstr "BSSID" - -msgid "Back" -msgstr "返回" - -msgid "Back to Overview" -msgstr "返回至總覽" - -msgid "Back to configuration" -msgstr "返回至設定" - -msgid "Back to overview" -msgstr "返回至總覽" - -msgid "Back to scan results" -msgstr "返回至掃描結果" - -msgid "Backup" -msgstr "備份" - -msgid "Backup / Flash Firmware" -msgstr "備份/升級韌體" - -msgid "Backup file list" -msgstr "備份檔列表" - -msgid "Bad address specified!" -msgstr "指定了錯誤的位置!" - -msgid "Band" -msgstr "" - -msgid "Beacon Interval" -msgstr "" - -msgid "" -"Below is the determined list of files to backup. It consists of changed " -"configuration files marked by opkg, essential base files and the user " -"defined backup patterns." -msgstr "" -"下面是待備份的檔案清單。包含了更改的設定檔案、必要的基本檔案和使用者自訂的備" -"份檔案" - -msgid "Bind interface" -msgstr "" - -msgid "Bind only to specific interfaces rather than wildcard address." -msgstr "" - -msgid "Bind the tunnel to this interface (optional)." -msgstr "" - -msgid "Bitrate" -msgstr "傳輸速率" - -msgid "Bogus NX Domain Override" -msgstr "忽略NX網域解析" - -msgid "Bridge" -msgstr "橋接" - -msgid "Bridge interfaces" -msgstr "橋接介面" - -msgid "Bridge unit number" -msgstr "橋接單位號碼" - -msgid "Bring up on boot" -msgstr "開機自動執行" - -msgid "Broadcom 802.11%s Wireless Controller" -msgstr "Broadcom 802.11%s 無線控制器" - -msgid "Broadcom BCM%04x 802.11 Wireless Controller" -msgstr "Broadcom BCM%04x 802.11 無線控制器" - -msgid "Buffered" -msgstr "已緩衝" - -msgid "" -"Build/distribution specific feed definitions. This file will NOT be " -"preserved in any sysupgrade." -msgstr "" - -msgid "CA certificate; if empty it will be saved after the first connection." -msgstr "" - -msgid "CPU usage (%)" -msgstr "CPU 使用率 (%)" - -msgid "Call failed" -msgstr "" - -msgid "Cancel" -msgstr "取消" - -msgid "Category" -msgstr "" - -msgid "Chain" -msgstr "鏈" - -msgid "Changes" -msgstr "待修改" - -msgid "Changes applied." -msgstr "修改已套用" - -msgid "Changes have been reverted." -msgstr "" - -msgid "Changes the administrator password for accessing the device" -msgstr "修改管理員密碼" - -msgid "Channel" -msgstr "頻道" - -msgid "" -"Channel %d is not available in the %s regulatory domain and has been auto-" -"adjusted to %d." -msgstr "" - -msgid "Check" -msgstr "檢查" - -msgid "Check filesystems before mount" -msgstr "" - -msgid "Check this option to delete the existing networks from this radio." -msgstr "" - -msgid "Checksum" -msgstr "效驗碼" - -msgid "" -"Choose the firewall zone you want to assign to this interface. Select " -"unspecified to remove the interface from the associated zone or " -"fill out the create field to define a new zone and attach the " -"interface to it." -msgstr "" -"選擇您要指定給這介面的防火牆區. 撿選unspecified以便從指定區域除這個" -"介面或者填寫create欄以便定義附加這個介面到一個新的區域上." - -msgid "" -"Choose the network(s) you want to attach to this wireless interface or fill " -"out the create field to define a new network." -msgstr "" -"選擇您要附加到無線網路介面的多個網路或者填寫create 以便定義一個新的" -"網路." - -msgid "Cipher" -msgstr "暗號" - -msgid "Cisco UDP encapsulation" -msgstr "" - -msgid "" -"Click \"Generate archive\" to download a tar archive of the current " -"configuration files." -msgstr "按下\"壓縮檔製作\"就能下載目前設定檔的tar格式的壓縮." - -msgid "Client" -msgstr "用戶端" - -msgid "Client ID to send when requesting DHCP" -msgstr "當要求DHCP時要傳送的用戶識別碼ID" - -msgid "" -"Close inactive connection after the given amount of seconds, use 0 to " -"persist connection" -msgstr "幾秒後關閉閒置的連線, 打0代表永遠連線" - -msgid "Close list..." -msgstr "關閉清單中..." - -msgid "Collecting data..." -msgstr "收集資料中..." - -msgid "Command" -msgstr "指令" - -msgid "Common Configuration" -msgstr "一般設定" - -msgid "" -"Complicates key reinstallation attacks on the client side by disabling " -"retransmission of EAPOL-Key frames that are used to install keys. This " -"workaround might cause interoperability issues and reduced robustness of key " -"negotiation especially in environments with heavy traffic load." -msgstr "" - -msgid "Configuration" -msgstr "設定" - -msgid "Configuration failed" -msgstr "" - -msgid "Configuration files will be kept." -msgstr "設定檔將被存檔" - -msgid "Configuration has been applied." -msgstr "" - -msgid "Configuration has been rolled back!" -msgstr "" - -msgid "Confirmation" -msgstr "再確認" - -msgid "Connect" -msgstr "連線" - -msgid "Connected" -msgstr "已連線" - -msgid "Connection Limit" -msgstr "連線限制" - -msgid "Connection attempt failed" -msgstr "" - -msgid "Connections" -msgstr "連線數" - -msgid "" -"Could not regain access to the device after applying the configuration " -"changes. You might need to reconnect if you modified network related " -"settings such as the IP address or wireless security credentials." -msgstr "" - -msgid "Country" -msgstr "國別" - -msgid "Country Code" -msgstr "國別碼" - -msgid "Cover the following interface" -msgstr "覆蓋下列介面" - -msgid "Cover the following interfaces" -msgstr "覆蓋下列這些介面" - -msgid "Create / Assign firewall-zone" -msgstr "建立/指定防火牆作用區" - -msgid "Create Interface" -msgstr "建立介面" - -msgid "Create a bridge over multiple interfaces" -msgstr "在多個介面上建立橋接" - -msgid "Critical" -msgstr "緊急" - -msgid "Cron Log Level" -msgstr "Cron的日誌級別" - -msgid "Custom Interface" -msgstr "自訂介面" - -msgid "Custom delegated IPv6-prefix" -msgstr "" - -msgid "" -"Custom feed definitions, e.g. private feeds. This file can be preserved in a " -"sysupgrade." -msgstr "" - -msgid "Custom feeds" -msgstr "" - -msgid "" -"Custom files (certificates, scripts) may remain on the system. To prevent " -"this, perform a factory-reset first." -msgstr "" - -msgid "" -"Customizes the behaviour of the device LEDs if possible." -msgstr "" -"如果可以的話,自定這個設備的動作 LEDs ." - -msgid "DHCP Server" -msgstr "DHCP伺服器" - -msgid "DHCP and DNS" -msgstr "DHCP 和 DNS" - -msgid "DHCP client" -msgstr "DHCP用戶端" - -msgid "DHCP-Options" -msgstr "DHCP選項" - -msgid "DHCPv6 client" -msgstr "" - -msgid "DHCPv6-Mode" -msgstr "" - -msgid "DHCPv6-Service" -msgstr "" - -msgid "DNS" -msgstr "網域名稱伺服器" - -msgid "DNS forwardings" -msgstr "DNS封包轉發" - -msgid "DNS-Label / FQDN" -msgstr "" - -msgid "DNSSEC" -msgstr "" - -msgid "DNSSEC check unsigned" -msgstr "" - -msgid "DPD Idle Timeout" -msgstr "" - -msgid "DS-Lite AFTR address" -msgstr "" - -msgid "DSL" -msgstr "" - -msgid "DSL Status" -msgstr "" - -msgid "DSL line mode" -msgstr "" - -msgid "DTIM Interval" -msgstr "" - -msgid "DUID" -msgstr "DHCP獨立式別碼DUID " - -msgid "Data Rate" -msgstr "" - -msgid "Debug" -msgstr "除錯" - -msgid "Default %d" -msgstr "預設 %d" - -msgid "Default gateway" -msgstr "預設匝道器" - -msgid "Default is stateless + stateful" -msgstr "" - -msgid "Default state" -msgstr "預設狀態" - -msgid "Define a name for this network." -msgstr "自訂這個網路名稱" - -msgid "" -"Define additional DHCP options, for example " -"\"6,192.168.2.1,192.168.2.2\" which advertises different DNS " -"servers to clients." -msgstr "" -"定義額外的DHCP選項,例如\"6,192.168.2.1,192.168.2.2\"將會通告不同" -"的DNS伺服器到客戶端." - -msgid "Delete" -msgstr "刪除" - -msgid "Delete this network" -msgstr "刪除這個網路" - -msgid "Delivery Traffic Indication Message Interval" -msgstr "" - -msgid "Description" -msgstr "描述" - -msgid "Design" -msgstr "設計規劃" - -msgid "Destination" -msgstr "目的地" - -msgid "Device" -msgstr "設備" - -msgid "Device Configuration" -msgstr "設定設備" - -msgid "Device is rebooting..." -msgstr "" - -msgid "Device unreachable!" -msgstr "" - -msgid "Device unreachable! Still waiting for device..." -msgstr "" - -msgid "Diagnostics" -msgstr "診斷" - -msgid "Dial number" -msgstr "" - -msgid "Directory" -msgstr "目錄" - -msgid "Disable" -msgstr "關閉" - -msgid "" -"Disable DHCP for " -"this interface." -msgstr "" -" 對這介面關閉 DHCP" - -msgid "Disable DNS setup" -msgstr "關閉DNS設置" - -msgid "Disable Encryption" -msgstr "" - -msgid "Disable this network" -msgstr "" - -msgid "Disabled" -msgstr "關閉" - -msgid "Disabled (default)" -msgstr "" - -msgid "Disassociate On Low Acknowledgement" -msgstr "" - -msgid "Discard upstream RFC1918 responses" -msgstr "丟棄上游RFC1918 虛擬IP網路的回應" - -msgid "Disconnection attempt failed" -msgstr "" - -msgid "Dismiss" -msgstr "" - -msgid "Displaying only packages containing" -msgstr "僅顯示內含的軟體" - -msgid "Distance Optimization" -msgstr "最佳化距離" - -msgid "Distance to farthest network member in meters." -msgstr "到最遠的網路距離以米表示." - -msgid "Distribution feeds" -msgstr "" - -msgid "Diversity" -msgstr "差異" - -msgid "" -"Dnsmasq is a combined DHCP-Server and DNS-" -"Forwarder for NAT " -"firewalls" -msgstr "" -" Dnsmasq 是組合DHCP-伺服器 和 DNS-轉發給 NAT 防火牆用" - -msgid "Do not cache negative replies, e.g. for not existing domains" -msgstr "不快取拒絕的回應,例如.不存在的網域" - -msgid "Do not forward requests that cannot be answered by public name servers" -msgstr "對不被公用名稱伺服器回應的請求不轉發" - -msgid "Do not forward reverse lookups for local networks" -msgstr "對本地網域不轉發反解析鎖定" - -msgid "Domain required" -msgstr "網域必要的" - -msgid "Domain whitelist" -msgstr "網域白名單" - -msgid "Don't Fragment" -msgstr "" - -msgid "" -"Don't forward DNS-Requests without " -"DNS-Name" -msgstr "" -"若沒 DNS-名稱的話,不要轉發 DNS-請求" - -msgid "Down" -msgstr "" - -msgid "Download and install package" -msgstr "下載並安裝軟體包" - -msgid "Download backup" -msgstr "下載備份檔" - -msgid "Downstream SNR offset" -msgstr "" - -msgid "Dropbear Instance" -msgstr "Dropbear SSH例子" - -msgid "" -"Dropbear offers SSH network shell access " -"and an integrated SCP server" -msgstr "" -"Dropbear 提供 SSH 網路shell命令存取和一個" -"整合的 SCP 伺服器" - -msgid "Dual-Stack Lite (RFC6333)" -msgstr "" - -msgid "Dynamic DHCP" -msgstr "動態 DHCP" - -msgid "Dynamic tunnel" -msgstr "動態隧道" - -msgid "" -"Dynamically allocate DHCP addresses for clients. If disabled, only clients " -"having static leases will be served." -msgstr "幫用戶端動態發配DHCP位址. 假如關閉的話,僅有有靜態位址的用戶端能被服務" - -msgid "EA-bits length" -msgstr "" - -msgid "EAP-Method" -msgstr "EAP協定驗證方式" - -msgid "Edit" -msgstr "編輯" - -msgid "" -"Edit the raw configuration data above to fix any error and hit \"Save\" to " -"reload the page." -msgstr "" - -msgid "Edit this interface" -msgstr "修改這個介面" - -msgid "Edit this network" -msgstr "修改這個網路" - -msgid "Emergency" -msgstr "緊急" - -msgid "Enable" -msgstr "啟用" - -msgid "" -"Enable IGMP " -"snooping" -msgstr "" - -msgid "Enable STP" -msgstr "啟用 STP" - -msgid "Enable HE.net dynamic endpoint update" -msgstr "啟用HE.net服務代管動態更新" - -msgid "Enable IPv6 negotiation" -msgstr "" - -msgid "Enable IPv6 negotiation on the PPP link" -msgstr "啟用PPP連結上的IPv6交涉" - -msgid "Enable Jumbo Frame passthrough" -msgstr "啟用超大訊框透穿" - -msgid "Enable NTP client" -msgstr "起用NTP用戶功能" - -msgid "Enable Single DES" -msgstr "" - -msgid "Enable TFTP server" -msgstr "啟用TFTP伺服器" - -msgid "Enable VLAN functionality" -msgstr "啟用VLAN功能" - -msgid "Enable WPS pushbutton, requires WPA(2)-PSK" -msgstr "" - -msgid "Enable key reinstallation (KRACK) countermeasures" -msgstr "" - -msgid "Enable learning and aging" -msgstr "啟用智慧學習功能" - -msgid "Enable mirroring of incoming packets" -msgstr "" - -msgid "Enable mirroring of outgoing packets" -msgstr "" - -msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets." -msgstr "" - -msgid "Enable this mount" -msgstr "啟用掛載點" - -msgid "Enable this network" -msgstr "" - -msgid "Enable this swap" -msgstr "啟用swap功能" - -msgid "Enable/Disable" -msgstr "啟用/關閉" - -msgid "Enabled" -msgstr "啟用" - -msgid "Enables IGMP snooping on this bridge" -msgstr "" - -msgid "" -"Enables fast roaming among access points that belong to the same Mobility " -"Domain" -msgstr "" - -msgid "Enables the Spanning Tree Protocol on this bridge" -msgstr "在橋接器上啟用802.1d Spanning Tree協定" - -msgid "Encapsulation mode" -msgstr "封裝模式" - -msgid "Encryption" -msgstr "加密" - -msgid "Endpoint Host" -msgstr "" - -msgid "Endpoint Port" -msgstr "" - -msgid "Enter custom value" -msgstr "" - -msgid "Enter custom values" -msgstr "" - -msgid "Erasing..." -msgstr "刪除中..." - -msgid "Error" -msgstr "錯誤" - -msgid "Errored seconds (ES)" -msgstr "" - -msgid "Ethernet Adapter" -msgstr "乙太網路卡" - -msgid "Ethernet Switch" -msgstr "乙太交換器" - -msgid "Exclude interfaces" -msgstr "" - -msgid "Expand hosts" -msgstr "延伸主機" - -msgid "Expires" -msgstr "過期" - -#, fuzzy -msgid "" -"Expiry time of leased addresses, minimum is 2 minutes (2m)." -msgstr "釋放位址的過期週期,最少兩分鐘 (2m)." - -msgid "External" -msgstr "" - -msgid "External R0 Key Holder List" -msgstr "" - -msgid "External R1 Key Holder List" -msgstr "" - -msgid "External system log server" -msgstr "外部系統日誌伺服器" - -msgid "External system log server port" -msgstr "外部系統日誌伺服器埠號" - -msgid "External system log server protocol" -msgstr "" - -msgid "Extra SSH command options" -msgstr "" - -msgid "FT over DS" -msgstr "" - -msgid "FT over the Air" -msgstr "" - -msgid "FT protocol" -msgstr "" - -msgid "Failed to confirm apply within %ds, waiting for rollback…" -msgstr "" - -msgid "File" -msgstr "檔案" - -msgid "Filename of the boot image advertised to clients" -msgstr "開機影像檔通知給用戶端" - -msgid "Filesystem" -msgstr "檔案系統" - -msgid "Filter" -msgstr "過濾器" - -msgid "Filter private" -msgstr "私人過濾器" - -msgid "Filter useless" -msgstr "無用過濾器" - -msgid "Finalizing failed" -msgstr "" - -msgid "" -"Find all currently attached filesystems and swap and replace configuration " -"with defaults based on what was detected" -msgstr "" - -msgid "Find and join network" -msgstr "搜尋並加入網路" - -msgid "Find package" -msgstr "搜尋軟體包" - -msgid "Finish" -msgstr "完成" - -msgid "Firewall" -msgstr "防火牆" - -msgid "Firewall Mark" -msgstr "" - -msgid "Firewall Settings" -msgstr "防火牆設定" - -msgid "Firewall Status" -msgstr "防火牆狀況" - -msgid "Firmware File" -msgstr "" - -msgid "Firmware Version" -msgstr "防火牆版本" - -msgid "Fixed source port for outbound DNS queries" -msgstr "外發DNS請求的固定埠號" - -msgid "Flash Firmware" -msgstr "韌體更新" - -msgid "Flash image..." -msgstr "更新映像檔中..." - -msgid "Flash new firmware image" -msgstr "更新新版韌體映像檔" - -msgid "Flash operations" -msgstr "執行更新" - -msgid "Flashing..." -msgstr "更新中..." - -msgid "Force" -msgstr "強制" - -msgid "Force 40MHz mode" -msgstr "" - -msgid "Force CCMP (AES)" -msgstr "強制CCMP (AES)加密" - -msgid "Force DHCP on this network even if another server is detected." -msgstr "在網路上即使偵測到其它伺服器也強制採用DHCP的設定" - -msgid "Force TKIP" -msgstr "強制TKIP加密" - -msgid "Force TKIP and CCMP (AES)" -msgstr "強制TKIP+CCMP (AES)加密" - -msgid "Force link" -msgstr "" - -msgid "Force use of NAT-T" -msgstr "" - -msgid "Form token mismatch" -msgstr "" - -msgid "Forward DHCP traffic" -msgstr "轉發DHCP流量" - -msgid "Forward Error Correction Seconds (FECS)" -msgstr "" - -msgid "Forward broadcast traffic" -msgstr "轉發廣播流量" - -msgid "Forward mesh peer traffic" -msgstr "" - -msgid "Forwarding mode" -msgstr "轉發模式" - -msgid "Fragmentation Threshold" -msgstr "分片閥值" - -msgid "Frame Bursting" -msgstr "訊框爆速" - -msgid "Free" -msgstr "空閒" - -msgid "Free space" -msgstr "剩餘空間" - -msgid "" -"Further information about WireGuard interfaces and peers at wireguard.com." -msgstr "" - -msgid "GHz" -msgstr "GHz" - -msgid "GPRS only" -msgstr "僅用GPRS" - -msgid "Gateway" -msgstr "匝道器" - -msgid "Gateway address is invalid" -msgstr "" - -msgid "Gateway ports" -msgstr "匝道器埠號" - -msgid "General Settings" -msgstr "一般設定" - -msgid "General Setup" -msgstr "一般設置" - -msgid "General options for opkg" -msgstr "" - -msgid "Generate Config" -msgstr "" - -msgid "Generate PMK locally" -msgstr "" - -msgid "Generate archive" -msgstr "製作壓縮檔" - -msgid "Generic 802.11%s Wireless Controller" -msgstr "通用 802.11%s 無線控制器" - -msgid "Given password confirmation did not match, password not changed!" -msgstr "鍵入的密碼不吻合,密碼將不變更" - -msgid "Global Settings" -msgstr "" - -msgid "Global network options" -msgstr "" - -msgid "Go to password configuration..." -msgstr "到密碼設定頁" - -msgid "Go to relevant configuration page" -msgstr "到相應設定頁" - -msgid "Group Password" -msgstr "" - -msgid "Guest" -msgstr "" - -msgid "HE.net password" -msgstr " HE.net密碼" - -msgid "HE.net username" -msgstr "" - -msgid "HT mode (802.11n)" -msgstr "" - -msgid "Hang Up" -msgstr "斷線" - -msgid "Header Error Code Errors (HEC)" -msgstr "" - -msgid "" -"Here you can configure the basic aspects of your device like its hostname or " -"the timezone." -msgstr "在這設置基本樣貌類似像主機名稱或者時區..等" - -msgid "" -"Here you can paste public SSH-Keys (one per line) for SSH public-key " -"authentication." -msgstr "在這裡貼上公用SSH-Keys (每行一個)以便驗證" - -msgid "Hide ESSID" -msgstr "隱藏 ESSID" - -msgid "Host" -msgstr "" - -msgid "Host entries" -msgstr "主機項目" - -msgid "Host expiry timeout" -msgstr "過期主機" - -msgid "Host-IP or Network" -msgstr "主機-IP 或網路" - -msgid "Host-Uniq tag content" -msgstr "" - -msgid "Hostname" -msgstr "主機名稱" - -msgid "Hostname to send when requesting DHCP" -msgstr "當請求DHCP服務時傳送的主機名稱" - -msgid "Hostnames" -msgstr "主機名稱" - -msgid "Hybrid" -msgstr "" - -msgid "IKE DH Group" -msgstr "" - -msgid "IP Addresses" -msgstr "" - -msgid "IP address" -msgstr "IP位址" - -msgid "IP address in invalid" -msgstr "" - -msgid "IP address is missing" -msgstr "" - -msgid "IPv4" -msgstr "IPv4版" - -msgid "IPv4 Firewall" -msgstr "IPv4防火牆" - -msgid "IPv4 Upstream" -msgstr "" - -msgid "IPv4 address" -msgstr "IPv4位址" - -msgid "IPv4 and IPv6" -msgstr "IPv4和IPv6" - -msgid "IPv4 assignment length" -msgstr "" - -msgid "IPv4 broadcast" -msgstr "IPv4廣播" - -msgid "IPv4 gateway" -msgstr "IPv4匝道器" - -msgid "IPv4 netmask" -msgstr "IPv4網路遮罩" - -msgid "IPv4 only" -msgstr "僅用IPv4" - -msgid "IPv4 prefix" -msgstr "" - -msgid "IPv4 prefix length" -msgstr "IPv4前綴長度" - -msgid "IPv4-Address" -msgstr "IPv4-位址" - -msgid "IPv4-in-IPv4 (RFC2003)" -msgstr "" - -msgid "IPv6" -msgstr "IPv6版" - -msgid "IPv6 Firewall" -msgstr "IPv6防火牆" - -msgid "IPv6 Neighbours" -msgstr "" - -msgid "IPv6 Settings" -msgstr "" - -msgid "IPv6 ULA-Prefix" -msgstr "" - -msgid "IPv6 Upstream" -msgstr "" - -msgid "IPv6 address" -msgstr "IPv6位址" - -msgid "IPv6 assignment hint" -msgstr "" - -msgid "IPv6 assignment length" -msgstr "" - -msgid "IPv6 gateway" -msgstr "IPv6匝道器" - -msgid "IPv6 only" -msgstr "僅用IPv6" - -msgid "IPv6 prefix" -msgstr "IPv6字首" - -msgid "IPv6 prefix length" -msgstr "IPv6字首長度" - -msgid "IPv6 routed prefix" -msgstr "" - -msgid "IPv6 suffix" -msgstr "" - -msgid "IPv6-Address" -msgstr "IPv6-位址" - -msgid "IPv6-PD" -msgstr "" - -msgid "IPv6-in-IPv4 (RFC4213)" -msgstr "IPv6包覆在IPv4內(RFC4213)" - -msgid "IPv6-over-IPv4 (6rd)" -msgstr "IPv6凌駕IPv4外(第6版)" - -msgid "IPv6-over-IPv4 (6to4)" -msgstr "IPv6凌駕IPv4外(6轉4)" - -msgid "Identity" -msgstr "特性" - -msgid "If checked, 1DES is enabled" -msgstr "" - -msgid "If checked, encryption is disabled" -msgstr "" - -msgid "" -"If specified, mount the device by its UUID instead of a fixed device node" -msgstr "假若指定的話, 掛載設備的UUID獨立設備識別碼取代固定的設備節點" - -msgid "" -"If specified, mount the device by the partition label instead of a fixed " -"device node" -msgstr "假若指定的話, 掛載設備的分割標籤取代固定的設備節點" - -msgid "If unchecked, no default route is configured" -msgstr "如果沒打勾點選, 將不會設置預設路由" - -msgid "If unchecked, the advertised DNS server addresses are ignored" -msgstr "如果沒打勾點選, 公告的DNS伺服器位址將被忽視" - -msgid "" -"If your physical memory is insufficient unused data can be temporarily " -"swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very " -"slow process as the swap-device cannot be accessed with the high datarates " -"of the RAM." -msgstr "" -"如果您的物理內存不足時,未使用的數據可以是暫時交換到導致更高的交換設備量的可用" -"RAM內.請注意,交換數據是一個非常" -"緩慢的過程,作為交換裝置不能用高數據速率訪問該RAM" - -msgid "Ignore /etc/hosts" -msgstr "" - -msgid "Ignore interface" -msgstr "被忽視的介面" - -msgid "Ignore resolve file" -msgstr "被忽視的解析檔" - -msgid "Image" -msgstr "映像檔" - -msgid "In" -msgstr "輸入" - -msgid "" -"In order to prevent unauthorized access to the system, your request has been " -"blocked. Click \"Continue »\" below to return to the previous page." -msgstr "" - -msgid "Inactivity timeout" -msgstr "閒置過期" - -msgid "Inbound:" -msgstr "輸入" - -msgid "Info" -msgstr "訊息" - -msgid "Initialization failure" -msgstr "" - -msgid "Initscript" -msgstr "初始化腳本" - -msgid "Initscripts" -msgstr "初始化腳本" - -msgid "Install" -msgstr "安裝" - -msgid "Install iputils-traceroute6 for IPv6 traceroute" -msgstr "" - -msgid "Install package %q" -msgstr "安裝軟體包 %q" - -msgid "Install protocol extensions..." -msgstr "安裝延伸協定中..." - -msgid "Installed packages" -msgstr "安裝軟體包" - -msgid "Interface" -msgstr "介面" - -msgid "Interface %q device auto-migrated from %q to %q." -msgstr "" - -msgid "Interface Configuration" -msgstr "介面設定" - -msgid "Interface Overview" -msgstr "介面預覽" - -msgid "Interface is reconnecting..." -msgstr "介面重連" - -msgid "Interface name" -msgstr "" - -msgid "Interface not present or not connected yet." -msgstr "介面尚未出線或者還沒連上" - -msgid "Interfaces" -msgstr "介面" - -msgid "Internal" -msgstr "" - -msgid "Internal Server Error" -msgstr "內部伺服器發生錯誤" - -msgid "Invalid" -msgstr "無效" - -msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed." -msgstr "輸入的VLAN ID無效僅有介於 %d 和 %d的被允許" - -msgid "Invalid VLAN ID given! Only unique IDs are allowed" -msgstr "打入的是不正確的VLAN ID!僅有獨一無二的IDs被允許" - -msgid "Invalid username and/or password! Please try again." -msgstr "不正確的用戶名稱和/或者密碼!請再試一次." - -msgid "Isolate Clients" -msgstr "" - -#, fuzzy -msgid "" -"It appears that you are trying to flash an image that does not fit into the " -"flash memory, please verify the image file!" -msgstr "它顯示您正嘗試更新不適用於這個flash記憶體的映像檔,請檢查確認這個映像檔" - -msgid "JavaScript required!" -msgstr "需要Java腳本" - -msgid "Join Network" -msgstr "加入網路" - -msgid "Join Network: Wireless Scan" -msgstr "加入網路:無線網路掃描" - -msgid "Joining Network: %q" -msgstr "" - -msgid "Keep settings" -msgstr "保持設定值" - -msgid "Kernel Log" -msgstr "核心日誌" - -msgid "Kernel Version" -msgstr "核心版本" - -msgid "Key" -msgstr "鑰匙" - -msgid "Key #%d" -msgstr "鑰匙 #%d" - -msgid "Kill" -msgstr "刪除" - -msgid "L2TP" -msgstr "L2TP" - -msgid "L2TP Server" -msgstr "L2TP伺服器" - -msgid "LCP echo failure threshold" -msgstr "LCP協定呼叫失敗次數門檻" - -msgid "LCP echo interval" -msgstr "LCP協定呼叫間隔" - -msgid "LLC" -msgstr "LLC邏輯鏈結控制層" - -msgid "Label" -msgstr "標籤" - -msgid "Language" -msgstr "語言" - -msgid "Language and Style" -msgstr "語言和風格" - -msgid "Latency" -msgstr "" - -msgid "Leaf" -msgstr "" - -msgid "Lease time" -msgstr "" - -msgid "Lease validity time" -msgstr "租賃有效時間" - -msgid "Leasefile" -msgstr "租賃檔案" - -msgid "Leasetime remaining" -msgstr "租賃保留時間" - -msgid "Leave empty to autodetect" -msgstr "保持空白以便自動偵測" - -msgid "Leave empty to use the current WAN address" -msgstr "保持空白以便採用現今的寬頻位址" - -msgid "Legend:" -msgstr "圖例:" - -msgid "Limit" -msgstr "限制" - -msgid "Limit DNS service to subnets interfaces on which we are serving DNS." -msgstr "" - -msgid "Limit listening to these interfaces, and loopback." -msgstr "" - -msgid "Line Attenuation (LATN)" -msgstr "" - -msgid "Line Mode" -msgstr "" - -msgid "Line State" -msgstr "" - -msgid "Line Uptime" -msgstr "" - -msgid "Link On" -msgstr "鏈接" - -msgid "" -"List of DNS servers to forward " -"requests to" -msgstr "列出 DNS 伺服器以便轉發請求" - -msgid "" -"List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-" -"Identifier,128-bit key as hex string.
    This list is used to map R0KH-ID " -"(NAS Identifier) to a destination MAC address when requesting PMK-R1 key " -"from the R0KH that the STA used during the Initial Mobility Domain " -"Association." -msgstr "" - -msgid "" -"List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID " -"as 6 octets with colons,128-bit key as hex string.
    This list is used " -"to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the " -"R0KH. This is also the list of authorized R1KHs in the MD that can request " -"PMK-R1 keys." -msgstr "" - -msgid "List of SSH key files for auth" -msgstr "" - -msgid "List of domains to allow RFC1918 responses for" -msgstr "列出允許RFC1918文件虛擬IP回應的網域" - -msgid "List of hosts that supply bogus NX domain results" -msgstr "列出供應偽裝NX網域成果的主機群" - -msgid "Listen Interfaces" -msgstr "" - -msgid "Listen Port" -msgstr "" - -msgid "Listen only on the given interface or, if unspecified, on all" -msgstr "只許在給予的介面上聆聽, 如果未指定, 全都允許" - -msgid "Listening port for inbound DNS queries" -msgstr "進入的DNS請求聆聽埠" - -msgid "Load" -msgstr "掛載" - -msgid "Load Average" -msgstr "平均掛載" - -msgid "Loading" -msgstr "掛載中" - -msgid "Local IP address is invalid" -msgstr "" - -msgid "Local IP address to assign" -msgstr "" - -msgid "Local IPv4 address" -msgstr "本地IPv4位址" - -msgid "Local IPv6 address" -msgstr "本地IPv6位址" - -msgid "Local Service Only" -msgstr "" - -msgid "Local Startup" -msgstr "本地啟動" - -msgid "Local Time" -msgstr "本地時區" - -msgid "Local domain" -msgstr "本地網域" - -#, fuzzy -msgid "" -"Local domain specification. Names matching this domain are never forwarded " -"and are resolved from DHCP or hosts files only" -msgstr "本地網域格式. 僅限符合從未從DHCP或hosts檔轉發和解析的網域" - -msgid "Local domain suffix appended to DHCP names and hosts file entries" -msgstr "本地網域後綴附加倒DHCP名稱和hosts檔項目" - -msgid "Local server" -msgstr "本地伺服器" - -msgid "" -"Localise hostname depending on the requesting subnet if multiple IPs are " -"available" -msgstr "若有多個IP可用, 本地化主機名稱端看請求的子網路而言." - -msgid "Localise queries" -msgstr "本地化網路請求" - -msgid "Locked to channel %s used by: %s" -msgstr "" - -msgid "Log output level" -msgstr "日誌輸出層級" - -msgid "Log queries" -msgstr "日誌查詢" - -msgid "Logging" -msgstr "日誌紀錄中" - -msgid "Login" -msgstr "登入" - -msgid "Logout" -msgstr "登出" - -msgid "Loss of Signal Seconds (LOSS)" -msgstr "" - -msgid "Lowest leased address as offset from the network address." -msgstr "最低的釋放位址從這網路位址的偏移計算" - -msgid "MAC" -msgstr "" - -msgid "MAC-Address" -msgstr "MAC-位址" - -msgid "MAC-Address Filter" -msgstr "MAC-位址過濾" - -msgid "MAC-Filter" -msgstr "MAC-過濾" - -msgid "MAC-List" -msgstr "MAC-清單" - -msgid "MAP / LW4over6" -msgstr "" - -msgid "MAP rule is invalid" -msgstr "" - -msgid "MB/s" -msgstr "MB/s" - -msgid "MD5" -msgstr "" - -msgid "MHz" -msgstr "MHz" - -msgid "MTU" -msgstr "最大傳輸單位MTU" - -msgid "" -"Make sure to clone the root filesystem using something like the commands " -"below:" -msgstr "" - -msgid "Manual" -msgstr "" - -msgid "Max. Attainable Data Rate (ATTNDR)" -msgstr "" - -msgid "Maximum allowed number of active DHCP leases" -msgstr "允許啟用DHCP釋放的最大數量" - -msgid "Maximum allowed number of concurrent DNS queries" -msgstr "允許同時齊發的DNS請求的最大數量" - -msgid "Maximum allowed size of EDNS.0 UDP packets" -msgstr "允許EDNS.0 協定的UDP封包最大數量" - -msgid "Maximum amount of seconds to wait for the modem to become ready" -msgstr "等待數據機待命的最大秒數" - -msgid "" -"Maximum length of the name is 15 characters including the automatic protocol/" -"bridge prefix (br-, 6in4-, pppoe- etc.)" -msgstr "" - -msgid "Maximum number of leased addresses." -msgstr "釋放出的位址群最大數量" - -msgid "Mbit/s" -msgstr "Mbit/s" - -msgid "Memory" -msgstr "記憶體" - -msgid "Memory usage (%)" -msgstr "記憶體使用 (%)" - -msgid "Mesh Id" -msgstr "" - -msgid "Metric" -msgstr "公測單位" - -msgid "Mirror monitor port" -msgstr "" - -msgid "Mirror source port" -msgstr "" - -msgid "Missing protocol extension for proto %q" -msgstr "協定 %q 漏失的延伸協定" - -msgid "Mobility Domain" -msgstr "" - -msgid "Mode" -msgstr "模式" - -msgid "Model" -msgstr "" - -msgid "Modem device" -msgstr "數據機設備" - -msgid "Modem information query failed" -msgstr "" - -msgid "Modem init timeout" -msgstr "數據機初始化終結時間" - -msgid "Monitor" -msgstr "監視" - -msgid "Mount Entry" -msgstr "掛載項目" - -msgid "Mount Point" -msgstr "掛載點" - -msgid "Mount Points" -msgstr "掛載各點" - -msgid "Mount Points - Mount Entry" -msgstr "掛載各點 - 掛載項目" - -msgid "Mount Points - Swap Entry" -msgstr "掛載各點 - 交換項目" - -msgid "" -"Mount Points define at which point a memory device will be attached to the " -"filesystem" -msgstr "掛載各點定義所指定到記憶體設備將會被附載到檔案系統上" - -msgid "Mount filesystems not specifically configured" -msgstr "" - -msgid "Mount options" -msgstr "掛載選項" - -msgid "Mount point" -msgstr "掛載點" - -msgid "Mount swap not specifically configured" -msgstr "" - -msgid "Mounted file systems" -msgstr "已掛載檔案系統" - -msgid "Move down" -msgstr "往下移" - -msgid "Move up" -msgstr "往上移" - -msgid "Multicast address" -msgstr "多點群播位址" - -msgid "NAS ID" -msgstr " 網路附存伺服器ID" - -msgid "NAT-T Mode" -msgstr "" - -msgid "NAT64 Prefix" -msgstr "" - -msgid "NCM" -msgstr "" - -msgid "NDP-Proxy" -msgstr "" - -msgid "NT Domain" -msgstr "" - -msgid "NTP server candidates" -msgstr "NTP伺服器備選" - -msgid "Name" -msgstr "名稱" - -msgid "Name of the new interface" -msgstr "新介面的名稱" - -msgid "Name of the new network" -msgstr "新網路的名稱" - -msgid "Navigation" -msgstr "導覽" - -msgid "Netmask" -msgstr "網路遮罩" - -msgid "Network" -msgstr "網路" - -msgid "Network Utilities" -msgstr "網路多項工具" - -msgid "Network boot image" -msgstr "網路開機映像檔" - -msgid "Network device is not present" -msgstr "" - -msgid "Network without interfaces." -msgstr "尚無任何介面的網路." - -msgid "Next »" -msgstr "下一個 »" - -msgid "No DHCP Server configured for this interface" -msgstr "在這個介面尚無DHCP伺服器" - -msgid "No NAT-T" -msgstr "" - -msgid "No chains in this table" -msgstr "尚未綁在這個表格中" - -msgid "No files found" -msgstr "尚未發現任何檔案" - -msgid "No information available" -msgstr "尚無可運用資訊" - -msgid "No matching prefix delegation" -msgstr "" - -msgid "No negative cache" -msgstr "尚無拒絕的快取" - -msgid "No network configured on this device" -msgstr "尚無網路設定在這個介面上" - -msgid "No network name specified" -msgstr "尚未指定網路名稱" - -msgid "No package lists available" -msgstr "尚無列出的軟體包可運用" - -msgid "No password set!" -msgstr "尚未設定密碼!" - -msgid "No rules in this chain" -msgstr "尚無規則在這個鏈接上" - -msgid "No scan results available yet..." -msgstr "" - -msgid "No zone assigned" -msgstr "尚未指定區碼" - -msgid "Noise" -msgstr "噪音比" - -msgid "Noise Margin (SNR)" -msgstr "" - -msgid "Noise:" -msgstr "噪音比:" - -msgid "Non Pre-emtive CRC errors (CRC_P)" -msgstr "" - -msgid "Non-wildcard" -msgstr "" - -msgid "None" -msgstr "無" - -msgid "Normal" -msgstr "正常" - -msgid "Not Found" -msgstr "尚未發現" - -msgid "Not associated" -msgstr "尚未關聯" - -msgid "Not connected" -msgstr "尚未連線" - -msgid "Note: Configuration files will be erased." -msgstr "注意:設定檔將被刪除." - -msgid "Note: interface name length" -msgstr "" - -msgid "Notice" -msgstr "通知" - -msgid "Nslookup" -msgstr "DNS偵錯Nslookup" - -msgid "Number of cached DNS entries (max is 10000, 0 is no caching)" -msgstr "" - -msgid "OK" -msgstr "行" - -msgid "OPKG-Configuration" -msgstr "OPKG-設定值" - -msgid "Obfuscated Group Password" -msgstr "" - -msgid "Obfuscated Password" -msgstr "" - -msgid "Obtain IPv6-Address" -msgstr "" - -msgid "Off-State Delay" -msgstr "關閉狀態延遲" - -msgid "" -"On this page you can configure the network interfaces. You can bridge " -"several interfaces by ticking the \"bridge interfaces\" field and enter the " -"names of several network interfaces separated by spaces. You can also use " -"VLAN notation " -"INTERFACE.VLANNR (e.g.: " -"eth0.1)." -msgstr "" -"在這個頁面您可以設定網路介面. 只要點下這個\"介面群橋接\"而且打入數個以空格分" -"開網路介面的名稱就可以橋接數個介面群. 您也可以使用VLAN 符號INTERFACE.VLANNR (例.如: eth0.1)." - -msgid "On-State Delay" -msgstr "啟用狀態延遲" - -msgid "One of hostname or mac address must be specified!" -msgstr "主機名稱或mac位址任選一個被指定" - -msgid "One or more fields contain invalid values!" -msgstr "有一個以上的欄位包含失效數值!" - -msgid "One or more invalid/required values on tab" -msgstr "" - -msgid "One or more required fields have no value!" -msgstr "有一個以上的欄位缺乏任何數值!" - -msgid "Open list..." -msgstr "開啟清單..." - -msgid "OpenConnect (CISCO AnyConnect)" -msgstr "" - -msgid "Operating frequency" -msgstr "" - -msgid "Option changed" -msgstr "選項已變更" - -msgid "Option removed" -msgstr "選項已移除" - -msgid "Optional" -msgstr "" - -msgid "" -"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, " -"starting with 0x." -msgstr "" - -msgid "" -"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or " -"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating " -"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') " -"for the interface." -msgstr "" - -msgid "" -"Optional. Base64-encoded preshared key. Adds in an additional layer of " -"symmetric-key cryptography for post-quantum resistance." -msgstr "" - -msgid "Optional. Create routes for Allowed IPs for this peer." -msgstr "" - -msgid "Optional. Description of peer." -msgstr "" - -msgid "" -"Optional. Host of peer. Names are resolved prior to bringing up the " -"interface." -msgstr "" - -msgid "Optional. Maximum Transmission Unit of tunnel interface." -msgstr "" - -msgid "Optional. Port of peer." -msgstr "" - -msgid "" -"Optional. Seconds between keep alive messages. Default is 0 (disabled). " -"Recommended value if this device is behind a NAT is 25." -msgstr "" - -msgid "Optional. UDP port used for outgoing and incoming packets." -msgstr "" - -msgid "Options" -msgstr "選項" - -msgid "Other:" -msgstr "其它:" - -msgid "Out" -msgstr "出" - -msgid "Outbound:" -msgstr "外連:" - -msgid "Output Interface" -msgstr "" - -msgid "Override MAC address" -msgstr "覆蓋MAC位址" - -msgid "Override MTU" -msgstr "覆蓋MTU數值" - -msgid "Override TOS" -msgstr "" - -msgid "Override TTL" -msgstr "" - -msgid "Override default interface name" -msgstr "" - -msgid "Override the gateway in DHCP responses" -msgstr "在DHCP回應中覆蓋匝道器" - -msgid "" -"Override the netmask sent to clients. Normally it is calculated from the " -"subnet that is served." -msgstr "覆蓋傳送到客戶端的網路遮罩. 正常來說它會計算來自魚已存子網路." - -msgid "Override the table used for internal routes" -msgstr "覆蓋之前內部使用的路由表" - -msgid "Overview" -msgstr "預覽" - -msgid "Owner" -msgstr "持有者" - -msgid "PAP/CHAP password" -msgstr "PAP/CHAP驗證密碼" - -msgid "PAP/CHAP username" -msgstr "PAP/CHAP驗證用戶名" - -msgid "PID" -msgstr "PID碼" - -msgid "PIN" -msgstr "PIN碼" - -msgid "PIN code rejected" -msgstr "" - -msgid "PMK R1 Push" -msgstr "" - -msgid "PPP" -msgstr "PPP協定" - -msgid "PPPoA Encapsulation" -msgstr "PPPoA配置" - -msgid "PPPoATM" -msgstr "PPPoATM" - -msgid "PPPoE" -msgstr "PPPoE" - -msgid "PPPoSSH" -msgstr "" - -msgid "PPtP" -msgstr "PPtP點對點VPN虛擬私人隧道協定" - -msgid "PSID offset" -msgstr "" - -msgid "PSID-bits length" -msgstr "" - -msgid "PTM/EFM (Packet Transfer Mode)" -msgstr "" - -msgid "Package libiwinfo required!" -msgstr "軟體包必需有libiwinfo!" - -msgid "Package lists are older than 24 hours" -msgstr "軟體包列表過期24小時" - -msgid "Package name" -msgstr "軟體包名稱" - -msgid "Packets" -msgstr "封包" - -msgid "Part of zone %q" -msgstr "區域 %q 的部分 " - -msgid "Password" -msgstr "密碼" - -msgid "Password authentication" -msgstr "密碼驗證" - -msgid "Password of Private Key" -msgstr "私人金鑰密碼" - -msgid "Password of inner Private Key" -msgstr "" - -msgid "Password successfully changed!" -msgstr "密碼已變更成功!" - -msgid "Password2" -msgstr "" - -msgid "Path to CA-Certificate" -msgstr "CA-證書的路徑" - -msgid "Path to Client-Certificate" -msgstr "用戶端-證書的路徑" - -msgid "Path to Private Key" -msgstr "私人金鑰的路徑" - -msgid "Path to inner CA-Certificate" -msgstr "" - -msgid "Path to inner Client-Certificate" -msgstr "" - -msgid "Path to inner Private Key" -msgstr "" - -msgid "Peak:" -msgstr "峰值:" - -msgid "Peer IP address to assign" -msgstr "" - -msgid "Peer address is missing" -msgstr "" - -msgid "Peers" -msgstr "" - -msgid "Perfect Forward Secrecy" -msgstr "" - -msgid "Perform reboot" -msgstr "執行重開" - -msgid "Perform reset" -msgstr "執行重置" - -msgid "Persistent Keep Alive" -msgstr "" - -msgid "Phy Rate:" -msgstr "傳輸率:" - -msgid "Physical Settings" -msgstr "實體設置" - -msgid "Ping" -msgstr "Ping" - -msgid "Pkts." -msgstr "封包數." - -msgid "Please enter your username and password." -msgstr "請輸入您的用戶名稱和密碼" - -msgid "Policy" -msgstr "策略" - -msgid "Port" -msgstr "埠" - -msgid "Port status:" -msgstr "埠狀態:" - -msgid "Power Management Mode" -msgstr "" - -msgid "Pre-emtive CRC errors (CRCP_P)" -msgstr "" - -msgid "Prefer LTE" -msgstr "" - -msgid "Prefer UMTS" -msgstr "" - -msgid "Prefix Delegated" -msgstr "" - -msgid "Preshared Key" -msgstr "" - -msgid "" -"Presume peer to be dead after given amount of LCP echo failures, use 0 to " -"ignore failures" -msgstr "假若在給于多次的 LCP 呼叫失敗後終點將死, 使用0忽略失敗" - -msgid "Prevent listening on these interfaces." -msgstr "" - -msgid "Prevents client-to-client communication" -msgstr "防止用戶端對用戶端的通訊" - -msgid "Private Key" -msgstr "" - -msgid "Proceed" -msgstr "前進" - -msgid "Processes" -msgstr "執行緒" - -msgid "Profile" -msgstr "" - -msgid "Prot." -msgstr "協定." - -msgid "Protocol" -msgstr "協定" - -msgid "Protocol family" -msgstr "協定家族" - -msgid "Protocol of the new interface" -msgstr "新介面的協定家族" - -msgid "Protocol support is not installed" -msgstr "支援的協定尚未安裝" - -msgid "Provide NTP server" -msgstr "提供NTP伺服器" - -msgid "Provide new network" -msgstr "提供新網路" - -msgid "Pseudo Ad-Hoc (ahdemo)" -msgstr "偽裝Ad-Hoc (ahdemo模式)" - -msgid "Public Key" -msgstr "" - -msgid "Public prefix routed to this device for distribution to clients." -msgstr "" - -msgid "QMI Cellular" -msgstr "" - -msgid "Quality" -msgstr "品質" - -msgid "" -"Query all available upstream DNS " -"servers" -msgstr "" - -msgid "R0 Key Lifetime" -msgstr "" - -msgid "R1 Key Holder" -msgstr "" - -msgid "RFC3947 NAT-T mode" -msgstr "" - -msgid "RTS/CTS Threshold" -msgstr "RTS/CTS門檻" - -msgid "RX" -msgstr "接收" - -msgid "RX Rate" -msgstr "接收速率" - -msgid "Radius-Accounting-Port" -msgstr "Radius-驗証帳號-埠" - -msgid "Radius-Accounting-Secret" -msgstr "Radius-合法帳號-密碼" - -msgid "Radius-Accounting-Server" -msgstr "Radius-合法帳號-伺服器" - -msgid "Radius-Authentication-Port" -msgstr "Radius-驗証-埠" - -msgid "Radius-Authentication-Secret" -msgstr "Radius-驗証-密碼" - -msgid "Radius-Authentication-Server" -msgstr "Radius-驗証-伺服器" - -msgid "Raw hex-encoded bytes. Leave empty unless your ISP require this" -msgstr "" - -msgid "" -"Read /etc/ethers to configure the DHCP-Server" -msgstr "" -" 讀取/etc/ethers 以便設置DHCP-伺服器" - -msgid "" -"Really delete this interface? The deletion cannot be undone! You might lose " -"access to this device if you are connected via this interface" -msgstr "" - -msgid "" -"Really delete this wireless network? The deletion cannot be undone! You " -"might lose access to this device if you are connected via this network." -msgstr "" -"真的要刪除這個無線網路?無法復元的刪除!\n" -"假如您是透過這個網路連線您可能會無法存取這個設備." - -msgid "Really reset all changes?" -msgstr "確定要重置回復原廠?" - -msgid "Really switch protocol?" -msgstr "確定要更換協定?" - -msgid "Realtime Connections" -msgstr "即時連線" - -msgid "Realtime Graphs" -msgstr "即時圖表" - -msgid "Realtime Load" -msgstr "即時負載" - -msgid "Realtime Traffic" -msgstr "即時流量" - -msgid "Realtime Wireless" -msgstr "即時無線網路" - -msgid "Reassociation Deadline" -msgstr "" - -msgid "Rebind protection" -msgstr "重新綁護" - -msgid "Reboot" -msgstr "重開機" - -msgid "Rebooting..." -msgstr "重開中..." - -msgid "Reboots the operating system of your device" -msgstr "重啟您設備的作業系統" - -msgid "Receive" -msgstr "接收" - -msgid "Receiver Antenna" -msgstr "接收天線" - -msgid "Recommended. IP addresses of the WireGuard interface." -msgstr "" - -msgid "Reconnect this interface" -msgstr "重新連接這個介面" - -msgid "References" -msgstr "引用" - -msgid "Relay" -msgstr "延遲" - -msgid "Relay Bridge" -msgstr "橋接延遲" - -msgid "Relay between networks" -msgstr "網路間的延遲" - -msgid "Relay bridge" -msgstr "橋接延遲" - -msgid "Remote IPv4 address" -msgstr "遠端IPv4位址" - -msgid "Remote IPv4 address or FQDN" -msgstr "" - -msgid "Remove" -msgstr "移除" - -msgid "Repeat scan" -msgstr "再次掃描" - -msgid "Replace entry" -msgstr "替代項目" - -msgid "Replace wireless configuration" -msgstr "替代性無線設定" - -msgid "Request IPv6-address" -msgstr "" - -msgid "Request IPv6-prefix of length" -msgstr "" - -msgid "Required" -msgstr "" - -msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3" -msgstr "對特定的ISP需要,例如.DOCSIS 3 加速有線電視寬頻網路" - -msgid "Required. Base64-encoded private key for this interface." -msgstr "" - -msgid "Required. Base64-encoded public key of peer." -msgstr "" - -msgid "" -"Required. IP addresses and prefixes that this peer is allowed to use inside " -"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer " -"routes through the tunnel." -msgstr "" - -msgid "" -"Requires the 'full' version of wpad/hostapd and support from the wifi driver " -"
    (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)" -msgstr "" - -msgid "" -"Requires upstream supports DNSSEC; verify unsigned domain responses really " -"come from unsigned domains" -msgstr "" - -msgid "Reset" -msgstr "重置" - -msgid "Reset Counters" -msgstr "重置計數器" - -msgid "Reset to defaults" -msgstr "回復預設值" - -msgid "Resolv and Hosts Files" -msgstr "解析和Hosts檔案" - -msgid "Resolve file" -msgstr "解析檔" - -msgid "Restart" -msgstr "重啟" - -msgid "Restart Firewall" -msgstr "重啟防火牆" - -msgid "Restart radio interface" -msgstr "" - -msgid "Restore" -msgstr "還原" - -msgid "Restore backup" -msgstr "還原之前備份設定" - -msgid "Reveal/hide password" -msgstr "明示/隱藏 密碼" - -msgid "Revert" -msgstr "回溯" - -msgid "Revert changes" -msgstr "" - -msgid "Revert request failed with status %h" -msgstr "" - -msgid "Reverting configuration…" -msgstr "" - -msgid "Root" -msgstr "根" - -msgid "Root directory for files served via TFTP" -msgstr "透過TFTP存取根目錄檔案" - -msgid "Root preparation" -msgstr "" - -msgid "Route Allowed IPs" -msgstr "" - -msgid "Route type" -msgstr "" - -msgid "Router Advertisement-Service" -msgstr "" - -msgid "Router Password" -msgstr "路由器密碼" - -msgid "Routes" -msgstr "路由" - -msgid "" -"Routes specify over which interface and gateway a certain host or network " -"can be reached." -msgstr "路由器指定介面導出到特定主機或者能夠到達的網路." - -msgid "Run a filesystem check before mounting the device" -msgstr "掛載這個設備前先跑系統檢查" - -msgid "Run filesystem check" -msgstr "執行系統檢查" - -msgid "SHA256" -msgstr "" - -msgid "SNR" -msgstr "" - -msgid "SSH Access" -msgstr "SSH存取" - -msgid "SSH server address" -msgstr "" - -msgid "SSH server port" -msgstr "" - -msgid "SSH username" -msgstr "" - -msgid "SSH-Keys" -msgstr "SSH-金鑰" - -msgid "SSID" -msgstr "基地台服務設定識別碼SSID" - -msgid "Save" -msgstr "保存" - -msgid "Save & Apply" -msgstr "保存並啟用" - -msgid "Scan" -msgstr "掃描" - -msgid "Scan request failed" -msgstr "" - -msgid "Scheduled Tasks" -msgstr "排程任務" - -msgid "Section added" -msgstr "新增的區段" - -msgid "Section removed" -msgstr "區段移除" - -msgid "See \"mount\" manpage for details" -msgstr "查看\"mount\"主頁獲取進階資訊" - -msgid "" -"Send LCP echo requests at the given interval in seconds, only effective in " -"conjunction with failure threshold" -msgstr "傳送LCP呼叫請求在這個給予的秒數間隔內, 僅影響關聯到失敗門檻" - -msgid "Separate Clients" -msgstr "分隔用戶端" - -msgid "Server Settings" -msgstr "伺服器設定值" - -msgid "Service Name" -msgstr "服務名稱" - -msgid "Service Type" -msgstr "服務型態" - -msgid "Services" -msgstr "各服務" - -msgid "" -"Set interface properties regardless of the link carrier (If set, carrier " -"sense events do not invoke hotplug handlers)." -msgstr "" - -#, fuzzy -msgid "Set up Time Synchronization" -msgstr "安裝校時同步" - -msgid "Setting PLMN failed" -msgstr "" - -msgid "Setting operation mode failed" -msgstr "" - -msgid "Setup DHCP Server" -msgstr "安裝DHCP伺服器" - -msgid "Severely Errored Seconds (SES)" -msgstr "" - -msgid "Short GI" -msgstr "" - -msgid "Short Preamble" -msgstr "" - -msgid "Show current backup file list" -msgstr "顯示現今的備份檔清單" - -msgid "Shutdown this interface" -msgstr "關閉這個介面" - -msgid "Signal" -msgstr "信號" - -msgid "Signal Attenuation (SATN)" -msgstr "" - -msgid "Signal:" -msgstr "信號:" - -msgid "Size" -msgstr "大小" - -msgid "Size (.ipk)" -msgstr "" - -msgid "Size of DNS query cache" -msgstr "" - -msgid "Skip" -msgstr "跳過" - -msgid "Skip to content" -msgstr "跳到內容" - -msgid "Skip to navigation" -msgstr "跳到導覽" - -msgid "Slot time" -msgstr "插槽時間" - -msgid "Software" -msgstr "軟體" - -msgid "Software VLAN" -msgstr "" - -msgid "Some fields are invalid, cannot save values!" -msgstr "有些欄位失效, 無法儲存數值!" - -msgid "Sorry, the object you requested was not found." -msgstr "抱歉, 您請求的這物件尚無發現." - -msgid "Sorry, the server encountered an unexpected error." -msgstr "抱歉, 伺服器遭遇非預期的錯誤." - -msgid "" -"Sorry, there is no sysupgrade support present; a new firmware image must be " -"flashed manually. Please refer to the wiki for device specific install " -"instructions." -msgstr "" -"抱歉, 沒有sysupgrade支援出現, 新版韌體映像檔必須手動更新. 請回歸wiki找尋特定" -"設備安裝指引." - -msgid "Source" -msgstr "來源" - -msgid "Specifies the directory the device is attached to" -msgstr "指定這個設備被附掛到那個目錄" - -msgid "Specifies the listening port of this Dropbear instance" -msgstr "指定這個 Dropbear真實聆聽埠" - -msgid "" -"Specifies the maximum amount of failed ARP requests until hosts are presumed " -"to be dead" -msgstr "指定失敗ARP可請求的最大數量直到駭客主機死亡為止" - -msgid "" -"Specifies the maximum amount of seconds after which hosts are presumed to be " -"dead" -msgstr "指定可請求的最大秒數直到駭客主機死亡為止" - -msgid "Specify a TOS (Type of Service)." -msgstr "" - -msgid "" -"Specify a TTL (Time to Live) for the encapsulating packet other than the " -"default (64)." -msgstr "" - -msgid "" -"Specify an MTU (Maximum Transmission Unit) other than the default (1280 " -"bytes)." -msgstr "" - -msgid "Specify the secret encryption key here." -msgstr "指定加密金鑰在此." - -msgid "Start" -msgstr "啟用" - -msgid "Start priority" -msgstr "啟用優先權順序" - -msgid "Starting configuration apply…" -msgstr "" - -msgid "Starting wireless scan..." -msgstr "" - -msgid "Startup" -msgstr "啟動" - -msgid "Static IPv4 Routes" -msgstr "靜態IPv4路由" - -msgid "Static IPv6 Routes" -msgstr "靜態IPv6路由" - -msgid "Static Leases" -msgstr "靜態租約" - -msgid "Static Routes" -msgstr "靜態路由" - -msgid "Static address" -msgstr "靜態位址" - -msgid "" -"Static leases are used to assign fixed IP addresses and symbolic hostnames " -"to DHCP clients. They are also required for non-dynamic interface " -"configurations where only hosts with a corresponding lease are served." -msgstr "" -"靜態租約是用來指定固定的IP位址和表示的主機名稱給予DHCP用戶端. 它們也需要非動" -"態介面設定值以便獲取相應租約的主機服務." - -msgid "Status" -msgstr "狀態" - -msgid "Stop" -msgstr "停止" - -msgid "Strict order" -msgstr "嚴謹順序" - -msgid "Submit" -msgstr "提交" - -msgid "Suppress logging" -msgstr "" - -msgid "Suppress logging of the routine operation of these protocols" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Swap Entry" -msgstr "Swap交換頁項目" - -msgid "Switch" -msgstr "交換器" - -msgid "Switch %q" -msgstr "交換器 %q" - -msgid "Switch %q (%s)" -msgstr "交換器 %q (%s)" - -msgid "" -"Switch %q has an unknown topology - the VLAN settings might not be accurate." -msgstr "" - -msgid "Switch Port Mask" -msgstr "" - -msgid "Switch VLAN" -msgstr "" - -msgid "Switch protocol" -msgstr "切換協定" - -msgid "Sync with browser" -msgstr "同步瀏覽器" - -msgid "Synchronizing..." -msgstr "同步中..." - -msgid "System" -msgstr "系統" - -msgid "System Log" -msgstr "系統日誌" - -msgid "System Properties" -msgstr "系統屬性" - -msgid "System log buffer size" -msgstr "系統日誌緩衝大小" - -msgid "TCP:" -msgstr "TCP:" - -msgid "TFTP Settings" -msgstr "TFTP設定" - -msgid "TFTP server root" -msgstr "TFTP 伺服器根" - -msgid "TX" -msgstr "傳送" - -msgid "TX Rate" -msgstr "傳送速度" - -msgid "Table" -msgstr "表格" - -msgid "Target" -msgstr "目標" - -msgid "Target network" -msgstr "" - -msgid "Terminate" -msgstr "中斷" - -#, fuzzy -msgid "" -"The Device Configuration section covers physical settings of the " -"radio hardware such as channel, transmit power or antenna selection which " -"are shared among all defined wireless networks (if the radio hardware is " -"multi-SSID capable). Per network settings like encryption or operation mode " -"are grouped in the Interface Configuration." -msgstr "" -"這個Device Configuration欄位會覆蓋無線射頻硬體的物理設定值,如通道、" -"傳送功率或者天線分享道所有定義的無線網路(假如這個無線射頻硬體是多工-SSID能力" -"的). 每個網路設定像加密或操作模式是被分群在Interface Configuration" -"中." - -msgid "" -"The libiwinfo-lua package is not installed. You must install this " -"component for working wireless configuration!" -msgstr "" -"這 libiwinfo-lua 軟體包尚未安裝. 您必須安裝這個元件以便無線網路設定" -"有作用." - -msgid "" -"The HE.net endpoint update configuration changed, you must now use the plain " -"username instead of the user ID!" -msgstr "" - -msgid "" -"The IPv4 address or the fully-qualified domain name of the remote tunnel end." -msgstr "" - -msgid "" -"The IPv6 prefix assigned to the provider, usually ends with ::" -msgstr "指定到這供應商的IPv6字首, 通常用 ::結尾" - -msgid "" -"The allowed characters are: A-Z, a-z, 0-9 and _" -msgstr "" -"所允許的字元是: A-Z, a-z, 0-9 and " -"_" - -msgid "The backup archive does not appear to be a valid gzip file." -msgstr "" - -msgid "The configuration file could not be loaded due to the following error:" -msgstr "" - -msgid "" -"The device could not be reached within %d seconds after applying the pending " -"changes, which caused the configuration to be rolled back for safety " -"reasons. If you believe that the configuration changes are correct " -"nonetheless, perform an unchecked configuration apply. Alternatively, you " -"can dismiss this warning and edit changes before attempting to apply again, " -"or revert all pending changes to keep the currently working configuration " -"state." -msgstr "" - -msgid "" -"The device file of the memory or partition (e.g." -" /dev/sda1)" -msgstr "" -"記憶體的設備檔或者分割區 (e.g. /dev/" -"sda1)" - -msgid "" -"The filesystem that was used to format the memory (e.g. ext3)" -msgstr "" -"這檔案系統適用來格式化記憶體(例.如. " -"ext3)" - -msgid "" -"The flash image was uploaded. Below is the checksum and file size listed, " -"compare them with the original file to ensure data integrity.
    Click " -"\"Proceed\" below to start the flash procedure." -msgstr "" -"要刷的映像檔已上傳.下面是這個校驗碼和檔案大小詳列, 用原始檔比對它門以確保資料" -"完整性.
    按下面的\"繼續\"便可以開啟更新流程." - -msgid "The following changes have been reverted" -msgstr "接下來的修改已經被回復" - -msgid "The following rules are currently active on this system." -msgstr "以下的規則現正作用在系統中." - -msgid "The given network name is not unique" -msgstr "輸入的網路名稱非獨一" - -#, fuzzy -msgid "" -"The hardware is not multi-SSID capable and the existing configuration will " -"be replaced if you proceed." -msgstr "如果您繼續的話.這硬體並非多SSID工能並且已存的設定將會被覆蓋." - -msgid "" -"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 " -"addresses." -msgstr "這IPv4開頭以位元計的長度, 剩餘部分將會延用在IPv6位址中." - -msgid "The length of the IPv6 prefix in bits" -msgstr "這IPv6開頭以位元計的長度" - -msgid "The local IPv4 address over which the tunnel is created (optional)." -msgstr "" - -msgid "" -"The network ports on this device can be combined to several VLANs in which computers can " -"communicate directly with each other. VLANs are often used to separate different network " -"segments. Often there is by default one Uplink port for a connection to the " -"next greater network like the internet and other ports for a local network." -msgstr "" -"這設備的網路埠可以被組合到數個 VLAN群, 以便在內的電腦可以直接跟別人互通. VLAN群經常用來分割網路區段. 預設經常會有一個上傳" -"埠來連接到下一個大型網路類似Intenet而其它埠則用來本地區網使用." - -msgid "The selected protocol needs a device assigned" -msgstr "選到的協定需要指定到設備上" - -msgid "The submitted security token is invalid or already expired!" -msgstr "" - -msgid "" -"The system is erasing the configuration partition now and will reboot itself " -"when finished." -msgstr "系統正在刪除設定分割並且當完成時將自行重開." - -#, fuzzy -msgid "" -"The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a " -"few minutes before you try to reconnect. It might be necessary to renew the " -"address of your computer to reach the device again, depending on your " -"settings." -msgstr "" -"系統現正刷機中.
    請勿關閉設備!
    等待數分鐘直到您重新在連線. 可能需" -"要更新您電腦的位址以便再連設備, 端看您的設定. " - -msgid "" -"The uploaded image file does not contain a supported format. Make sure that " -"you choose the generic image format for your platform." -msgstr "" -"以上傳的映像檔不包含支援格式. 請確認您選擇的是針對您的平台採用的通用映像檔." - -msgid "There are no active leases." -msgstr "租賃尚未啟動." - -msgid "There are no changes to apply." -msgstr "" - -msgid "There are no pending changes to revert!" -msgstr "尚無聽候的修改被復元!" - -msgid "There are no pending changes!" -msgstr "無聽候的修改!" - -msgid "" -"There is no device assigned yet, please attach a network device in the " -"\"Physical Settings\" tab" -msgstr "尚未指定設備, 請接上一個網路設備在這\"實體設置\"標籤內" - -msgid "" -"There is no password set on this router. Please configure a root password to " -"protect the web interface and enable SSH." -msgstr "路由器尚未設密碼. 請設定root密碼以便保護web介面及啟用SSH." - -msgid "This IPv4 address of the relay" -msgstr "IPv4位址的轉驛" - -msgid "" -"This file may contain lines like 'server=/domain/1.2.3.4' or " -"'server=1.2.3.4' fordomain-specific or full upstream DNS servers." -msgstr "" - -msgid "" -"This is a list of shell glob patterns for matching files and directories to " -"include during sysupgrade. Modified files in /etc/config/ and certain other " -"configurations are automatically preserved." -msgstr "" -"這是shell通用模式清單用來在系統更新時匹配包括的檔案和目錄. 在/etc/config/ 修" -"改檔案和特定其它設定檔將會被自動保留." - -msgid "" -"This is either the \"Update Key\" configured for the tunnel or the account " -"password if no update key has been configured" -msgstr "" - -msgid "" -"This is the content of /etc/rc.local. Insert your own commands here (in " -"front of 'exit 0') to execute them at the end of the boot process." -msgstr "" -"這是 /etc/rc.local 內容. 在這插入自己的指令 (在 'exit 0' 前面)以便在開機流程" -"結尾執行它們." - -msgid "" -"This is the local endpoint address assigned by the tunnel broker, it usually " -"ends with ...:2/64" -msgstr "這是由通道代理人指定的本地終端位址, 通常用 ...:2/64結尾." - -msgid "" -"This is the only DHCP in the local network" -msgstr "" -"在本地網路中 這是唯一的 DHCP" - -msgid "This is the plain username for logging into the account" -msgstr "" - -msgid "" -"This is the prefix routed to you by the tunnel broker for use by clients" -msgstr "" - -msgid "This is the system crontab in which scheduled tasks can be defined." -msgstr "這是系統預設的例行性工作排程." - -msgid "" -"This is usually the address of the nearest PoP operated by the tunnel broker" -msgstr "這是由通道代理人操作的近端PoP通用位址" - -msgid "" -"This list gives an overview over currently running system processes and " -"their status." -msgstr "這清單提供目前正在執行的系統的執行緒和狀態的預覽." - -msgid "This page gives an overview over currently active network connections." -msgstr "這一頁提供目前正在活動中網路連線的預覽." - -msgid "This section contains no values yet" -msgstr "這部分尚未有任何數值." - -msgid "Time Synchronization" -msgstr "校時同步" - -msgid "Time Synchronization is not configured yet." -msgstr "校時同步尚未設定." - -msgid "Timezone" -msgstr "時區" - -msgid "" -"To restore configuration files, you can upload a previously generated backup " -"archive here. To reset the firmware to its initial state, click \"Perform " -"reset\" (only possible with squashfs images)." -msgstr "" -"要復元設定檔, 可以上傳之前製作的備份壓縮檔放這. 要重置回復出廠值,按下\"執行還" -"原\"(可能只對squashfs影像檔有效)" - -msgid "Tone" -msgstr "" - -msgid "Total Available" -msgstr "全部可用" - -msgid "Traceroute" -msgstr "路由追蹤" - -msgid "Traffic" -msgstr "流量" - -msgid "Transfer" -msgstr "傳輸" - -msgid "Transmission Rate" -msgstr "傳輸速率" - -msgid "Transmit" -msgstr "射頻" - -msgid "Transmit Power" -msgstr "射頻功率" - -msgid "Transmitter Antenna" -msgstr "射頻天線" - -msgid "Trigger" -msgstr "觸發" - -msgid "Trigger Mode" -msgstr "觸發模式" - -msgid "Tunnel ID" -msgstr "通道ID" - -msgid "Tunnel Interface" -msgstr "通道介面" - -msgid "Tunnel Link" -msgstr "" - -msgid "Tx-Power" -msgstr "傳送-功率" - -msgid "Type" -msgstr "型態" - -msgid "UDP:" -msgstr "UDP:" - -msgid "UMTS only" -msgstr "只用3G UMTS" - -msgid "UMTS/GPRS/EV-DO" -msgstr "UMTS/GPRS/EV-DO" - -msgid "USB Device" -msgstr "USB設備" - -msgid "USB Ports" -msgstr "" - -msgid "UUID" -msgstr "設備通用唯一識別碼UUID" - -msgid "Unable to determine device name" -msgstr "" - -msgid "Unable to determine external IP address" -msgstr "" - -msgid "Unable to determine upstream interface" -msgstr "" - -msgid "Unable to dispatch" -msgstr "無法發送" - -msgid "Unable to obtain client ID" -msgstr "" - -msgid "Unable to resolve AFTR host name" -msgstr "" - -msgid "Unable to resolve peer host name" -msgstr "" - -msgid "Unavailable Seconds (UAS)" -msgstr "" - -msgid "Unknown" -msgstr "未知" - -msgid "Unknown Error, password not changed!" -msgstr "未知錯誤, 密碼尚未改變!" - -msgid "Unknown error (%s)" -msgstr "" - -msgid "Unmanaged" -msgstr "非託管" - -msgid "Unmount" -msgstr "" - -msgid "Unsaved Changes" -msgstr "尚未存檔的修改" - -msgid "Unsupported MAP type" -msgstr "" - -msgid "Unsupported modem" -msgstr "" - -msgid "Unsupported protocol type." -msgstr "不支援的協定型態" - -msgid "Up" -msgstr "" - -msgid "Update lists" -msgstr "上傳清單" - -msgid "" -"Upload a sysupgrade-compatible image here to replace the running firmware. " -"Check \"Keep settings\" to retain the current configuration (requires a " -"compatible firmware image)." -msgstr "" -"上傳一個sysupgrade-相容的映像檔在這以便替代正執行中的韌體. 勾選\"保持設定\"以" -"保留目前設定值(必須要是OpenWrt/LEDE相容性韌體映像檔)." - -msgid "Upload archive..." -msgstr "上傳壓縮檔..." - -msgid "Uploaded File" -msgstr "檔案已上傳" - -msgid "Uptime" -msgstr "上傳花費時間" - -msgid "Use /etc/ethers" -msgstr "採用 /etc/ethers" - -msgid "Use DHCP gateway" -msgstr "使用DHCP的匝道器" - -msgid "Use DNS servers advertised by peer" -msgstr "使用終端發布的DNS伺服器" - -msgid "Use ISO/IEC 3166 alpha2 country codes." -msgstr "使用Use ISO/IEC 3166 alpha2 國碼." - -msgid "Use MTU on tunnel interface" -msgstr "在通道介面上使用的MTU數值" - -msgid "Use TTL on tunnel interface" -msgstr "在通道介面上使用的TTL存活時間" - -msgid "Use as external overlay (/overlay)" -msgstr "" - -msgid "Use as root filesystem (/)" -msgstr "" - -msgid "Use broadcast flag" -msgstr "當作廣播旗標" - -msgid "Use builtin IPv6-management" -msgstr "" - -msgid "Use custom DNS servers" -msgstr "使用自定的DNS伺服器" - -msgid "Use default gateway" -msgstr "使用預設匝道器" - -msgid "Use gateway metric" -msgstr "使用匝道器公測數" - -msgid "Use routing table" -msgstr "使用路由表" - -msgid "" -"Use the Add Button to add a new lease entry. The MAC-Address identifies the host, the IPv4-Address specifies the fixed " -"address to use, and the Hostname is assigned as a symbolic name to " -"the requesting host. The optional Lease time can be used to set non-" -"standard host-specific lease time, e.g. 12h, 3d or infinite." -msgstr "" -"使用 Add 鍵以便新增一個租賃的項目. 這個 MAC-Address 標誌這" -"個主機, the IPv4-Address 指定固定位址以便使用,Hostname 備指" -"定當作象徵名稱到請求的主機上." - -msgid "Used" -msgstr "已使用" - -msgid "Used Key Slot" -msgstr "已使用的關鍵插槽" - -msgid "" -"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not " -"needed with normal WPA(2)-PSK." -msgstr "" - -msgid "User certificate (PEM encoded)" -msgstr "" - -msgid "User key (PEM encoded)" -msgstr "" - -msgid "Username" -msgstr "用戶名稱" - -msgid "VC-Mux" -msgstr "虛擬電路多工器VC-Mux" - -msgid "VDSL" -msgstr "" - -msgid "VLANs on %q" -msgstr "VLAN 在 %q" - -msgid "VLANs on %q (%s)" -msgstr "VLAN 在 %q (%s)" - -msgid "VPN Local address" -msgstr "" - -msgid "VPN Local port" -msgstr "" - -msgid "VPN Server" -msgstr "VPN伺服器" - -msgid "VPN Server port" -msgstr "" - -msgid "VPN Server's certificate SHA1 hash" -msgstr "" - -msgid "VPNC (CISCO 3000 (and others) VPN)" -msgstr "" - -msgid "Vendor" -msgstr "" - -msgid "Vendor Class to send when requesting DHCP" -msgstr "當請求DHCP封包時要傳送的製造商類別碼" - -msgid "Verify" -msgstr "確認" - -msgid "Version" -msgstr "版本" - -msgid "Virtual dynamic interface" -msgstr "" - -msgid "WDS" -msgstr "無線分散系統WDS" - -msgid "WEP Open System" -msgstr "WEP 開放系統" - -msgid "WEP Shared Key" -msgstr "WEP 共享金鑰" - -msgid "WEP passphrase" -msgstr "WEP通關密碼" - -msgid "WMM Mode" -msgstr "無線多媒體機制" - -msgid "WPA passphrase" -msgstr "WPA 密碼" - -msgid "" -"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " -"and ad-hoc mode) to be installed." -msgstr "" -"WPA-加密需要 wpa_supplican(終端模式)或者hostapd熱點(對AP或者是 ad-hoc模式)已" -"被安裝." - -msgid "Waiting for changes to be applied..." -msgstr "等待修改被啟用..." - -msgid "Waiting for command to complete..." -msgstr "等待完整性指令..." - -msgid "Waiting for configuration to get applied… %ds" -msgstr "" - -msgid "Waiting for device..." -msgstr "" - -msgid "Warning" -msgstr "警告" - -msgid "Warning: There are unsaved changes that will get lost on reboot!" -msgstr "" - -msgid "" -"When using a PSK, the PMK can be generated locally without inter AP " -"communications" -msgstr "" - -msgid "Width" -msgstr "" - -msgid "WireGuard VPN" -msgstr "" - -msgid "Wireless" -msgstr "無線網路" - -msgid "Wireless Adapter" -msgstr "無線網卡" - -msgid "Wireless Network" -msgstr "無線網路" - -msgid "Wireless Overview" -msgstr "無線預覽" - -msgid "Wireless Security" -msgstr "無線安全" - -msgid "Wireless is disabled" -msgstr "無線被關閉" - -msgid "Wireless is not associated" -msgstr "無線未關聯" - -msgid "Wireless is restarting..." -msgstr "無線重啟中..." - -msgid "Wireless network is disabled" -msgstr "無線網路已經被關閉" - -msgid "Wireless network is enabled" -msgstr "無線網路已啟用" - -msgid "Write received DNS requests to syslog" -msgstr "寫入已接收的DNS請求到系統日誌中" - -msgid "Write system log to file" -msgstr "" - -msgid "" -"You can enable or disable installed init scripts here. Changes will applied " -"after a device reboot.
    Warning: If you disable essential init " -"scripts like \"network\", your device might become inaccessible!" -msgstr "" -"您可以開啟或關閉初始化指令在這. 修改將會在設備重開後被啟用.
    警" -"告: 假如您關閉必要的初始化腳本像\"網路\", 您的設備將可能無法存取!" - -msgid "" -"You must enable JavaScript in your browser or LuCI will not work properly." -msgstr "在瀏覽器您必須啟用JavaScript否則LuCI無法正常運作." - -msgid "" -"Your Internet Explorer is too old to display this page correctly. Please " -"upgrade it to at least version 7 or use another browser like Firefox, Opera " -"or Safari." -msgstr "" - -msgid "any" -msgstr "任意" - -msgid "auto" -msgstr "自動" - -msgid "baseT" -msgstr "baseT" - -msgid "bridged" -msgstr "已橋接" - -msgid "create" -msgstr "" - -msgid "create:" -msgstr "建立:" - -msgid "creates a bridge over specified interface(s)" -msgstr "在指定的介面群上建立橋接" - -msgid "dB" -msgstr "dB" - -msgid "dBm" -msgstr "dBm" - -msgid "disable" -msgstr "關閉" - -msgid "disabled" -msgstr "" - -msgid "expired" -msgstr "過期" - -msgid "" -"file where given DHCP-leases will be stored" -msgstr "" -"當給予DHCP-租賃將" -"會被存檔" - -msgid "forward" -msgstr "轉發" - -msgid "full-duplex" -msgstr "全雙工" - -msgid "half-duplex" -msgstr "半雙工" - -msgid "hidden" -msgstr "隱藏" - -msgid "hybrid mode" -msgstr "" - -msgid "if target is a network" -msgstr "假如目標是某個網路" - -msgid "input" -msgstr "輸入" - -msgid "kB" -msgstr "kB" - -msgid "kB/s" -msgstr "kB/s" - -msgid "kbit/s" -msgstr "kbit/s" - -msgid "local DNS file" -msgstr "本地DNS 檔案" - -msgid "minutes" -msgstr "" - -msgid "mixed WPA/WPA2" -msgstr "" - -msgid "no" -msgstr "無" - -msgid "no link" -msgstr "無連線" - -msgid "none" -msgstr "無" - -msgid "not present" -msgstr "" - -msgid "off" -msgstr "關閉" - -msgid "on" -msgstr "開啟" - -msgid "open" -msgstr "打開" - -msgid "output" -msgstr "" - -msgid "overlay" -msgstr "" - -msgid "random" -msgstr "" - -msgid "relay mode" -msgstr "" - -msgid "routed" -msgstr "路由" - -msgid "server mode" -msgstr "" - -msgid "stateful-only" -msgstr "" - -msgid "stateless" -msgstr "" - -msgid "stateless + stateful" -msgstr "" - -msgid "tagged" -msgstr "標籤" - -msgid "time units (TUs / 1.024 ms) [1000-65535]" -msgstr "" - -msgid "unknown" -msgstr "未知" - -msgid "unlimited" -msgstr "無限" - -msgid "unspecified" -msgstr "尚未指定" - -msgid "unspecified -or- create:" -msgstr "尚未指定 - 或 -建立:" - -msgid "untagged" -msgstr "尚未標籤" - -msgid "yes" -msgstr "是的" - -msgid "« Back" -msgstr "« 倒退" - -#~ msgid "%s - %s" -#~ msgstr "%s - %s" - -#~ msgid "Activate this network" -#~ msgstr "啟用此網路" - -#~ msgid "Hermes 802.11b Wireless Controller" -#~ msgstr "Hermes 802.11b 無線網路控制器" - -#~ msgid "Interface is shutting down..." -#~ msgstr "介面正在關閉中..." - -#~ msgid "Interface reconnected" -#~ msgstr "介面已重連" - -#~ msgid "Interface shut down" -#~ msgstr "介面關閉" - -#~ msgid "Prism2/2.5/3 802.11b Wireless Controller" -#~ msgstr "Prism2/2.5/3 802.11b 無線控制器" - -#~ msgid "RaLink 802.11%s Wireless Controller" -#~ msgstr "RaLink 802.11%s 無線控制器" - -#~ msgid "" -#~ "Really shutdown interface \"%s\"? You might lose access to this device if " -#~ "you are connected via this interface." -#~ msgstr "" -#~ "真的要關閉這個介面 \"%s\" ?!\n" -#~ "假如您要透過這個介面連線您可能會無法存取這個設備." - -#~ msgid "Reconnecting interface" -#~ msgstr "重連這個介面中" - -#~ msgid "Shutdown this network" -#~ msgstr "關閉這個網路" - -#~ msgid "Wireless restarted" -#~ msgstr "無線網路已重啟" - -#~ msgid "Wireless shut down" -#~ msgstr "無線網路關閉" - -#~ msgid "DHCP Leases" -#~ msgstr "DHCP的釋放週期" - -#~ msgid "DHCPv6 Leases" -#~ msgstr "DHCPv6版釋放時間週期" - -#~ msgid "" -#~ "Really delete this interface? The deletion cannot be undone! You might " -#~ "lose access to this device if you are connected via this interface." -#~ msgstr "" -#~ "真的要刪除這介面?無法復元刪除!\n" -#~ "假如您要透過這個介面連線您可能會無法存取這個設備." - -#, fuzzy -#~ msgid "" -#~ "Really shut down network? You might lose access to this device if you are " -#~ "connected via this interface." -#~ msgstr "" -#~ "真的要刪除這個網路 ?\n" -#~ "假如您是透過這個介面連線您可能會無法存取這個設備." - -#~ msgid "Sort" -#~ msgstr "分類" - -#~ msgid "help" -#~ msgstr "幫助" - -#~ msgid "IPv4 WAN Status" -#~ msgstr "IPv4寬頻連線狀態" - -#~ msgid "IPv6 WAN Status" -#~ msgstr "IPv6寬頻連線狀態" - -#~ msgid "Apply" -#~ msgstr "套用" - -#~ msgid "Applying changes" -#~ msgstr "正在套用變更" - -#~ msgid "Configuration applied." -#~ msgstr "啟用設定" - -#~ msgid "Save & Apply" -#~ msgstr "保存 & 啟用" - -#~ msgid "The following changes have been committed" -#~ msgstr "接下來的修改已經被承諾" - -#~ msgid "There are no pending changes to apply!" -#~ msgstr "尚無聽候的修改被採用" - -#~ msgid "Action" -#~ msgstr "動作" - -#~ msgid "Buttons" -#~ msgstr "按鈕" - -#~ msgid "Handler" -#~ msgstr "多執行緒" - -#~ msgid "Maximum hold time" -#~ msgstr "可持有最長時間" - -#~ msgid "Minimum hold time" -#~ msgstr "可持有的最低時間" - -#~ msgid "Path to executable which handles the button event" -#~ msgstr "處理按鍵效果可執行檔路徑" - -#~ msgid "Specifies the button state to handle" -#~ msgstr "指定這個按鈕狀態以便操作" - -#~ msgid "This page allows the configuration of custom button actions" -#~ msgstr "這一頁允許客製化按鍵動作的設定" - -#~ msgid "Leasetime" -#~ msgstr "租賃時間" - -#~ msgid "AR Support" -#~ msgstr "AR支援" - -#~ msgid "Atheros 802.11%s Wireless Controller" -#~ msgstr "Atheros 802.11%s 無線控制器" - -#~ msgid "Background Scan" -#~ msgstr "背景搜尋" - -#~ msgid "Compression" -#~ msgstr "壓縮" - -#~ msgid "Disable HW-Beacon timer" -#~ msgstr "關閉硬體燈號計時器" - -#~ msgid "Do not send probe responses" -#~ msgstr "不傳送探測回應" - -#~ msgid "Fast Frames" -#~ msgstr "快速迅框群" - -#~ msgid "Maximum Rate" -#~ msgstr "最快速度" - -#~ msgid "Minimum Rate" -#~ msgstr "最低速度" - -#~ msgid "Multicast Rate" -#~ msgstr "多點群播速度" - -#~ msgid "Outdoor Channels" -#~ msgstr "室外通道" - -#~ msgid "Regulatory Domain" -#~ msgstr "監管網域" - -#~ msgid "Separate WDS" -#~ msgstr "分隔WDS中繼" - -#~ msgid "Static WDS" -#~ msgstr "靜態WDS" - -#~ msgid "Turbo Mode" -#~ msgstr "渦輪爆衝模式" - -#~ msgid "XR Support" -#~ msgstr "支援XR無線陣列" - -#~ msgid "An additional network will be created if you leave this unchecked." -#~ msgstr "取消選取將會另外建立一個新網路,而不會覆蓋目前的網路設定" - -#~ msgid "Join Network: Settings" -#~ msgstr "加入網路的設定" - -#~ msgid "CPU" -#~ msgstr "CPU" - -#~ msgid "Port %d" -#~ msgstr "埠 %d" - -#~ msgid "Port %d is untagged in multiple VLANs!" -#~ msgstr "埠 %d 尚未標記在多個VLANs中!" - -#~ msgid "VLAN Interface" -#~ msgstr "VLAN介面" diff --git a/luci-base/root/etc/config/luci b/luci-base/root/etc/config/luci deleted file mode 100644 index 82c2230e5..000000000 --- a/luci-base/root/etc/config/luci +++ /dev/null @@ -1,30 +0,0 @@ -config core main - option lang auto - option mediaurlbase /luci-static/bootstrap - option resourcebase /luci-static/resources - -config extern flash_keep - option uci "/etc/config/" - option dropbear "/etc/dropbear/" - option openvpn "/etc/openvpn/" - option passwd "/etc/passwd" - option opkg "/etc/opkg.conf" - option firewall "/etc/firewall.user" - option uploads "/lib/uci/upload/" - -config internal languages - -config internal sauth - option sessionpath "/tmp/luci-sessions" - option sessiontime 3600 - -config internal ccache - option enable 1 - -config internal themes - -config internal apply - option rollback 30 - option holdoff 4 - option timeout 5 - option display 1.5 diff --git a/luci-base/root/etc/config/ucitrack b/luci-base/root/etc/config/ucitrack deleted file mode 100644 index e63986630..000000000 --- a/luci-base/root/etc/config/ucitrack +++ /dev/null @@ -1,56 +0,0 @@ -config network - option init network - list affects dhcp - list affects radvd - -config wireless - list affects network - -config firewall - option init firewall - list affects luci-splash - list affects qos - list affects miniupnpd - -config olsr - option init olsrd - -config dhcp - option init dnsmasq - list affects odhcpd - -config odhcpd - option init odhcpd - -config dropbear - option init dropbear - -config httpd - option init httpd - -config fstab - option exec '/sbin/block mount' - -config qos - option init qos - -config system - option init led - option exec '/etc/init.d/log reload' - list affects luci_statistics - list affects dhcp - -config luci_splash - option init luci_splash - -config upnpd - option init miniupnpd - -config ntpclient - option init ntpclient - -config samba - option init samba - -config tinyproxy - option init tinyproxy diff --git a/luci-base/root/etc/init.d/ucitrack b/luci-base/root/etc/init.d/ucitrack deleted file mode 100755 index 27d34fa29..000000000 --- a/luci-base/root/etc/init.d/ucitrack +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh /etc/rc.common - -START=80 -USE_PROCD=1 - -register_init() { - local config="$1" - local init="$2" - shift; shift - - if [ -x "$init" ] && "$init" enabled && ! grep -sqE 'USE_PROCD=.' "$init"; then - logger -t "ucitrack" "Setting up /etc/config/$config reload trigger for non-procd $init" - procd_add_config_trigger "config.change" "$config" "$init" "$@" - fi -} - -register_trigger() { - local sid="$1" - local config init exec affects affected - - config_get config "$sid" TYPE - config_get init "$sid" init - config_get exec "$sid" exec - config_get affects "$sid" affects - - if [ -n "$init" ]; then - register_init "$config" "/etc/init.d/$init" "reload" - fi - - if [ -n "$exec" ]; then - case "$exec" in - /etc/init.d/*) - set -- $exec - register_init "$config" "$@" - ;; - *) - logger -t "ucitrack" "Setting up non-init /etc/config/$config reload handler: $exec" - procd_add_config_trigger "config.change" "$config" "$exec" - ;; - esac - fi - - for affected in $affects; do - logger -t "ucitrack" "Setting up /etc/config/$config reload dependency on /etc/config/$affected" - procd_add_config_trigger "config.change" "$affected" \ - ubus call service event \ - "$(printf '{"type":"config.change","data":{"package":"%s"}}' $config)" - done -} - -service_triggers() { - config_foreach register_trigger -} - -start_service() { - config_load ucitrack -} diff --git a/luci-base/root/sbin/luci-reload b/luci-base/root/sbin/luci-reload deleted file mode 100755 index cc41da2bb..000000000 --- a/luci-base/root/sbin/luci-reload +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -. /lib/functions.sh - -apply_config() { - config_get init "$1" init - config_get exec "$1" exec - config_get test "$1" test - - echo "$2" > "/var/run/luci-reload-status" - - [ -n "$init" ] && reload_init "$2" "$init" "$test" - [ -n "$exec" ] && reload_exec "$2" "$exec" "$test" -} - -reload_exec() { - local service="$1" - local ok="$3" - set -- $2 - local cmd="$1"; shift - - [ -x "$cmd" ] && { - echo "Reloading $service... " - ( $cmd "$@" ) 2>/dev/null 1>&2 - [ -n "$ok" -a "$?" != "$ok" ] && echo '!!! Failed to reload' $service '!!!' - } -} - -reload_init() { - [ -x /etc/init.d/$2 ] && /etc/init.d/$2 enabled && { - echo "Reloading $1... " - /etc/init.d/$2 reload >/dev/null 2>&1 - [ -n "$3" -a "$?" != "$3" ] && echo '!!! Failed to reload' $1 '!!!' - } -} - -lock "/var/run/luci-reload" - -config_load ucitrack - -for i in $*; do - config_foreach apply_config $i $i -done - -rm -f "/var/run/luci-reload-status" -lock -u "/var/run/luci-reload" diff --git a/luci-base/root/usr/share/acl.d/luci-base.json b/luci-base/root/usr/share/acl.d/luci-base.json deleted file mode 100644 index 4d582366f..000000000 --- a/luci-base/root/usr/share/acl.d/luci-base.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "user": "nobody", - "access": { - "system": { - "methods": [ "board", "info" ] - } - } -} diff --git a/luci-base/root/usr/share/rpcd/acl.d/luci-base.json b/luci-base/root/usr/share/rpcd/acl.d/luci-base.json deleted file mode 100644 index ed7ad8aa8..000000000 --- a/luci-base/root/usr/share/rpcd/acl.d/luci-base.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "uci-access": { - "description": "Grant uci write access to all configurations", - "read": { - "uci": [ "*" ] - }, - "write": { - "uci": [ "*" ] - } - } -} diff --git a/luci-base/root/www/index.html b/luci-base/root/www/index.html deleted file mode 100644 index 59b0d8484..000000000 --- a/luci-base/root/www/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - -LuCI - Lua Configuration Interface - - diff --git a/luci-base/src/Makefile b/luci-base/src/Makefile deleted file mode 100644 index 03e887e1d..000000000 --- a/luci-base/src/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -%.o: %.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -c -o $@ $< - -clean: - rm -f po2lmo parser.so version.lua *.o - -po2lmo: po2lmo.o template_lmo.o - $(CC) $(LDFLAGS) -o $@ $^ - -parser.so: template_parser.o template_utils.o template_lmo.o template_lualib.o - $(CC) $(LDFLAGS) -shared -o $@ $^ - -version.lua: - ./mkversion.sh $@ $(LUCI_VERSION) "$(LUCI_GITBRANCH)" - -compile: parser.so version.lua - -install: compile - mkdir -p $(DESTDIR)/usr/lib/lua/luci/template - cp parser.so $(DESTDIR)/usr/lib/lua/luci/template/parser.so - cp version.lua $(DESTDIR)/usr/lib/lua/luci/version.lua diff --git a/luci-base/src/mkversion.sh b/luci-base/src/mkversion.sh deleted file mode 100755 index e2d02c1c7..000000000 --- a/luci-base/src/mkversion.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -cat < $1 -local pcall, dofile, _G = pcall, dofile, _G - -module "luci.version" - -if pcall(dofile, "/etc/openwrt_release") and _G.DISTRIB_DESCRIPTION then - distname = "" - distversion = _G.DISTRIB_DESCRIPTION - if _G.DISTRIB_REVISION then - distrevision = _G.DISTRIB_REVISION - if not distversion:find(distrevision,1,true) then - distversion = distversion .. " " .. distrevision - end - end -else - distname = "OpenWrt" - distversion = "Development Snapshot" -end - -luciname = "${3:-LuCI}" -luciversion = "${2:-Git}" -EOF diff --git a/luci-base/src/po2lmo.c b/luci-base/src/po2lmo.c deleted file mode 100644 index fd927cb52..000000000 --- a/luci-base/src/po2lmo.c +++ /dev/null @@ -1,247 +0,0 @@ -/* - * lmo - Lua Machine Objects - PO to LMO conversion tool - * - * Copyright (C) 2009-2012 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_lmo.h" - -static void die(const char *msg) -{ - fprintf(stderr, "Error: %s\n", msg); - exit(1); -} - -static void usage(const char *name) -{ - fprintf(stderr, "Usage: %s input.po output.lmo\n", name); - exit(1); -} - -static void print(const void *ptr, size_t size, size_t nmemb, FILE *stream) -{ - if( fwrite(ptr, size, nmemb, stream) == 0 ) - die("Failed to write stdout"); -} - -static int extract_string(const char *src, char *dest, int len) -{ - int pos = 0; - int esc = 0; - int off = -1; - - for( pos = 0; (pos < strlen(src)) && (pos < len); pos++ ) - { - if( (off == -1) && (src[pos] == '"') ) - { - off = pos + 1; - } - else if( off >= 0 ) - { - if( esc == 1 ) - { - switch (src[pos]) - { - case '"': - case '\\': - off++; - break; - } - dest[pos-off] = src[pos]; - esc = 0; - } - else if( src[pos] == '\\' ) - { - dest[pos-off] = src[pos]; - esc = 1; - } - else if( src[pos] != '"' ) - { - dest[pos-off] = src[pos]; - } - else - { - dest[pos-off] = '\0'; - break; - } - } - } - - return (off > -1) ? strlen(dest) : -1; -} - -static int cmp_index(const void *a, const void *b) -{ - uint32_t x = ((const lmo_entry_t *)a)->key_id; - uint32_t y = ((const lmo_entry_t *)b)->key_id; - - if (x < y) - return -1; - else if (x > y) - return 1; - - return 0; -} - -static void print_uint32(uint32_t x, FILE *out) -{ - uint32_t y = htonl(x); - print(&y, sizeof(uint32_t), 1, out); -} - -static void print_index(void *array, int n, FILE *out) -{ - lmo_entry_t *e; - - qsort(array, n, sizeof(*e), cmp_index); - - for (e = array; n > 0; n--, e++) - { - print_uint32(e->key_id, out); - print_uint32(e->val_id, out); - print_uint32(e->offset, out); - print_uint32(e->length, out); - } -} - -int main(int argc, char *argv[]) -{ - char line[4096]; - char key[4096]; - char val[4096]; - char tmp[4096]; - int state = 0; - int offset = 0; - int length = 0; - int n_entries = 0; - void *array = NULL; - lmo_entry_t *entry = NULL; - uint32_t key_id, val_id; - - FILE *in; - FILE *out; - - if( (argc != 3) || ((in = fopen(argv[1], "r")) == NULL) || ((out = fopen(argv[2], "w")) == NULL) ) - usage(argv[0]); - - memset(line, 0, sizeof(key)); - memset(key, 0, sizeof(val)); - memset(val, 0, sizeof(val)); - - while( (NULL != fgets(line, sizeof(line), in)) || (state >= 2 && feof(in)) ) - { - if( state == 0 && strstr(line, "msgid \"") == line ) - { - switch(extract_string(line, key, sizeof(key))) - { - case -1: - die("Syntax error in msgid"); - case 0: - state = 1; - break; - default: - state = 2; - } - } - else if( state == 1 || state == 2 ) - { - if( strstr(line, "msgstr \"") == line || state == 2 ) - { - switch(extract_string(line, val, sizeof(val))) - { - case -1: - state = 4; - break; - default: - state = 3; - } - } - else - { - switch(extract_string(line, tmp, sizeof(tmp))) - { - case -1: - state = 2; - break; - default: - strcat(key, tmp); - } - } - } - else if( state == 3 ) - { - switch(extract_string(line, tmp, sizeof(tmp))) - { - case -1: - state = 4; - break; - default: - strcat(val, tmp); - } - } - - if( state == 4 ) - { - if( strlen(key) > 0 && strlen(val) > 0 ) - { - key_id = sfh_hash(key, strlen(key)); - val_id = sfh_hash(val, strlen(val)); - - if( key_id != val_id ) - { - n_entries++; - array = realloc(array, n_entries * sizeof(lmo_entry_t)); - entry = (lmo_entry_t *)array + n_entries - 1; - - if (!array) - die("Out of memory"); - - entry->key_id = key_id; - entry->val_id = val_id; - entry->offset = offset; - entry->length = strlen(val); - - length = strlen(val) + ((4 - (strlen(val) % 4)) % 4); - - print(val, length, 1, out); - offset += length; - } - } - - state = 0; - memset(key, 0, sizeof(key)); - memset(val, 0, sizeof(val)); - } - - memset(line, 0, sizeof(line)); - } - - print_index(array, n_entries, out); - - if( offset > 0 ) - { - print_uint32(offset, out); - fsync(fileno(out)); - fclose(out); - } - else - { - fclose(out); - unlink(argv[2]); - } - - fclose(in); - return(0); -} diff --git a/luci-base/src/template_lmo.c b/luci-base/src/template_lmo.c deleted file mode 100644 index 3d1eaf4e0..000000000 --- a/luci-base/src/template_lmo.c +++ /dev/null @@ -1,328 +0,0 @@ -/* - * lmo - Lua Machine Objects - Base functions - * - * Copyright (C) 2009-2010 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_lmo.h" - -/* - * Hash function from http://www.azillionmonkeys.com/qed/hash.html - * Copyright (C) 2004-2008 by Paul Hsieh - */ - -uint32_t sfh_hash(const char *data, int len) -{ - uint32_t hash = len, tmp; - int rem; - - if (len <= 0 || data == NULL) return 0; - - rem = len & 3; - len >>= 2; - - /* Main loop */ - for (;len > 0; len--) { - hash += sfh_get16(data); - tmp = (sfh_get16(data+2) << 11) ^ hash; - hash = (hash << 16) ^ tmp; - data += 2*sizeof(uint16_t); - hash += hash >> 11; - } - - /* Handle end cases */ - switch (rem) { - case 3: hash += sfh_get16(data); - hash ^= hash << 16; - hash ^= data[sizeof(uint16_t)] << 18; - hash += hash >> 11; - break; - case 2: hash += sfh_get16(data); - hash ^= hash << 11; - hash += hash >> 17; - break; - case 1: hash += *data; - hash ^= hash << 10; - hash += hash >> 1; - } - - /* Force "avalanching" of final 127 bits */ - hash ^= hash << 3; - hash += hash >> 5; - hash ^= hash << 4; - hash += hash >> 17; - hash ^= hash << 25; - hash += hash >> 6; - - return hash; -} - -uint32_t lmo_canon_hash(const char *str, int len) -{ - char res[4096]; - char *ptr, prev; - int off; - - if (!str || len >= sizeof(res)) - return 0; - - for (prev = ' ', ptr = res, off = 0; off < len; prev = *str, off++, str++) - { - if (isspace(*str)) - { - if (!isspace(prev)) - *ptr++ = ' '; - } - else - { - *ptr++ = *str; - } - } - - if ((ptr > res) && isspace(*(ptr-1))) - ptr--; - - return sfh_hash(res, ptr - res); -} - -lmo_archive_t * lmo_open(const char *file) -{ - int in = -1; - uint32_t idx_offset = 0; - struct stat s; - - lmo_archive_t *ar = NULL; - - if (stat(file, &s) == -1) - goto err; - - if ((in = open(file, O_RDONLY)) == -1) - goto err; - - if ((ar = (lmo_archive_t *)malloc(sizeof(*ar))) != NULL) - { - memset(ar, 0, sizeof(*ar)); - - ar->fd = in; - ar->size = s.st_size; - - fcntl(ar->fd, F_SETFD, fcntl(ar->fd, F_GETFD) | FD_CLOEXEC); - - if ((ar->mmap = mmap(NULL, ar->size, PROT_READ, MAP_SHARED, ar->fd, 0)) == MAP_FAILED) - goto err; - - idx_offset = ntohl(*((const uint32_t *) - (ar->mmap + ar->size - sizeof(uint32_t)))); - - if (idx_offset >= ar->size) - goto err; - - ar->index = (lmo_entry_t *)(ar->mmap + idx_offset); - ar->length = (ar->size - idx_offset - sizeof(uint32_t)) / sizeof(lmo_entry_t); - ar->end = ar->mmap + ar->size; - - return ar; - } - -err: - if (in > -1) - close(in); - - if (ar != NULL) - { - if ((ar->mmap != NULL) && (ar->mmap != MAP_FAILED)) - munmap(ar->mmap, ar->size); - - free(ar); - } - - return NULL; -} - -void lmo_close(lmo_archive_t *ar) -{ - if (ar != NULL) - { - if ((ar->mmap != NULL) && (ar->mmap != MAP_FAILED)) - munmap(ar->mmap, ar->size); - - close(ar->fd); - free(ar); - - ar = NULL; - } -} - - -lmo_catalog_t *_lmo_catalogs = NULL; -lmo_catalog_t *_lmo_active_catalog = NULL; - -int lmo_load_catalog(const char *lang, const char *dir) -{ - DIR *dh = NULL; - char pattern[16]; - char path[PATH_MAX]; - struct dirent *de = NULL; - - lmo_archive_t *ar = NULL; - lmo_catalog_t *cat = NULL; - - if (!lmo_change_catalog(lang)) - return 0; - - if (!dir || !(dh = opendir(dir))) - goto err; - - if (!(cat = malloc(sizeof(*cat)))) - goto err; - - memset(cat, 0, sizeof(*cat)); - - snprintf(cat->lang, sizeof(cat->lang), "%s", lang); - snprintf(pattern, sizeof(pattern), "*.%s.lmo", lang); - - while ((de = readdir(dh)) != NULL) - { - if (!fnmatch(pattern, de->d_name, 0)) - { - snprintf(path, sizeof(path), "%s/%s", dir, de->d_name); - ar = lmo_open(path); - - if (ar) - { - ar->next = cat->archives; - cat->archives = ar; - } - } - } - - closedir(dh); - - cat->next = _lmo_catalogs; - _lmo_catalogs = cat; - - if (!_lmo_active_catalog) - _lmo_active_catalog = cat; - - return 0; - -err: - if (dh) closedir(dh); - if (cat) free(cat); - - return -1; -} - -int lmo_change_catalog(const char *lang) -{ - lmo_catalog_t *cat; - - for (cat = _lmo_catalogs; cat; cat = cat->next) - { - if (!strncmp(cat->lang, lang, sizeof(cat->lang))) - { - _lmo_active_catalog = cat; - return 0; - } - } - - return -1; -} - -static lmo_entry_t * lmo_find_entry(lmo_archive_t *ar, uint32_t hash) -{ - unsigned int m, l, r; - uint32_t k; - - l = 0; - r = ar->length - 1; - - while (1) - { - m = l + ((r - l) / 2); - - if (r < l) - break; - - k = ntohl(ar->index[m].key_id); - - if (k == hash) - return &ar->index[m]; - - if (k > hash) - { - if (!m) - break; - - r = m - 1; - } - else - { - l = m + 1; - } - } - - return NULL; -} - -int lmo_translate(const char *key, int keylen, char **out, int *outlen) -{ - uint32_t hash; - lmo_entry_t *e; - lmo_archive_t *ar; - - if (!key || !_lmo_active_catalog) - return -2; - - hash = lmo_canon_hash(key, keylen); - - for (ar = _lmo_active_catalog->archives; ar; ar = ar->next) - { - if ((e = lmo_find_entry(ar, hash)) != NULL) - { - *out = ar->mmap + ntohl(e->offset); - *outlen = ntohl(e->length); - return 0; - } - } - - return -1; -} - -void lmo_close_catalog(const char *lang) -{ - lmo_archive_t *ar, *next; - lmo_catalog_t *cat, *prev; - - for (prev = NULL, cat = _lmo_catalogs; cat; prev = cat, cat = cat->next) - { - if (!strncmp(cat->lang, lang, sizeof(cat->lang))) - { - if (prev) - prev->next = cat->next; - else - _lmo_catalogs = cat->next; - - for (ar = cat->archives; ar; ar = next) - { - next = ar->next; - lmo_close(ar); - } - - free(cat); - break; - } - } -} diff --git a/luci-base/src/template_lmo.h b/luci-base/src/template_lmo.h deleted file mode 100644 index f251c63dd..000000000 --- a/luci-base/src/template_lmo.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * lmo - Lua Machine Objects - General header - * - * Copyright (C) 2009-2012 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _TEMPLATE_LMO_H_ -#define _TEMPLATE_LMO_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if (defined(__GNUC__) && defined(__i386__)) -#define sfh_get16(d) (*((const uint16_t *) (d))) -#else -#define sfh_get16(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\ - +(uint32_t)(((const uint8_t *)(d))[0]) ) -#endif - - -struct lmo_entry { - uint32_t key_id; - uint32_t val_id; - uint32_t offset; - uint32_t length; -} __attribute__((packed)); - -typedef struct lmo_entry lmo_entry_t; - - -struct lmo_archive { - int fd; - int length; - uint32_t size; - lmo_entry_t *index; - char *mmap; - char *end; - struct lmo_archive *next; -}; - -typedef struct lmo_archive lmo_archive_t; - - -struct lmo_catalog { - char lang[6]; - struct lmo_archive *archives; - struct lmo_catalog *next; -}; - -typedef struct lmo_catalog lmo_catalog_t; - - -uint32_t sfh_hash(const char *data, int len); -uint32_t lmo_canon_hash(const char *data, int len); - -lmo_archive_t * lmo_open(const char *file); -void lmo_close(lmo_archive_t *ar); - - -extern lmo_catalog_t *_lmo_catalogs; -extern lmo_catalog_t *_lmo_active_catalog; - -int lmo_load_catalog(const char *lang, const char *dir); -int lmo_change_catalog(const char *lang); -int lmo_translate(const char *key, int keylen, char **out, int *outlen); -void lmo_close_catalog(const char *lang); - -#endif diff --git a/luci-base/src/template_lualib.c b/luci-base/src/template_lualib.c deleted file mode 100644 index d5c8dd6b4..000000000 --- a/luci-base/src/template_lualib.c +++ /dev/null @@ -1,179 +0,0 @@ -/* - * LuCI Template - Lua binding - * - * Copyright (C) 2009 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_lualib.h" - -static int template_L_do_parse(lua_State *L, struct template_parser *parser, const char *chunkname) -{ - int lua_status, rv; - - if (!parser) - { - lua_pushnil(L); - lua_pushinteger(L, errno); - lua_pushstring(L, strerror(errno)); - return 3; - } - - lua_status = lua_load(L, template_reader, parser, chunkname); - - if (lua_status == 0) - rv = 1; - else - rv = template_error(L, parser); - - template_close(parser); - - return rv; -} - -int template_L_parse(lua_State *L) -{ - const char *file = luaL_checkstring(L, 1); - struct template_parser *parser = template_open(file); - - return template_L_do_parse(L, parser, file); -} - -int template_L_parse_string(lua_State *L) -{ - size_t len; - const char *str = luaL_checklstring(L, 1, &len); - struct template_parser *parser = template_string(str, len); - - return template_L_do_parse(L, parser, "[string]"); -} - -int template_L_utf8(lua_State *L) -{ - size_t len = 0; - const char *str = luaL_checklstring(L, 1, &len); - char *res = utf8(str, len); - - if (res != NULL) - { - lua_pushstring(L, res); - free(res); - - return 1; - } - - return 0; -} - -int template_L_pcdata(lua_State *L) -{ - size_t len = 0; - const char *str = luaL_checklstring(L, 1, &len); - char *res = pcdata(str, len); - - if (res != NULL) - { - lua_pushstring(L, res); - free(res); - - return 1; - } - - return 0; -} - -int template_L_striptags(lua_State *L) -{ - size_t len = 0; - const char *str = luaL_checklstring(L, 1, &len); - char *res = striptags(str, len); - - if (res != NULL) - { - lua_pushstring(L, res); - free(res); - - return 1; - } - - return 0; -} - -static int template_L_load_catalog(lua_State *L) { - const char *lang = luaL_optstring(L, 1, "en"); - const char *dir = luaL_optstring(L, 2, NULL); - lua_pushboolean(L, !lmo_load_catalog(lang, dir)); - return 1; -} - -static int template_L_close_catalog(lua_State *L) { - const char *lang = luaL_optstring(L, 1, "en"); - lmo_close_catalog(lang); - return 0; -} - -static int template_L_change_catalog(lua_State *L) { - const char *lang = luaL_optstring(L, 1, "en"); - lua_pushboolean(L, !lmo_change_catalog(lang)); - return 1; -} - -static int template_L_translate(lua_State *L) { - size_t len; - char *tr; - int trlen; - const char *key = luaL_checklstring(L, 1, &len); - - switch (lmo_translate(key, len, &tr, &trlen)) - { - case 0: - lua_pushlstring(L, tr, trlen); - return 1; - - case -1: - return 0; - } - - lua_pushnil(L); - lua_pushstring(L, "no catalog loaded"); - return 2; -} - -static int template_L_hash(lua_State *L) { - size_t len; - const char *key = luaL_checklstring(L, 1, &len); - lua_pushinteger(L, sfh_hash(key, len)); - return 1; -} - - -/* module table */ -static const luaL_reg R[] = { - { "parse", template_L_parse }, - { "parse_string", template_L_parse_string }, - { "utf8", template_L_utf8 }, - { "pcdata", template_L_pcdata }, - { "striptags", template_L_striptags }, - { "load_catalog", template_L_load_catalog }, - { "close_catalog", template_L_close_catalog }, - { "change_catalog", template_L_change_catalog }, - { "translate", template_L_translate }, - { "hash", template_L_hash }, - { NULL, NULL } -}; - -LUALIB_API int luaopen_luci_template_parser(lua_State *L) { - luaL_register(L, TEMPLATE_LUALIB_META, R); - return 1; -} diff --git a/luci-base/src/template_lualib.h b/luci-base/src/template_lualib.h deleted file mode 100644 index ff7746d15..000000000 --- a/luci-base/src/template_lualib.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * LuCI Template - Lua library header - * - * Copyright (C) 2009 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _TEMPLATE_LUALIB_H_ -#define _TEMPLATE_LUALIB_H_ - -#include "template_parser.h" -#include "template_utils.h" -#include "template_lmo.h" - -#define TEMPLATE_LUALIB_META "template.parser" - -LUALIB_API int luaopen_luci_template_parser(lua_State *L); - -#endif diff --git a/luci-base/src/template_parser.c b/luci-base/src/template_parser.c deleted file mode 100644 index 0ef08c63d..000000000 --- a/luci-base/src/template_parser.c +++ /dev/null @@ -1,419 +0,0 @@ -/* - * LuCI Template - Parser implementation - * - * Copyright (C) 2009-2012 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_parser.h" -#include "template_utils.h" -#include "template_lmo.h" - - -/* leading and trailing code for different types */ -const char *gen_code[9][2] = { - { NULL, NULL }, - { "write(\"", "\")" }, - { NULL, NULL }, - { "write(tostring(", " or \"\"))" }, - { "include(\"", "\")" }, - { "write(\"", "\")" }, - { "write(\"", "\")" }, - { NULL, " " }, - { NULL, NULL }, -}; - -/* Simple strstr() like function that takes len arguments for both haystack and needle. */ -static char *strfind(char *haystack, int hslen, const char *needle, int ndlen) -{ - int match = 0; - int i, j; - - for( i = 0; i < hslen; i++ ) - { - if( haystack[i] == needle[0] ) - { - match = ((ndlen == 1) || ((i + ndlen) <= hslen)); - - for( j = 1; (j < ndlen) && ((i + j) < hslen); j++ ) - { - if( haystack[i+j] != needle[j] ) - { - match = 0; - break; - } - } - - if( match ) - return &haystack[i]; - } - } - - return NULL; -} - -struct template_parser * template_open(const char *file) -{ - struct stat s; - struct template_parser *parser; - - if (!(parser = malloc(sizeof(*parser)))) - goto err; - - memset(parser, 0, sizeof(*parser)); - parser->fd = -1; - parser->file = file; - - if (stat(file, &s)) - goto err; - - if ((parser->fd = open(file, O_RDONLY)) < 0) - goto err; - - parser->size = s.st_size; - parser->data = mmap(NULL, parser->size, PROT_READ, MAP_PRIVATE, - parser->fd, 0); - - if (parser->data != MAP_FAILED) - { - parser->off = parser->data; - parser->cur_chunk.type = T_TYPE_INIT; - parser->cur_chunk.s = parser->data; - parser->cur_chunk.e = parser->data; - - return parser; - } - -err: - template_close(parser); - return NULL; -} - -struct template_parser * template_string(const char *str, uint32_t len) -{ - struct template_parser *parser; - - if (!str) { - errno = EINVAL; - goto err; - } - - if (!(parser = malloc(sizeof(*parser)))) - goto err; - - memset(parser, 0, sizeof(*parser)); - parser->fd = -1; - - parser->size = len; - parser->data = (char*)str; - - parser->off = parser->data; - parser->cur_chunk.type = T_TYPE_INIT; - parser->cur_chunk.s = parser->data; - parser->cur_chunk.e = parser->data; - - return parser; - -err: - template_close(parser); - return NULL; -} - -void template_close(struct template_parser *parser) -{ - if (!parser) - return; - - if (parser->gc != NULL) - free(parser->gc); - - /* if file is not set, we were parsing a string */ - if (parser->file) { - if ((parser->data != NULL) && (parser->data != MAP_FAILED)) - munmap(parser->data, parser->size); - - if (parser->fd >= 0) - close(parser->fd); - } - - free(parser); -} - -void template_text(struct template_parser *parser, const char *e) -{ - const char *s = parser->off; - - if (s < (parser->data + parser->size)) - { - if (parser->strip_after) - { - while ((s <= e) && isspace(*s)) - s++; - } - - parser->cur_chunk.type = T_TYPE_TEXT; - } - else - { - parser->cur_chunk.type = T_TYPE_EOF; - } - - parser->cur_chunk.line = parser->line; - parser->cur_chunk.s = s; - parser->cur_chunk.e = e; -} - -void template_code(struct template_parser *parser, const char *e) -{ - const char *s = parser->off; - - parser->strip_before = 0; - parser->strip_after = 0; - - if (*s == '-') - { - parser->strip_before = 1; - for (s++; (s <= e) && (*s == ' ' || *s == '\t'); s++); - } - - if (*(e-1) == '-') - { - parser->strip_after = 1; - for (e--; (e >= s) && (*e == ' ' || *e == '\t'); e--); - } - - switch (*s) - { - /* comment */ - case '#': - s++; - parser->cur_chunk.type = T_TYPE_COMMENT; - break; - - /* include */ - case '+': - s++; - parser->cur_chunk.type = T_TYPE_INCLUDE; - break; - - /* translate */ - case ':': - s++; - parser->cur_chunk.type = T_TYPE_I18N; - break; - - /* translate raw */ - case '_': - s++; - parser->cur_chunk.type = T_TYPE_I18N_RAW; - break; - - /* expr */ - case '=': - s++; - parser->cur_chunk.type = T_TYPE_EXPR; - break; - - /* code */ - default: - parser->cur_chunk.type = T_TYPE_CODE; - break; - } - - parser->cur_chunk.line = parser->line; - parser->cur_chunk.s = s; - parser->cur_chunk.e = e; -} - -static const char * -template_format_chunk(struct template_parser *parser, size_t *sz) -{ - const char *s, *p; - const char *head, *tail; - struct template_chunk *c = &parser->prv_chunk; - struct template_buffer *buf; - - *sz = 0; - s = parser->gc = NULL; - - if (parser->strip_before && c->type == T_TYPE_TEXT) - { - while ((c->e > c->s) && isspace(*(c->e - 1))) - c->e--; - } - - /* empty chunk */ - if (c->s == c->e) - { - if (c->type == T_TYPE_EOF) - { - *sz = 0; - s = NULL; - } - else - { - *sz = 1; - s = " "; - } - } - - /* format chunk */ - else if ((buf = buf_init(c->e - c->s)) != NULL) - { - if ((head = gen_code[c->type][0]) != NULL) - buf_append(buf, head, strlen(head)); - - switch (c->type) - { - case T_TYPE_TEXT: - luastr_escape(buf, c->s, c->e - c->s, 0); - break; - - case T_TYPE_EXPR: - buf_append(buf, c->s, c->e - c->s); - for (p = c->s; p < c->e; p++) - parser->line += (*p == '\n'); - break; - - case T_TYPE_INCLUDE: - luastr_escape(buf, c->s, c->e - c->s, 0); - break; - - case T_TYPE_I18N: - luastr_translate(buf, c->s, c->e - c->s, 1); - break; - - case T_TYPE_I18N_RAW: - luastr_translate(buf, c->s, c->e - c->s, 0); - break; - - case T_TYPE_CODE: - buf_append(buf, c->s, c->e - c->s); - for (p = c->s; p < c->e; p++) - parser->line += (*p == '\n'); - break; - } - - if ((tail = gen_code[c->type][1]) != NULL) - buf_append(buf, tail, strlen(tail)); - - *sz = buf_length(buf); - s = parser->gc = buf_destroy(buf); - - if (!*sz) - { - *sz = 1; - s = " "; - } - } - - return s; -} - -const char *template_reader(lua_State *L, void *ud, size_t *sz) -{ - struct template_parser *parser = ud; - int rem = parser->size - (parser->off - parser->data); - char *tag; - - parser->prv_chunk = parser->cur_chunk; - - /* free previous string */ - if (parser->gc) - { - free(parser->gc); - parser->gc = NULL; - } - - /* before tag */ - if (!parser->in_expr) - { - if ((tag = strfind(parser->off, rem, "<%", 2)) != NULL) - { - template_text(parser, tag); - parser->off = tag + 2; - parser->in_expr = 1; - } - else - { - template_text(parser, parser->data + parser->size); - parser->off = parser->data + parser->size; - } - } - - /* inside tag */ - else - { - if ((tag = strfind(parser->off, rem, "%>", 2)) != NULL) - { - template_code(parser, tag); - parser->off = tag + 2; - parser->in_expr = 0; - } - else - { - /* unexpected EOF */ - template_code(parser, parser->data + parser->size); - - *sz = 1; - return "\033"; - } - } - - return template_format_chunk(parser, sz); -} - -int template_error(lua_State *L, struct template_parser *parser) -{ - const char *err = luaL_checkstring(L, -1); - const char *off = parser->prv_chunk.s; - const char *ptr; - char msg[1024]; - int line = 0; - int chunkline = 0; - - if ((ptr = strfind((char *)err, strlen(err), "]:", 2)) != NULL) - { - chunkline = atoi(ptr + 2) - parser->prv_chunk.line; - - while (*ptr) - { - if (*ptr++ == ' ') - { - err = ptr; - break; - } - } - } - - if (strfind((char *)err, strlen(err), "'char(27)'", 10) != NULL) - { - off = parser->data + parser->size; - err = "'%>' expected before end of file"; - chunkline = 0; - } - - for (ptr = parser->data; ptr < off; ptr++) - if (*ptr == '\n') - line++; - - snprintf(msg, sizeof(msg), "Syntax error in %s:%d: %s", - parser->file ? parser->file : "[string]", line + chunkline, err ? err : "(unknown error)"); - - lua_pushnil(L); - lua_pushinteger(L, line + chunkline); - lua_pushstring(L, msg); - - return 3; -} diff --git a/luci-base/src/template_parser.h b/luci-base/src/template_parser.h deleted file mode 100644 index 2415e8707..000000000 --- a/luci-base/src/template_parser.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * LuCI Template - Parser header - * - * Copyright (C) 2009 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _TEMPLATE_PARSER_H_ -#define _TEMPLATE_PARSER_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - - -/* code types */ -#define T_TYPE_INIT 0 -#define T_TYPE_TEXT 1 -#define T_TYPE_COMMENT 2 -#define T_TYPE_EXPR 3 -#define T_TYPE_INCLUDE 4 -#define T_TYPE_I18N 5 -#define T_TYPE_I18N_RAW 6 -#define T_TYPE_CODE 7 -#define T_TYPE_EOF 8 - - -struct template_chunk { - const char *s; - const char *e; - int type; - int line; -}; - -/* parser state */ -struct template_parser { - int fd; - uint32_t size; - char *data; - char *off; - char *gc; - int line; - int in_expr; - int strip_before; - int strip_after; - struct template_chunk prv_chunk; - struct template_chunk cur_chunk; - const char *file; -}; - -struct template_parser * template_open(const char *file); -struct template_parser * template_string(const char *str, uint32_t len); -void template_close(struct template_parser *parser); - -const char *template_reader(lua_State *L, void *ud, size_t *sz); -int template_error(lua_State *L, struct template_parser *parser); - -#endif diff --git a/luci-base/src/template_utils.c b/luci-base/src/template_utils.c deleted file mode 100644 index 3979487f1..000000000 --- a/luci-base/src/template_utils.c +++ /dev/null @@ -1,484 +0,0 @@ -/* - * LuCI Template - Utility functions - * - * Copyright (C) 2010 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "template_utils.h" -#include "template_lmo.h" - -/* initialize a buffer object */ -struct template_buffer * buf_init(int size) -{ - struct template_buffer *buf; - - if (size <= 0) - size = 1024; - - buf = (struct template_buffer *)malloc(sizeof(struct template_buffer)); - - if (buf != NULL) - { - buf->fill = 0; - buf->size = size; - buf->data = malloc(buf->size); - - if (buf->data != NULL) - { - buf->dptr = buf->data; - buf->data[0] = 0; - - return buf; - } - - free(buf); - } - - return NULL; -} - -/* grow buffer */ -int buf_grow(struct template_buffer *buf, int size) -{ - unsigned int off = (buf->dptr - buf->data); - char *data; - - if (size <= 0) - size = 1024; - - data = realloc(buf->data, buf->size + size); - - if (data != NULL) - { - buf->data = data; - buf->dptr = data + off; - buf->size += size; - - return buf->size; - } - - return 0; -} - -/* put one char into buffer object */ -int buf_putchar(struct template_buffer *buf, char c) -{ - if( ((buf->fill + 1) >= buf->size) && !buf_grow(buf, 0) ) - return 0; - - *(buf->dptr++) = c; - *(buf->dptr) = 0; - - buf->fill++; - return 1; -} - -/* append data to buffer */ -int buf_append(struct template_buffer *buf, const char *s, int len) -{ - if ((buf->fill + len + 1) >= buf->size) - { - if (!buf_grow(buf, len + 1)) - return 0; - } - - memcpy(buf->dptr, s, len); - buf->fill += len; - buf->dptr += len; - - *(buf->dptr) = 0; - - return len; -} - -/* read buffer length */ -int buf_length(struct template_buffer *buf) -{ - return buf->fill; -} - -/* destroy buffer object and return pointer to data */ -char * buf_destroy(struct template_buffer *buf) -{ - char *data = buf->data; - - free(buf); - return data; -} - - -/* calculate the number of expected continuation chars */ -static inline int mb_num_chars(unsigned char c) -{ - if ((c & 0xE0) == 0xC0) - return 2; - else if ((c & 0xF0) == 0xE0) - return 3; - else if ((c & 0xF8) == 0xF0) - return 4; - else if ((c & 0xFC) == 0xF8) - return 5; - else if ((c & 0xFE) == 0xFC) - return 6; - - return 1; -} - -/* test whether the given byte is a valid continuation char */ -static inline int mb_is_cont(unsigned char c) -{ - return ((c >= 0x80) && (c <= 0xBF)); -} - -/* test whether the byte sequence at the given pointer with the given - * length is the shortest possible representation of the code point */ -static inline int mb_is_shortest(unsigned char *s, int n) -{ - switch (n) - { - case 2: - /* 1100000x (10xxxxxx) */ - return !(((*s >> 1) == 0x60) && - ((*(s+1) >> 6) == 0x02)); - - case 3: - /* 11100000 100xxxxx (10xxxxxx) */ - return !((*s == 0xE0) && - ((*(s+1) >> 5) == 0x04) && - ((*(s+2) >> 6) == 0x02)); - - case 4: - /* 11110000 1000xxxx (10xxxxxx 10xxxxxx) */ - return !((*s == 0xF0) && - ((*(s+1) >> 4) == 0x08) && - ((*(s+2) >> 6) == 0x02) && - ((*(s+3) >> 6) == 0x02)); - - case 5: - /* 11111000 10000xxx (10xxxxxx 10xxxxxx 10xxxxxx) */ - return !((*s == 0xF8) && - ((*(s+1) >> 3) == 0x10) && - ((*(s+2) >> 6) == 0x02) && - ((*(s+3) >> 6) == 0x02) && - ((*(s+4) >> 6) == 0x02)); - - case 6: - /* 11111100 100000xx (10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx) */ - return !((*s == 0xF8) && - ((*(s+1) >> 2) == 0x20) && - ((*(s+2) >> 6) == 0x02) && - ((*(s+3) >> 6) == 0x02) && - ((*(s+4) >> 6) == 0x02) && - ((*(s+5) >> 6) == 0x02)); - } - - return 1; -} - -/* test whether the byte sequence at the given pointer with the given - * length is an UTF-16 surrogate */ -static inline int mb_is_surrogate(unsigned char *s, int n) -{ - return ((n == 3) && (*s == 0xED) && (*(s+1) >= 0xA0) && (*(s+1) <= 0xBF)); -} - -/* test whether the byte sequence at the given pointer with the given - * length is an illegal UTF-8 code point */ -static inline int mb_is_illegal(unsigned char *s, int n) -{ - return ((n == 3) && (*s == 0xEF) && (*(s+1) == 0xBF) && - (*(s+2) >= 0xBE) && (*(s+2) <= 0xBF)); -} - - -/* scan given source string, validate UTF-8 sequence and store result - * in given buffer object */ -static int _validate_utf8(unsigned char **s, int l, struct template_buffer *buf) -{ - unsigned char *ptr = *s; - unsigned int o = 0, v, n; - - /* ascii byte without null */ - if ((*(ptr+0) >= 0x01) && (*(ptr+0) <= 0x7F)) - { - if (!buf_putchar(buf, *ptr++)) - return 0; - - o = 1; - } - - /* multi byte sequence */ - else if ((n = mb_num_chars(*ptr)) > 1) - { - /* count valid chars */ - for (v = 1; (v <= n) && ((o+v) < l) && mb_is_cont(*(ptr+v)); v++); - - switch (n) - { - case 6: - case 5: - /* five and six byte sequences are always invalid */ - if (!buf_putchar(buf, '?')) - return 0; - - break; - - default: - /* if the number of valid continuation bytes matches the - * expected number and if the sequence is legal, copy - * the bytes to the destination buffer */ - if ((v == n) && mb_is_shortest(ptr, n) && - !mb_is_surrogate(ptr, n) && !mb_is_illegal(ptr, n)) - { - /* copy sequence */ - if (!buf_append(buf, (char *)ptr, n)) - return 0; - } - - /* the found sequence is illegal, skip it */ - else - { - /* invalid sequence */ - if (!buf_putchar(buf, '?')) - return 0; - } - - break; - } - - /* advance beyound the last found valid continuation char */ - o = v; - ptr += v; - } - - /* invalid byte (0x00) */ - else - { - if (!buf_putchar(buf, '?')) /* or 0xEF, 0xBF, 0xBD */ - return 0; - - o = 1; - ptr++; - } - - *s = ptr; - return o; -} - -/* sanitize given string and replace all invalid UTF-8 sequences with "?" */ -char * utf8(const char *s, unsigned int l) -{ - struct template_buffer *buf = buf_init(l); - unsigned char *ptr = (unsigned char *)s; - unsigned int v, o; - - if (!buf) - return NULL; - - for (o = 0; o < l; o++) - { - /* ascii char */ - if ((*ptr >= 0x01) && (*ptr <= 0x7F)) - { - if (!buf_putchar(buf, (char)*ptr++)) - break; - } - - /* invalid byte or multi byte sequence */ - else - { - if (!(v = _validate_utf8(&ptr, l - o, buf))) - break; - - o += (v - 1); - } - } - - return buf_destroy(buf); -} - -/* Sanitize given string and strip all invalid XML bytes - * Validate UTF-8 sequences - * Escape XML control chars */ -char * pcdata(const char *s, unsigned int l) -{ - struct template_buffer *buf = buf_init(l); - unsigned char *ptr = (unsigned char *)s; - unsigned int o, v; - char esq[8]; - int esl; - - if (!buf) - return NULL; - - for (o = 0; o < l; o++) - { - /* Invalid XML bytes */ - if (((*ptr >= 0x00) && (*ptr <= 0x08)) || - ((*ptr >= 0x0B) && (*ptr <= 0x0C)) || - ((*ptr >= 0x0E) && (*ptr <= 0x1F)) || - (*ptr == 0x7F)) - { - ptr++; - } - - /* Escapes */ - else if ((*ptr == 0x26) || - (*ptr == 0x27) || - (*ptr == 0x22) || - (*ptr == 0x3C) || - (*ptr == 0x3E)) - { - esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr); - - if (!buf_append(buf, esq, esl)) - break; - - ptr++; - } - - /* ascii char */ - else if (*ptr <= 0x7F) - { - buf_putchar(buf, (char)*ptr++); - } - - /* multi byte sequence */ - else - { - if (!(v = _validate_utf8(&ptr, l - o, buf))) - break; - - o += (v - 1); - } - } - - return buf_destroy(buf); -} - -char * striptags(const char *s, unsigned int l) -{ - struct template_buffer *buf = buf_init(l); - unsigned char *ptr = (unsigned char *)s; - unsigned char *end = ptr + l; - unsigned char *tag; - unsigned char prev; - char esq[8]; - int esl; - - for (prev = ' '; ptr < end; ptr++) - { - if ((*ptr == '<') && ((ptr + 2) < end) && - ((*(ptr + 1) == '/') || isalpha(*(ptr + 1)))) - { - for (tag = ptr; tag < end; tag++) - { - if (*tag == '>') - { - if (!isspace(prev)) - buf_putchar(buf, ' '); - - ptr = tag; - prev = ' '; - break; - } - } - } - else if (isspace(*ptr)) - { - if (!isspace(prev)) - buf_putchar(buf, *ptr); - - prev = *ptr; - } - else - { - switch(*ptr) - { - case '"': - case '\'': - case '<': - case '>': - case '&': - esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr); - buf_append(buf, esq, esl); - break; - - default: - buf_putchar(buf, *ptr); - break; - } - - prev = *ptr; - } - } - - return buf_destroy(buf); -} - -void luastr_escape(struct template_buffer *out, const char *s, unsigned int l, - int escape_xml) -{ - int esl; - char esq[8]; - char *ptr; - - for (ptr = (char *)s; ptr < (s + l); ptr++) - { - switch (*ptr) - { - case '\\': - buf_append(out, "\\\\", 2); - break; - - case '"': - if (escape_xml) - buf_append(out, """, 5); - else - buf_append(out, "\\\"", 2); - break; - - case '\n': - buf_append(out, "\\n", 2); - break; - - case '\'': - case '&': - case '<': - case '>': - if (escape_xml) - { - esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr); - buf_append(out, esq, esl); - break; - } - - default: - buf_putchar(out, *ptr); - } - } -} - -void luastr_translate(struct template_buffer *out, const char *s, unsigned int l, - int escape_xml) -{ - char *tr; - int trlen; - - if (!lmo_translate(s, l, &tr, &trlen)) - luastr_escape(out, tr, trlen, escape_xml); - else - luastr_escape(out, s, l, escape_xml); -} diff --git a/luci-base/src/template_utils.h b/luci-base/src/template_utils.h deleted file mode 100644 index 32a79f93b..000000000 --- a/luci-base/src/template_utils.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * LuCI Template - Utility header - * - * Copyright (C) 2010-2012 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef _TEMPLATE_UTILS_H_ -#define _TEMPLATE_UTILS_H_ - -#include -#include -#include - - -/* buffer object */ -struct template_buffer { - char *data; - char *dptr; - unsigned int size; - unsigned int fill; -}; - -struct template_buffer * buf_init(int size); -int buf_grow(struct template_buffer *buf, int size); -int buf_putchar(struct template_buffer *buf, char c); -int buf_append(struct template_buffer *buf, const char *s, int len); -int buf_length(struct template_buffer *buf); -char * buf_destroy(struct template_buffer *buf); - -char * utf8(const char *s, unsigned int l); -char * pcdata(const char *s, unsigned int l); -char * striptags(const char *s, unsigned int l); - -void luastr_escape(struct template_buffer *out, const char *s, unsigned int l, int escape_xml); -void luastr_translate(struct template_buffer *out, const char *s, unsigned int l, int escape_xml); - -#endif diff --git a/luci-mod-admin-full/Makefile b/luci-mod-admin-full/Makefile deleted file mode 100644 index ec4b232af..000000000 --- a/luci-mod-admin-full/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# -# Copyright (C) 2008-2014 The LuCI Team -# Copyright (C) 2017-2019 Ycarus (Yannick Chabanois) -# -# This is free software, licensed under the Apache License, Version 2.0 . -# - -include $(TOPDIR)/rules.mk - -LUCI_TITLE:=LuCI Administration - full-featured for full control -LUCI_DEPENDS:=+luci-base +luci-app-firewall +luci-lib-iptparser - -PKG_BUILD_DEPENDS:=iwinfo -PKG_LICENSE:=Apache-2.0 - -include ../luci/luci.mk - -# call BuildPackage - OpenWrt buildroot signature - diff --git a/luci-mod-admin-full/htdocs/luci-static/resources/bandwidth.svg b/luci-mod-admin-full/htdocs/luci-static/resources/bandwidth.svg deleted file mode 100644 index 5a121b85c..000000000 --- a/luci-mod-admin-full/htdocs/luci-static/resources/bandwidth.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/luci-mod-admin-full/htdocs/luci-static/resources/connections.svg b/luci-mod-admin-full/htdocs/luci-static/resources/connections.svg deleted file mode 100644 index 5794e7942..000000000 --- a/luci-mod-admin-full/htdocs/luci-static/resources/connections.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/luci-mod-admin-full/htdocs/luci-static/resources/load.svg b/luci-mod-admin-full/htdocs/luci-static/resources/load.svg deleted file mode 100644 index 716d37617..000000000 --- a/luci-mod-admin-full/htdocs/luci-static/resources/load.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/luci-mod-admin-full/htdocs/luci-static/resources/wifirate.svg b/luci-mod-admin-full/htdocs/luci-static/resources/wifirate.svg deleted file mode 100644 index e75ea614c..000000000 --- a/luci-mod-admin-full/htdocs/luci-static/resources/wifirate.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/luci-mod-admin-full/htdocs/luci-static/resources/wireless.svg b/luci-mod-admin-full/htdocs/luci-static/resources/wireless.svg deleted file mode 100644 index 00cc2a12f..000000000 --- a/luci-mod-admin-full/htdocs/luci-static/resources/wireless.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/luci-mod-admin-full/luasrc/controller/admin/filebrowser.lua b/luci-mod-admin-full/luasrc/controller/admin/filebrowser.lua deleted file mode 100644 index 257261513..000000000 --- a/luci-mod-admin-full/luasrc/controller/admin/filebrowser.lua +++ /dev/null @@ -1,9 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.filebrowser", package.seeall) - -function index() - entry( {"admin", "filebrowser"}, template("cbi/filebrowser") ).leaf = true -end diff --git a/luci-mod-admin-full/luasrc/controller/admin/index.lua b/luci-mod-admin-full/luasrc/controller/admin/index.lua deleted file mode 100644 index cc8c2e3ae..000000000 --- a/luci-mod-admin-full/luasrc/controller/admin/index.lua +++ /dev/null @@ -1,42 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.index", package.seeall) - -function index() - local root = node() - if not root.target then - root.target = alias("admin") - root.index = true - end - - local page = node("admin") - page.target = firstchild() - page.title = _("Administration") - page.order = 10 - page.sysauth = "root" - page.sysauth_authenticator = "htmlauth" - page.ucidata = true - page.index = true - - -- Empty services menu to be populated by addons - entry({"admin", "services"}, firstchild(), _("Services"), 40).index = true - - entry({"admin", "logout"}, call("action_logout"), _("Logout"), 90) -end - -function action_logout() - local dsp = require "luci.dispatcher" - local utl = require "luci.util" - local sid = dsp.context.authsession - - if sid then - utl.ubus("session", "destroy", { ubus_rpc_session = sid }) - - luci.http.header("Set-Cookie", "sysauth=%s; expires=%s; path=%s/" %{ - sid, 'Thu, 01 Jan 1970 01:00:00 GMT', dsp.build_url() - }) - end - - luci.http.redirect(dsp.build_url()) -end diff --git a/luci-mod-admin-full/luasrc/controller/admin/network.lua b/luci-mod-admin-full/luasrc/controller/admin/network.lua deleted file mode 100644 index aef67a364..000000000 --- a/luci-mod-admin-full/luasrc/controller/admin/network.lua +++ /dev/null @@ -1,473 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011-2018 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.network", package.seeall) - -function index() - local uci = require("luci.model.uci").cursor() - local page - - page = node("admin", "network") - page.target = firstchild() - page.title = _("Network") - page.order = 50 - page.index = true - --- if page.inreq then - local has_switch = false - - uci:foreach("network", "switch", - function(s) - has_switch = true - return false - end) - - if has_switch then - page = node("admin", "network", "vlan") - page.target = cbi("admin_network/vlan") - page.title = _("Switch") - page.order = 20 - - page = entry({"admin", "network", "switch_status"}, call("switch_status"), nil) - page.leaf = true - end - - - local has_wifi = false - - uci:foreach("wireless", "wifi-device", - function(s) - has_wifi = true - return false - end) - - if has_wifi then - page = entry({"admin", "network", "wireless_assoclist"}, call("wifi_assoclist"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_join"}, post("wifi_join"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_add"}, post("wifi_add"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_status"}, call("wifi_status"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_reconnect"}, post("wifi_reconnect"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_scan_trigger"}, post("wifi_scan_trigger"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless_scan_results"}, call("wifi_scan_results"), nil) - page.leaf = true - - page = entry({"admin", "network", "wireless"}, arcombine(cbi("admin_network/wifi_overview"), cbi("admin_network/wifi")), _("Wireless"), 15) - page.leaf = true - page.subindex = true - - if page.inreq then - local wdev - local net = require "luci.model.network".init(uci) - for _, wdev in ipairs(net:get_wifidevs()) do - local wnet - for _, wnet in ipairs(wdev:get_wifinets()) do - entry( - {"admin", "network", "wireless", wnet:id()}, - alias("admin", "network", "wireless"), - wdev:name() .. ": " .. wnet:shortname() - ) - end - end - end - end - - - page = entry({"admin", "network", "iface_add"}, form("admin_network/iface_add"), nil) - page.leaf = true - - page = entry({"admin", "network", "iface_status"}, call("iface_status"), nil) - page.leaf = true - - page = entry({"admin", "network", "iface_reconnect"}, post("iface_reconnect"), nil) - page.leaf = true - - page = entry({"admin", "network", "network"}, arcombine(cbi("admin_network/network"), cbi("admin_network/ifaces")), _("Interfaces"), 10) - page.leaf = true - page.subindex = true - - if page.inreq then - uci:foreach("network", "interface", - function (section) - local ifc = section[".name"] - if ifc ~= "loopback" then - entry({"admin", "network", "network", ifc}, - true, ifc:upper()) - end - end) - end - - - if nixio.fs.access("/etc/config/dhcp") then - page = node("admin", "network", "dhcp") - page.target = cbi("admin_network/dhcp") - page.title = _("DHCP and DNS") - page.order = 30 - - page = entry({"admin", "network", "dhcplease_status"}, call("lease_status"), nil) - page.leaf = true - - page = node("admin", "network", "hosts") - page.target = cbi("admin_network/hosts") - page.title = _("Hostnames") - page.order = 40 - end - - page = node("admin", "network", "routes") - page.target = cbi("admin_network/routes") - page.title = _("Static Routes") - page.order = 50 - - page = node("admin", "network", "diagnostics") - page.target = template("admin_network/diagnostics") - page.title = _("Diagnostics") - page.order = 60 - - page = entry({"admin", "network", "diag_ping"}, post("diag_ping"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_nslookup"}, post("diag_nslookup"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_traceroute"}, post("diag_traceroute"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_ping6"}, post("diag_ping6"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_traceroute6"}, post("diag_traceroute6"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_speedtest"}, post("diag_speedtest"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_getip"}, post("diag_getip"), nil) - page.leaf = true - - page = entry({"admin", "network", "diag_netstat"}, post("diag_netstat"), nil) - page.leaf = true --- end -end - -function wifi_join() - local tpl = require "luci.template" - local http = require "luci.http" - local dev = http.formvalue("device") - local ssid = http.formvalue("join") - - if dev and ssid then - local cancel = (http.formvalue("cancel") or http.formvalue("cbi.cancel")) - if not cancel then - local cbi = require "luci.cbi" - local map = luci.cbi.load("admin_network/wifi_add")[1] - - if map:parse() ~= cbi.FORM_DONE then - tpl.render("header") - map:render() - tpl.render("footer") - end - - return - end - end - - tpl.render("admin_network/wifi_join") -end - -function wifi_add() - local dev = luci.http.formvalue("device") - local ntm = require "luci.model.network".init() - - dev = dev and ntm:get_wifidev(dev) - - if dev then - local net = dev:add_wifinet({ - mode = "ap", - ssid = "OpenWrt", - encryption = "none" - }) - - ntm:save("wireless") - luci.http.redirect(net:adminlink()) - end -end - -function iface_status(ifaces) - local netm = require "luci.model.network".init() - local rv = { } - - local iface - for iface in ifaces:gmatch("[%w%.%-_]+") do - local net = netm:get_network(iface) - local device = net and net:get_interface() - if device then - local data = { - id = iface, - desc = net:get_i18n(), - proto = net:proto(), - uptime = net:uptime(), - gwaddr = net:gwaddr(), - ipaddrs = net:ipaddrs(), - ip6addrs = net:ip6addrs(), - dnsaddrs = net:dnsaddrs(), - ip6prefix = net:ip6prefix(), - errors = net:errors(), - name = device:shortname(), - type = device:type(), - typename = device:get_type_i18n(), - ifname = device:name(), - macaddr = device:mac(), - is_up = net:is_up() and device:is_up(), - is_alias = net:is_alias(), - is_dynamic = net:is_dynamic(), - rx_bytes = device:rx_bytes(), - tx_bytes = device:tx_bytes(), - rx_packets = device:rx_packets(), - tx_packets = device:tx_packets(), - - subdevices = { } - } - - for _, device in ipairs(net:get_interfaces() or {}) do - data.subdevices[#data.subdevices+1] = { - name = device:shortname(), - type = device:type(), - typename = device:get_type_i18n(), - ifname = device:name(), - macaddr = device:mac(), - is_up = device:is_up(), - rx_bytes = device:rx_bytes(), - tx_bytes = device:tx_bytes(), - rx_packets = device:rx_packets(), - tx_packets = device:tx_packets(), - } - end - - rv[#rv+1] = data - else - rv[#rv+1] = { - id = iface, - name = iface, - type = "ethernet" - } - end - end - - if #rv > 0 then - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return - end - - luci.http.status(404, "No such device") -end - -function iface_reconnect(iface) - local netmd = require "luci.model.network".init() - local net = netmd:get_network(iface) - if net then - luci.sys.call("env -i /sbin/ifup %s >/dev/null 2>/dev/null" - % luci.util.shellquote(iface)) - luci.http.status(200, "Reconnected") - return - end - - luci.http.status(404, "No such interface") -end - -function wifi_status(devs) - local s = require "luci.tools.status" - local rv = { } - - if type(devs) == "string" then - local dev - for dev in devs:gmatch("[%w%.%-]+") do - rv[#rv+1] = s.wifi_network(dev) - end - end - - if #rv > 0 then - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - return - end - - luci.http.status(404, "No such device") -end - -function wifi_reconnect(radio) - local rc = luci.sys.call("env -i /sbin/wifi up %s" % luci.util.shellquote(radio)) - - if rc == 0 then - luci.http.status(200, "Reconnected") - else - luci.http.status(500, "Error") - end -end - -function wifi_assoclist() - local s = require "luci.tools.status" - - luci.http.prepare_content("application/json") - luci.http.write_json(s.wifi_assoclist()) -end - - -local function _wifi_get_scan_results(cache_key) - local results = luci.util.ubus("session", "get", { - ubus_rpc_session = luci.model.uci:get_session_id(), - keys = { cache_key } - }) - - if type(results) == "table" and - type(results.values) == "table" and - type(results.values[cache_key]) == "table" - then - return results.values[cache_key] - end - - return { } -end - -function wifi_scan_trigger(radio, update) - local iw = radio and luci.sys.wifi.getiwinfo(radio) - - if not iw then - luci.http.status(404, "No such radio device") - return - end - - luci.http.status(200, "Scan scheduled") - - if nixio.fork() == 0 then - io.stderr:close() - io.stdout:close() - - local _, bss - local data, bssids = { }, { } - local cache_key = "scan_%s" % radio - - luci.util.ubus("session", "set", { - ubus_rpc_session = luci.model.uci:get_session_id(), - values = { [cache_key] = nil } - }) - - for _, bss in ipairs(iw.scanlist or { }) do - data[_] = bss - bssids[bss.bssid] = bss - end - - if update then - for _, bss in ipairs(_wifi_get_scan_results(cache_key)) do - if not bssids[bss.bssid] then - bss.stale = true - data[#data + 1] = bss - end - end - end - - luci.util.ubus("session", "set", { - ubus_rpc_session = luci.model.uci:get_session_id(), - values = { [cache_key] = data } - }) - end -end - -function wifi_scan_results(radio) - local results = radio and _wifi_get_scan_results("scan_%s" % radio) - - if results and #results > 0 then - luci.http.prepare_content("application/json") - luci.http.write_json(results) - else - luci.http.status(404, "No wireless scan results") - end -end - -function lease_status() - local s = require "luci.tools.status" - - luci.http.prepare_content("application/json") - luci.http.write('[') - luci.http.write_json(s.dhcp_leases()) - luci.http.write(',') - luci.http.write_json(s.dhcp6_leases()) - luci.http.write(']') -end - -function switch_status(switches) - local s = require "luci.tools.status" - - luci.http.prepare_content("application/json") - luci.http.write_json(s.switch_status(switches)) -end - -function diag_command(cmd, addr) - if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then - luci.http.prepare_content("text/plain") - - local util = io.popen(cmd % addr) - if util then - while true do - local ln = util:read("*l") - if not ln then break end - luci.http.write(ln) - luci.http.write("\n") - end - - util:close() - end - - return - end - - luci.http.status(500, "Bad address") -end - -function diag_ping(addr) - diag_command("ping -c 5 -W 1 %s 2>&1", addr) -end - -function diag_traceroute(addr) - diag_command("traceroute -q 1 -w 1 -n %s 2>&1", addr) -end - -function diag_nslookup(addr) - diag_command("nslookup %s 2>&1", addr) -end - -function diag_ping6(addr) - diag_command("ping6 -c 5 %s 2>&1", addr) -end - -function diag_traceroute6(addr) - diag_command("traceroute6 -q 1 -w 2 -n %s 2>&1", addr) -end - -function diag_getip(addr) - diag_command("curl %q", addr) -end - -function diag_netstat(addr) - diag_command("netstat -lapute 2>&1", "openmptcprouter.com") -end - -function diag_speedtest(addr) - if addr then - diag_command("speedtestc --server %q 2>&1", addr) - else - diag_command("speedtestc 2>&1", "speedtest.net") - end -end diff --git a/luci-mod-admin-full/luasrc/controller/admin/status.lua b/luci-mod-admin-full/luasrc/controller/admin/status.lua deleted file mode 100644 index ff95f3d91..000000000 --- a/luci-mod-admin-full/luasrc/controller/admin/status.lua +++ /dev/null @@ -1,154 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.status", package.seeall) - -function index() - entry({"admin", "status"}, alias("admin", "status", "overview"), _("Status"), 20).index = true - entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1) - - entry({"admin", "status", "iptables"}, template("admin_status/iptables"), _("Firewall"), 2).leaf = true - entry({"admin", "status", "iptables_action"}, post("action_iptables")).leaf = true - - entry({"admin", "status", "routes"}, template("admin_status/routes"), _("Routes"), 3) - entry({"admin", "status", "syslog"}, call("action_syslog"), _("System Log"), 4) - entry({"admin", "status", "dmesg"}, call("action_dmesg"), _("Kernel Log"), 5) - entry({"admin", "status", "processes"}, form("admin_status/processes"), _("Processes"), 6) - - entry({"admin", "status", "realtime"}, alias("admin", "status", "realtime", "load"), _("Realtime Graphs"), 7) - - entry({"admin", "status", "realtime", "load"}, template("admin_status/load"), _("Load"), 1).leaf = true - entry({"admin", "status", "realtime", "load_status"}, call("action_load")).leaf = true - - entry({"admin", "status", "realtime", "bandwidth"}, template("admin_status/bandwidth"), _("Traffic"), 2).leaf = true - entry({"admin", "status", "realtime", "bandwidth_status"}, call("action_bandwidth")).leaf = true - - if nixio.fs.access("/etc/config/wireless") then - entry({"admin", "status", "realtime", "wireless"}, template("admin_status/wireless"), _("Wireless"), 3).leaf = true - entry({"admin", "status", "realtime", "wireless_status"}, call("action_wireless")).leaf = true - end - - entry({"admin", "status", "realtime", "connections"}, template("admin_status/connections"), _("Connections"), 4).leaf = true - entry({"admin", "status", "realtime", "connections_status"}, call("action_connections")).leaf = true - - entry({"admin", "status", "nameinfo"}, call("action_nameinfo")).leaf = true -end - -function action_syslog() - local syslog = luci.sys.syslog() - luci.template.render("admin_status/syslog", {syslog=syslog}) -end - -function action_dmesg() - local dmesg = luci.sys.dmesg() - luci.template.render("admin_status/dmesg", {dmesg=dmesg}) -end - -function action_iptables() - if luci.http.formvalue("zero") then - if luci.http.formvalue("family") == "6" then - luci.util.exec("/usr/sbin/ip6tables -Z") - else - luci.util.exec("/usr/sbin/iptables -Z") - end - elseif luci.http.formvalue("restart") then - luci.util.exec("/etc/init.d/firewall restart") - end - - luci.http.redirect(luci.dispatcher.build_url("admin/status/iptables")) -end - -function action_bandwidth(iface) - luci.http.prepare_content("application/json") - - local bwc = io.popen("luci-bwc -i %s 2>/dev/null" - % luci.util.shellquote(iface)) - - if bwc then - luci.http.write("[") - - while true do - local ln = bwc:read("*l") - if not ln then break end - luci.http.write(ln) - end - - luci.http.write("]") - bwc:close() - end -end - -function action_wireless(iface) - luci.http.prepare_content("application/json") - - local bwc = io.popen("luci-bwc -r %s 2>/dev/null" - % luci.util.shellquote(iface)) - - if bwc then - luci.http.write("[") - - while true do - local ln = bwc:read("*l") - if not ln then break end - luci.http.write(ln) - end - - luci.http.write("]") - bwc:close() - end -end - -function action_load() - luci.http.prepare_content("application/json") - - local bwc = io.popen("luci-bwc -l 2>/dev/null") - if bwc then - luci.http.write("[") - - while true do - local ln = bwc:read("*l") - if not ln then break end - luci.http.write(ln) - end - - luci.http.write("]") - bwc:close() - end -end - -function action_connections() - local sys = require "luci.sys" - - luci.http.prepare_content("application/json") - - luci.http.write('{ "connections": ') - luci.http.write_json(sys.net.conntrack()) - - local bwc = io.popen("luci-bwc -c 2>/dev/null") - if bwc then - luci.http.write(', "statistics": [') - - while true do - local ln = bwc:read("*l") - if not ln then break end - luci.http.write(ln) - end - - luci.http.write("]") - bwc:close() - end - - luci.http.write(" }") -end - -function action_nameinfo(...) - local util = require "luci.util" - - luci.http.prepare_content("application/json") - luci.http.write_json(util.ubus("network.rrdns", "lookup", { - addrs = { ... }, - timeout = 5000, - limit = 1000 - }) or { }) -end diff --git a/luci-mod-admin-full/luasrc/controller/admin/system.lua b/luci-mod-admin-full/luasrc/controller/admin/system.lua deleted file mode 100644 index 153615b58..000000000 --- a/luci-mod-admin-full/luasrc/controller/admin/system.lua +++ /dev/null @@ -1,448 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.system", package.seeall) - -function index() - local fs = require "nixio.fs" - - entry({"admin", "system"}, alias("admin", "system", "system"), _("System"), 30).index = true - entry({"admin", "system", "system"}, cbi("admin_system/system"), _("System"), 1) - entry({"admin", "system", "clock_status"}, post_on({ set = true }, "action_clock_status")) - - entry({"admin", "system", "admin"}, cbi("admin_system/admin"), _("Administration"), 2) - - if fs.access("/bin/opkg") then - entry({"admin", "system", "packages"}, post_on({ exec = "1" }, "action_packages"), _("Software"), 10) - entry({"admin", "system", "packages", "ipkg"}, form("admin_system/ipkg")) - end - - entry({"admin", "system", "startup"}, form("admin_system/startup"), _("Startup"), 45) - entry({"admin", "system", "crontab"}, form("admin_system/crontab"), _("Scheduled Tasks"), 46) - - if fs.access("/sbin/block") and fs.access("/etc/config/fstab") then - entry({"admin", "system", "fstab"}, cbi("admin_system/fstab"), _("Mount Points"), 50) - entry({"admin", "system", "fstab", "mount"}, cbi("admin_system/fstab/mount"), nil).leaf = true - entry({"admin", "system", "fstab", "swap"}, cbi("admin_system/fstab/swap"), nil).leaf = true - end - - local nodes, number = fs.glob("/sys/class/leds/*") - if number > 0 then - entry({"admin", "system", "leds"}, cbi("admin_system/leds"), _("LED Configuration"), 60) - end - - entry({"admin", "system", "flashops"}, call("action_flashops"), _("Backup / Flash Firmware"), 70) - entry({"admin", "system", "flashops", "reset"}, post("action_reset")) - entry({"admin", "system", "flashops", "backup"}, post("action_backup")) - entry({"admin", "system", "flashops", "backupfiles"}, form("admin_system/backupfiles")) - - -- call() instead of post() due to upload handling! - entry({"admin", "system", "flashops", "restore"}, call("action_restore")) - entry({"admin", "system", "flashops", "sysupgrade"}, call("action_sysupgrade")) - - entry({"admin", "system", "reboot"}, template("admin_system/reboot"), _("Reboot"), 90) - entry({"admin", "system", "reboot", "call"}, post("action_reboot")) -end - -function action_clock_status() - local set = tonumber(luci.http.formvalue("set")) - if set ~= nil and set > 0 then - local date = os.date("*t", set) - if date then - luci.sys.call("date -s '%04d-%02d-%02d %02d:%02d:%02d'" %{ - date.year, date.month, date.day, date.hour, date.min, date.sec - }) - luci.sys.call("/etc/init.d/sysfixtime restart") - end - end - - luci.http.prepare_content("application/json") - luci.http.write_json({ timestring = os.date("%c") }) -end - -function action_packages() - local fs = require "nixio.fs" - local ipkg = require "luci.model.ipkg" - local submit = (luci.http.formvalue("exec") == "1") - local update, upgrade - local changes = false - local install = { } - local remove = { } - local stdout = { "" } - local stderr = { "" } - local out, err - - -- Display - local display = luci.http.formvalue("display") or "available" - - -- Letter - local letter = string.byte(luci.http.formvalue("letter") or "A", 1) - letter = (letter == 35 or (letter >= 65 and letter <= 90)) and letter or 65 - - -- Search query - local query = luci.http.formvalue("query") - query = (query ~= '') and query or nil - - - -- Modifying actions - if submit then - -- Packets to be installed - local ninst = luci.http.formvalue("install") - local uinst = nil - - -- Install from URL - local url = luci.http.formvalue("url") - if url and url ~= '' then - uinst = url - end - - -- Do install - if ninst then - install[ninst], out, err = ipkg.install(ninst) - stdout[#stdout+1] = out - stderr[#stderr+1] = err - changes = true - end - - if uinst then - local pkg - for pkg in luci.util.imatch(uinst) do - install[uinst], out, err = ipkg.install(pkg) - stdout[#stdout+1] = out - stderr[#stderr+1] = err - changes = true - end - end - - -- Remove packets - local rem = luci.http.formvalue("remove") - if rem then - remove[rem], out, err = ipkg.remove(rem) - stdout[#stdout+1] = out - stderr[#stderr+1] = err - changes = true - end - - - -- Update all packets - update = luci.http.formvalue("update") - if update then - update, out, err = ipkg.update() - stdout[#stdout+1] = out - stderr[#stderr+1] = err - end - - - -- Upgrade all packets - upgrade = luci.http.formvalue("upgrade") - if upgrade then - upgrade, out, err = ipkg.upgrade() - stdout[#stdout+1] = out - stderr[#stderr+1] = err - end - end - - - -- List state - local no_lists = true - local old_lists = false - if fs.access("/var/opkg-lists/") then - local list - for list in fs.dir("/var/opkg-lists/") do - no_lists = false - if (fs.stat("/var/opkg-lists/"..list, "mtime") or 0) < (os.time() - (24 * 60 * 60)) then - old_lists = true - break - end - end - end - - - luci.template.render("admin_system/packages", { - display = display, - letter = letter, - query = query, - install = install, - remove = remove, - update = update, - upgrade = upgrade, - no_lists = no_lists, - old_lists = old_lists, - stdout = table.concat(stdout, ""), - stderr = table.concat(stderr, "") - }) - - -- Remove index cache - if changes then - fs.unlink("/tmp/luci-indexcache") - end -end - -local function image_supported(image) - return (os.execute("sysupgrade -T %q >/dev/null" % image) == 0) -end - -local function image_checksum(image) - return (luci.sys.exec("md5sum %q" % image):match("^([^%s]+)")) -end - -local function image_sha256_checksum(image) - return (luci.sys.exec("sha256sum %q" % image):match("^([^%s]+)")) -end - -local function supports_sysupgrade() - return nixio.fs.access("/lib/upgrade/platform.sh") -end - -local function supports_reset() - return (os.execute([[grep -sq "^overlayfs:/overlay / overlay " /proc/mounts]]) == 0) -end - -local function storage_size() - local size = 0 - if nixio.fs.access("/proc/mtd") then - for l in io.lines("/proc/mtd") do - local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"') - if n == "linux" or n == "firmware" then - size = tonumber(s, 16) - break - end - end - elseif nixio.fs.access("/proc/partitions") then - for l in io.lines("/proc/partitions") do - local x, y, b, n = l:match('^%s*(%d+)%s+(%d+)%s+([^%s]+)%s+([^%s]+)') - if b and n and not n:match('[0-9]') then - size = tonumber(b) * 1024 - break - end - end - end - return size -end - - -function action_flashops() - -- - -- Overview - -- - luci.template.render("admin_system/flashops", { - reset_avail = supports_reset(), - upgrade_avail = supports_sysupgrade() - }) -end - -function action_sysupgrade() - local fs = require "nixio.fs" - local http = require "luci.http" - local image_tmp = "/tmp/firmware.img" - - local fp - http.setfilehandler( - function(meta, chunk, eof) - if not fp and meta and meta.name == "image" then - fp = io.open(image_tmp, "w") - end - if fp and chunk then - fp:write(chunk) - end - if fp and eof then - fp:close() - end - end - ) - - if not luci.dispatcher.test_post_security() then - fs.unlink(image_tmp) - return - end - - -- - -- Cancel firmware flash - -- - if http.formvalue("cancel") then - fs.unlink(image_tmp) - http.redirect(luci.dispatcher.build_url('admin/system/flashops')) - return - end - - -- - -- Initiate firmware flash - -- - local step = tonumber(http.formvalue("step") or 1) - if step == 1 then - if image_supported(image_tmp) then - luci.template.render("admin_system/upgrade", { - checksum = image_checksum(image_tmp), - sha256ch = image_sha256_checksum(image_tmp), - storage = storage_size(), - size = (fs.stat(image_tmp, "size") or 0), - keep = (not not http.formvalue("keep")) - }) - else - fs.unlink(image_tmp) - luci.template.render("admin_system/flashops", { - reset_avail = supports_reset(), - upgrade_avail = supports_sysupgrade(), - image_invalid = true - }) - end - -- - -- Start sysupgrade flash - -- - elseif step == 2 then - local keep = (http.formvalue("keep") == "1") and "" or "-n" - luci.template.render("admin_system/applyreboot", { - title = luci.i18n.translate("Flashing..."), - msg = luci.i18n.translate("The system is flashing now.
    DO NOT POWER OFF THE DEVICE!
    Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."), - addr = (#keep > 0) and "192.168.1.1" or nil - }) - fork_exec("sleep 1; killall dropbear uhttpd; sleep 1; /sbin/sysupgrade %s %q" %{ keep, image_tmp }) - end -end - -function action_backup() - local reader = ltn12_popen("sysupgrade --create-backup - 2>/dev/null") - - luci.http.header( - 'Content-Disposition', 'attachment; filename="backup-%s-%s.tar.gz"' %{ - luci.sys.hostname(), - os.date("%Y-%m-%d") - }) - - luci.http.prepare_content("application/x-targz") - luci.ltn12.pump.all(reader, luci.http.write) -end - -function action_restore() - local fs = require "nixio.fs" - local http = require "luci.http" - local archive_tmp = "/tmp/restore.tar.gz" - - local fp - http.setfilehandler( - function(meta, chunk, eof) - if not fp and meta and meta.name == "archive" then - fp = io.open(archive_tmp, "w") - end - if fp and chunk then - fp:write(chunk) - end - if fp and eof then - fp:close() - end - end - ) - - if not luci.dispatcher.test_post_security() then - fs.unlink(archive_tmp) - return - end - - local upload = http.formvalue("archive") - if upload and #upload > 0 then - if os.execute("gunzip -t %q >/dev/null 2>&1" % archive_tmp) == 0 then - luci.template.render("admin_system/applyreboot") - os.execute("tar -C / -xzf %q >/dev/null 2>&1" % archive_tmp) - luci.sys.reboot() - else - luci.template.render("admin_system/flashops", { - reset_avail = supports_reset(), - upgrade_avail = supports_sysupgrade(), - backup_invalid = true - }) - end - return - end - - http.redirect(luci.dispatcher.build_url('admin/system/flashops')) -end - -function action_reset() - if supports_reset() then - luci.template.render("admin_system/applyreboot", { - title = luci.i18n.translate("Erasing..."), - msg = luci.i18n.translate("The system is erasing the configuration partition now and will reboot itself when finished."), - addr = "192.168.1.1" - }) - - fork_exec("sleep 1; killall dropbear uhttpd; sleep 1; jffs2reset -y && reboot") - return - end - - http.redirect(luci.dispatcher.build_url('admin/system/flashops')) -end - -function action_passwd() - local p1 = luci.http.formvalue("pwd1") - local p2 = luci.http.formvalue("pwd2") - local stat = nil - - if p1 or p2 then - if p1 == p2 then - stat = luci.sys.user.setpasswd("root", p1) - else - stat = 10 - end - end - - luci.template.render("admin_system/passwd", {stat=stat}) -end - -function action_reboot() - luci.sys.reboot() -end - -function fork_exec(command) - local pid = nixio.fork() - if pid > 0 then - return - elseif pid == 0 then - -- change to root dir - nixio.chdir("/") - - -- patch stdin, out, err to /dev/null - local null = nixio.open("/dev/null", "w+") - if null then - nixio.dup(null, nixio.stderr) - nixio.dup(null, nixio.stdout) - nixio.dup(null, nixio.stdin) - if null:fileno() > 2 then - null:close() - end - end - - -- replace with target command - nixio.exec("/bin/sh", "-c", command) - end -end - -function ltn12_popen(command) - - local fdi, fdo = nixio.pipe() - local pid = nixio.fork() - - if pid > 0 then - fdo:close() - local close - return function() - local buffer = fdi:read(2048) - local wpid, stat = nixio.waitpid(pid, "nohang") - if not close and wpid and stat == "exited" then - close = true - end - - if buffer and #buffer > 0 then - return buffer - elseif close then - fdi:close() - return nil - end - end - elseif pid == 0 then - nixio.dup(fdo, nixio.stdout) - fdi:close() - fdo:close() - nixio.exec("/bin/sh", "-c", command) - end -end diff --git a/luci-mod-admin-full/luasrc/controller/admin/uci.lua b/luci-mod-admin-full/luasrc/controller/admin/uci.lua deleted file mode 100644 index 1d955dd98..000000000 --- a/luci-mod-admin-full/luasrc/controller/admin/uci.lua +++ /dev/null @@ -1,109 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -module("luci.controller.admin.uci", package.seeall) - -function index() - local redir = luci.http.formvalue("redir", true) - or table.concat(luci.dispatcher.context.request, "/") - - entry({"admin", "uci"}, nil, _("Configuration")) - entry({"admin", "uci", "changes"}, post_on({ trigger_apply = true }, "action_changes"), _("Changes"), 40).query = {redir=redir} - entry({"admin", "uci", "revert"}, post("action_revert"), _("Revert"), 30).query = {redir=redir} - - local node - local authen = function(checkpass, allowed_users) - return "root", luci.http.formvalue("sid") - end - - node = entry({"admin", "uci", "apply_rollback"}, post("action_apply_rollback"), nil) - node.cors = true - node.sysauth_authenticator = authen - - node = entry({"admin", "uci", "apply_unchecked"}, post("action_apply_unchecked"), nil) - node.cors = true - node.sysauth_authenticator = authen - - node = entry({"admin", "uci", "confirm"}, call("action_confirm"), nil) - node.cors = true - node.sysauth = false -end - - -function action_changes() - local uci = require "luci.model.uci" - local changes = uci:changes() - - luci.template.render("admin_uci/changes", { - changes = next(changes) and changes, - timeout = timeout, - trigger_apply = luci.http.formvalue("trigger_apply") and true or false - }) -end - -function action_revert() - local uci = require "luci.model.uci" - local changes = uci:changes() - - -- Collect files to be reverted - local r, tbl - for r, tbl in pairs(changes) do - uci:revert(r) - end - - luci.template.render("admin_uci/revert", { - changes = next(changes) and changes, - trigger_revert = true - }) -end - - -local function ubus_state_to_http(errstr) - local map = { - ["Invalid command"] = 400, - ["Invalid argument"] = 400, - ["Method not found"] = 404, - ["Entry not found"] = 404, - ["No data"] = 204, - ["Permission denied"] = 403, - ["Timeout"] = 504, - ["Not supported"] = 500, - ["Unknown error"] = 500, - ["Connection failed"] = 503 - } - - local code = map[errstr] or 200 - local msg = errstr or "OK" - - luci.http.status(code, msg) - - if code ~= 204 then - luci.http.prepare_content("text/plain") - luci.http.write(msg) - end -end - -function action_apply_rollback() - local uci = require "luci.model.uci" - local token, errstr = uci:apply(true) - if token then - luci.http.prepare_content("application/json") - luci.http.write_json({ token = token }) - else - ubus_state_to_http(errstr) - end -end - -function action_apply_unchecked() - local uci = require "luci.model.uci" - local _, errstr = uci:apply(false) - ubus_state_to_http(errstr) -end - -function action_confirm() - local uci = require "luci.model.uci" - local token = luci.http.formvalue("token") - local _, errstr = uci:confirm(token) - ubus_state_to_http(errstr) -end diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua deleted file mode 100644 index 934806ba0..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua +++ /dev/null @@ -1,349 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local ipc = require "luci.ip" -local sys = require "luci.sys" -local o -require "luci.util" - -m = Map("dhcp", translate("DHCP and DNS"), - translate("Dnsmasq is a combined DHCP-Server and DNS-" .. - "Forwarder for NAT " .. - "firewalls")) - -s = m:section(TypedSection, "dnsmasq", translate("Server Settings")) -s.anonymous = true -s.addremove = false - -s:tab("general", translate("General Settings")) -s:tab("files", translate("Resolv and Hosts Files")) -s:tab("tftp", translate("TFTP Settings")) -s:tab("advanced", translate("Advanced Settings")) - -s:taboption("general", Flag, "domainneeded", - translate("Domain required"), - translate("Don't forward DNS-Requests without " .. - "DNS-Name")) - -s:taboption("general", Flag, "authoritative", - translate("Authoritative"), - translate("This is the only DHCP in the local network")) - - -s:taboption("files", Flag, "readethers", - translate("Use /etc/ethers"), - translate("Read /etc/ethers to configure the DHCP-Server")) - -s:taboption("files", Value, "leasefile", - translate("Leasefile"), - translate("file where given DHCP-leases will be stored")) - -s:taboption("files", Flag, "noresolv", - translate("Ignore resolve file")).optional = true - -rf = s:taboption("files", Value, "resolvfile", - translate("Resolve file"), - translate("local DNS file")) - -rf:depends("noresolv", "") -rf.optional = true - - -s:taboption("files", Flag, "nohosts", - translate("Ignore /etc/hosts")).optional = true - -s:taboption("files", DynamicList, "addnhosts", - translate("Additional Hosts files")).optional = true - -qu = s:taboption("advanced", Flag, "quietdhcp", - translate("Suppress logging"), - translate("Suppress logging of the routine operation of these protocols")) -qu.optional = true - -se = s:taboption("advanced", Flag, "sequential_ip", - translate("Allocate IP sequentially"), - translate("Allocate IP addresses sequentially, starting from the lowest available address")) -se.optional = true - -bp = s:taboption("advanced", Flag, "boguspriv", - translate("Filter private"), - translate("Do not forward reverse lookups for local networks")) -bp.default = bp.enabled - -s:taboption("advanced", Flag, "filterwin2k", - translate("Filter useless"), - translate("Do not forward requests that cannot be answered by public name servers")) - - -s:taboption("advanced", Flag, "localise_queries", - translate("Localise queries"), - translate("Localise hostname depending on the requesting subnet if multiple IPs are available")) - -local have_dnssec_support = luci.util.checklib("/usr/sbin/dnsmasq", "libhogweed.so") - -if have_dnssec_support then - o = s:taboption("advanced", Flag, "dnssec", - translate("DNSSEC")) - o.optional = true - - o = s:taboption("advanced", Flag, "dnsseccheckunsigned", - translate("DNSSEC check unsigned"), - translate("Requires upstream supports DNSSEC; verify unsigned domain responses really come from unsigned domains")) - o.optional = true -end - -s:taboption("general", Value, "local", - translate("Local server"), - translate("Local domain specification. Names matching this domain are never forwarded and are resolved from DHCP or hosts files only")) - -s:taboption("general", Value, "domain", - translate("Local domain"), - translate("Local domain suffix appended to DHCP names and hosts file entries")) - -s:taboption("advanced", Flag, "expandhosts", - translate("Expand hosts"), - translate("Add local domain suffix to names served from hosts files")) - -s:taboption("advanced", Flag, "nonegcache", - translate("No negative cache"), - translate("Do not cache negative replies, e.g. for not existing domains")) - -s:taboption("advanced", Value, "serversfile", - translate("Additional servers file"), - translate("This file may contain lines like 'server=/domain/1.2.3.4' or 'server=1.2.3.4' for".. - "domain-specific or full upstream DNS servers.")) - -s:taboption("advanced", Flag, "strictorder", - translate("Strict order"), - translate("DNS servers will be queried in the " .. - "order of the resolvfile")).optional = true - -s:taboption("advanced", Flag, "allservers", - translate("All Servers"), - translate("Query all available upstream DNS servers")).optional = true - -bn = s:taboption("advanced", DynamicList, "bogusnxdomain", translate("Bogus NX Domain Override"), - translate("List of hosts that supply bogus NX domain results")) - -bn.optional = true -bn.placeholder = "67.215.65.132" - - -s:taboption("general", Flag, "logqueries", - translate("Log queries"), - translate("Write received DNS requests to syslog")).optional = true - -df = s:taboption("general", DynamicList, "server", translate("DNS forwardings"), - translate("List of DNS " .. - "servers to forward requests to")) - -df.optional = true -df.placeholder = "/example.org/10.1.2.3" - - -rp = s:taboption("general", Flag, "rebind_protection", - translate("Rebind protection"), - translate("Discard upstream RFC1918 responses")) - -rp.rmempty = false - - -rl = s:taboption("general", Flag, "rebind_localhost", - translate("Allow localhost"), - translate("Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services")) - -rl:depends("rebind_protection", "1") - - -rd = s:taboption("general", DynamicList, "rebind_domain", - translate("Domain whitelist"), - translate("List of domains to allow RFC1918 responses for")) -rd.optional = true - -rd:depends("rebind_protection", "1") -rd.datatype = "host(1)" -rd.placeholder = "ihost.netflix.com" - - -pt = s:taboption("advanced", Value, "port", - translate("DNS server port"), - translate("Listening port for inbound DNS queries")) - -pt.optional = true -pt.datatype = "port" -pt.placeholder = 53 - - -qp = s:taboption("advanced", Value, "queryport", - translate("DNS query port"), - translate("Fixed source port for outbound DNS queries")) - -qp.optional = true -qp.datatype = "port" -qp.placeholder = translate("any") - - -lm = s:taboption("advanced", Value, "dhcpleasemax", - translate("Max. DHCP leases"), - translate("Maximum allowed number of active DHCP leases")) - -lm.optional = true -lm.datatype = "uinteger" -lm.placeholder = translate("unlimited") - - -em = s:taboption("advanced", Value, "ednspacket_max", - translate("Max. EDNS0 packet size"), - translate("Maximum allowed size of EDNS.0 UDP packets")) - -em.optional = true -em.datatype = "uinteger" -em.placeholder = 1280 - - -cq = s:taboption("advanced", Value, "dnsforwardmax", - translate("Max. concurrent queries"), - translate("Maximum allowed number of concurrent DNS queries")) - -cq.optional = true -cq.datatype = "uinteger" -cq.placeholder = 150 - -cs = s:taboption("advanced", Value, "cachesize", - translate("Size of DNS query cache"), - translate("Number of cached DNS entries (max is 10000, 0 is no caching)")) -cs.optional = true -cs.datatype = "range(0,10000)" -cs.placeholder = 150 - -s:taboption("tftp", Flag, "enable_tftp", - translate("Enable TFTP server")).optional = true - -tr = s:taboption("tftp", Value, "tftp_root", - translate("TFTP server root"), - translate("Root directory for files served via TFTP")) - -tr.optional = true -tr:depends("enable_tftp", "1") -tr.placeholder = "/" - - -db = s:taboption("tftp", Value, "dhcp_boot", - translate("Network boot image"), - translate("Filename of the boot image advertised to clients")) - -db.optional = true -db:depends("enable_tftp", "1") -db.placeholder = "pxelinux.0" - -o = s:taboption("general", Flag, "localservice", - translate("Local Service Only"), - translate("Limit DNS service to subnets interfaces on which we are serving DNS.")) -o.optional = false -o.rmempty = false - -o = s:taboption("general", Flag, "nonwildcard", - translate("Non-wildcard"), - translate("Bind only to specific interfaces rather than wildcard address.")) -o.optional = false -o.rmempty = false - -o = s:taboption("general", DynamicList, "interface", - translate("Listen Interfaces"), - translate("Limit listening to these interfaces, and loopback.")) -o.optional = true -o:depends("nonwildcard", true) - -o = s:taboption("general", DynamicList, "notinterface", - translate("Exclude interfaces"), - translate("Prevent listening on these interfaces.")) -o.optional = true -o:depends("nonwildcard", true) - -m:section(SimpleSection).template = "admin_network/lease_status" - -s = m:section(TypedSection, "host", translate("Static Leases"), - translate("Static leases are used to assign fixed IP addresses and symbolic hostnames to " .. - "DHCP clients. They are also required for non-dynamic interface configurations where " .. - "only hosts with a corresponding lease are served.") .. "
    " .. - translate("Use the Add Button to add a new lease entry. The MAC-Address " .. - "identifies the host, the IPv4-Address specifies the fixed address to " .. - "use, and the Hostname is assigned as a symbolic name to the requesting host. " .. - "The optional Lease time can be used to set non-standard host-specific " .. - "lease time, e.g. 12h, 3d or infinite.")) - -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -name = s:option(Value, "name", translate("Hostname")) -name.datatype = "hostname('strict')" -name.rmempty = true - -function name.write(self, section, value) - Value.write(self, section, value) - m:set(section, "dns", "1") -end - -function name.remove(self, section) - Value.remove(self, section) - m:del(section, "dns") -end - -mac = s:option(Value, "mac", translate("MAC-Address")) -mac.datatype = "list(macaddr)" -mac.rmempty = true - -function mac.cfgvalue(self, section) - local val = Value.cfgvalue(self, section) - return ipc.checkmac(val) or val -end - -ip = s:option(Value, "ip", translate("IPv4-Address")) -ip.datatype = "or(ip4addr,'ignore')" - -gw = s:option(Value, "gw", translate("Gateway")) -gw.datatype = "or(ip4addr,'ignore')" - -time = s:option(Value, "leasetime", translate("Lease time")) -time.rmempty = true - -duid = s:option(Value, "duid", translate("DUID")) -duid.datatype = "and(rangelength(20,36),hexstring)" -fp = io.open("/var/hosts/odhcpd") -if fp then - for line in fp:lines() do - local net_val, duid_val = string.match(line, "# (%S+)%s+(%S+)") - if duid_val then - duid:value(duid_val, duid_val) - end - end - fp:close() -end - -hostid = s:option(Value, "hostid", translate("IPv6-Suffix (hex)")) - -sys.net.host_hints(function(m, v4, v6, name) - if m and v4 then - ip:value(v4) - mac:value(m, "%s (%s)" %{ m, name or v4 }) - end -end) - -function ip.validate(self, value, section) - local m = mac:formvalue(section) or "" - local n = name:formvalue(section) or "" - if value and #n == 0 and #m == 0 then - return nil, translate("One of hostname or mac address must be specified!") - end - return Value.validate(self, value, section) -end - - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua deleted file mode 100644 index 46945af58..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua +++ /dev/null @@ -1,31 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2015 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ipc = require "luci.ip" -local sys = require "luci.sys" - -m = Map("dhcp", translate("Hostnames")) - -s = m:section(TypedSection, "domain", translate("Host entries")) -s.addremove = true -s.anonymous = true -s.template = "cbi/tblsection" - -hn = s:option(Value, "name", translate("Hostname")) -hn.datatype = "hostname" -hn.rmempty = true - -ip = s:option(Value, "ip", translate("IP address")) -ip.datatype = "ipaddr" -ip.rmempty = true - -sys.net.host_hints(function(mac, v4, v6, name) - v6 = v6 and ipc.IPv6(v6) - - if v4 or (v6 and not v6:is6linklocal()) then - ip:value(tostring(v4 or v6), "%s (%s)" %{ tostring(v4 or v6), name or mac }) - end -end) - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/iface_add.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/iface_add.lua deleted file mode 100644 index 8593b52c7..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/iface_add.lua +++ /dev/null @@ -1,117 +0,0 @@ --- Copyright 2009-2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local nw = require "luci.model.network".init() -local fw = require "luci.model.firewall".init() -local utl = require "luci.util" -local uci = require "luci.model.uci".cursor() - -m = SimpleForm("network", translate("Create Interface")) -m.redirect = luci.dispatcher.build_url("admin/network/network") -m.reset = false - -function m.on_cancel() - luci.http.redirect(luci.dispatcher.build_url("admin/network/network")) -end - -newnet = m:field(Value, "_netname", translate("Name of the new interface"), - translate("The allowed characters are: A-Z, a-z, " .. - "0-9 and _" - )) - -newnet:depends("_attach", "") -newnet.default = arg[1] and "net_" .. arg[1]:gsub("[^%w_]+", "_") -newnet.datatype = "and(uciname,maxlength(15))" - -advice = m:field(DummyValue, "d1", translate("Note: interface name length"), - translate("Maximum length of the name is 15 characters including " .. - "the automatic protocol/bridge prefix (br-, 6in4-, pppoe- etc.)" - )) - -newproto = m:field(ListValue, "_netproto", translate("Protocol of the new interface")) - ---netbridge = m:field(Flag, "_bridge", translate("Create a bridge over multiple interfaces")) - -newtype = m:field(ListValue, "_type", translate("Type of the new interface")) -newtype:value("", translate("Default")) -newtype:value("macvlan", translate("Create a macvlan sub interface")) -newtype:value("bridge", translate("Create a bridge over multiple interfaces")) - - -sifname = m:field(Value, "_ifname", translate("Cover the following interface")) - -sifname.widget = "radio" -sifname.template = "cbi/network_ifacelist" -sifname.nobridges = true - - -mifname = m:field(Value, "_ifnames", translate("Cover the following interfaces")) - -mifname.widget = "checkbox" -mifname.template = "cbi/network_ifacelist" -mifname.nobridges = true - -vifname = m:field(Value, "_vifname", translate("Cover the following interface")) -vifname.default = "eth0" - -local _, p -for _, p in ipairs(nw:get_protocols()) do - if p:is_installed() then - newproto:value(p:proto(), p:get_i18n()) - --if not p:is_virtual() then netbridge:depends("_netproto", p:proto()) end - if not p:is_virtual() then newtype:depends("_netproto", p:proto()) end - if not p:is_floating() then - --sifname:depends({ _bridge = "", _netproto = p:proto()}) - --mifname:depends({ _bridge = "1", _netproto = p:proto()}) - sifname:depends({ _type = "", _netproto = p:proto() }) - mifname:depends({ _type = "bridge", _netproto = p:proto() }) - vifname:depends({ _type = "macvlan", _netproto = p:proto() }) - end - end -end - -function newproto.validate(self, value, section) - local name = newnet:formvalue(section) - if not name or #name == 0 then - newnet:add_error(section, translate("No network name specified")) - elseif m:get(name) then - newnet:add_error(section, translate("The given network name is not unique")) - end - - local proto = nw:get_protocol(value) - if proto and not proto:is_floating() then - --local br = (netbridge:formvalue(section) == "1") - --local ifn = br and mifname:formvalue(section) or sifname:formvalue(section) - local ifn = ( (newtype:formvalue(section) == "macvlan" and name) or (newtype:formvalue(section) == "bridge" and mifname:formvalue(section)) or sifname:formvalue(section) ) - for ifn in utl.imatch(ifn) do - return value - end - return nil, translate("The selected protocol needs a device assigned") - end - return value -end - -function newproto.write(self, section, value) - local name = newnet:formvalue(section) - if name and #name > 0 then - --local br = (netbridge:formvalue(section) == "1") and "bridge" or nil - --local net = nw:add_network(name, { proto = value, type = br }) - local isBridge = (newtype:formvalue(section) == "bridge") or nil - local isMacvlan = (newtype:formvalue(section) == "macvlan") or nil - local net = nw:add_network(name, { proto = value, type = newtype:formvalue(section), interface = isMacvlan and vifname:formvalue(section) or nil }) - if net then - local ifn - --br and mifname:formvalue(section) or sifname:formvalue(section) - for ifn in utl.imatch( - (isMacvlan and name) or (isBridge and mifname:formvalue(section)) or (sifname:formvalue(section)) - ) do - net:add_interface(ifn) - end - nw:save("network") - nw:save("wireless") - end - luci.http.redirect(luci.dispatcher.build_url("admin/network/network", name)) - end -end - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua deleted file mode 100644 index 86d3ec4e7..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua +++ /dev/null @@ -1,593 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local ut = require "luci.util" -local pt = require "luci.tools.proto" -local nw = require "luci.model.network" -local fw = require "luci.model.firewall" - -arg[1] = arg[1] or "" - -local has_dnsmasq = fs.access("/etc/config/dhcp") -local has_firewall = fs.access("/etc/config/firewall") - -m = Map("network", translate("Interfaces") .. " - " .. arg[1]:upper(), translate("On this page you can configure the network interfaces. You can bridge several interfaces by ticking the \"bridge interfaces\" field and enter the names of several network interfaces separated by spaces. You can also use VLAN notation INTERFACE.VLANNR (e.g.: eth0.1).")) -m.redirect = luci.dispatcher.build_url("admin", "network", "network") -m:chain("wireless") -m:chain("luci") - -if has_firewall then - m:chain("firewall") -end - -nw.init(m.uci) -fw.init(m.uci) - - -local net = nw:get_network(arg[1]) - -local function set_ifstate(name, option, value) - local found = false - - m.uci:foreach("luci", "ifstate", function (s) - if s.interface == name then - m.uci:set("luci", s[".name"], option, value) - found = true - return false - end - end) - - if not found then - local sid = m.uci:add("luci", "ifstate") - m.uci:set("luci", sid, "interface", name) - m.uci:set("luci", sid, option, value) - end - - m.uci:save("luci") -end - -local function get_ifstate(name, option) - local val - - m.uci:foreach("luci", "ifstate", function (s) - if s.interface == name then - val = m.uci:get("luci", s[".name"], option) - return false - end - end) - - return val -end - -local function backup_ifnames(is_bridge) - if not net:is_floating() and not get_ifstate(net:name(), "ifname") then - local ifcs = net:get_interfaces() or { net:get_interface() } - if ifcs then - local _, ifn - local ifns = { } - for _, ifn in ipairs(ifcs) do - local wif = ifn:get_wifinet() - ifns[#ifns+1] = wif and wif:id() or ifn:name() - end - if #ifns > 0 then - set_ifstate(net:name(), "ifname", table.concat(ifns, " ")) - set_ifstate(net:name(), "bridge", tostring(net:is_bridge())) - end - end - end -end - - --- redirect to overview page if network does not exist anymore (e.g. after a revert) -if not net then - luci.http.redirect(luci.dispatcher.build_url("admin/network/network")) - return -end - --- protocol switch was requested, rebuild interface config and reload page -if m:formvalue("cbid.network.%s._switch" % net:name()) then - -- get new protocol - local ptype = m:formvalue("cbid.network.%s.proto" % net:name()) or "-" - local proto = nw:get_protocol(ptype, net:name()) - if proto then - -- backup default - backup_ifnames() - - -- if current proto is not floating and target proto is not floating, - -- then attempt to retain the ifnames - --error(net:proto() .. " > " .. proto:proto()) - if not net:is_floating() and not proto:is_floating() then - -- if old proto is a bridge and new proto not, then clip the - -- interface list to the first ifname only - if net:is_bridge() and proto:is_virtual() then - local _, ifn - local first = true - for _, ifn in ipairs(net:get_interfaces() or { net:get_interface() }) do - if first then - first = false - else - net:del_interface(ifn) - end - end - m:del(net:name(), "type") - end - - -- if the current proto is floating, the target proto not floating, - -- then attempt to restore ifnames from backup - elseif net:is_floating() and not proto:is_floating() then - -- if we have backup data, then re-add all orphaned interfaces - -- from it and restore the bridge choice - local br = (get_ifstate(net:name(), "bridge") == "true") - local ifn - local ifns = { } - for ifn in ut.imatch(get_ifstate(net:name(), "ifname")) do - ifn = nw:get_interface(ifn) - if ifn and not ifn:get_network() then - proto:add_interface(ifn) - if not br then - break - end - end - end - if br then - m:set(net:name(), "type", "bridge") - end - - -- in all other cases clear the ifnames - else - local _, ifc - for _, ifc in ipairs(net:get_interfaces() or { net:get_interface() }) do - net:del_interface(ifc) - end - m:del(net:name(), "type") - end - - -- clear options - local k, v - for k, v in pairs(m:get(net:name())) do - if k:sub(1,1) ~= "." and - k ~= "type" and - k ~= "ifname" - then - m:del(net:name(), k) - end - end - - -- set proto - m:set(net:name(), "proto", proto:proto()) - m.uci:save("network") - m.uci:save("wireless") - - -- reload page - luci.http.redirect(luci.dispatcher.build_url("admin/network/network", arg[1])) - return - end -end - --- dhcp setup was requested, create section and reload page -if m:formvalue("cbid.dhcp._enable._enable") then - m.uci:section("dhcp", "dhcp", arg[1], { - interface = arg[1], - start = "100", - limit = "150", - leasetime = "12h" - }) - - m.uci:save("dhcp") - luci.http.redirect(luci.dispatcher.build_url("admin/network/network", arg[1])) - return -end - -local ifc = net:get_interface() - -s = m:section(NamedSection, arg[1], "interface", translate("Common Configuration")) -s.addremove = false - -s:tab("general", translate("General Setup")) -s:tab("advanced", translate("Advanced Settings")) -s:tab("physical", translate("Physical Settings")) - -if has_firewall then - s:tab("firewall", translate("Firewall Settings")) -end - - -st = s:taboption("general", DummyValue, "__status", translate("Status")) - -local function set_status() - -- if current network is empty, print a warning - if not net:is_floating() and net:is_empty() then - st.template = "cbi/dvalue" - st.network = nil - st.value = translate("There is no device assigned yet, please attach a network device in the \"Physical Settings\" tab") - else - st.template = "admin_network/iface_status" - st.network = arg[1] - st.value = nil - end -end - -m.on_init = set_status -m.on_after_save = set_status - -l = s:taboption("general", Value, "label", translate("Label")) -l.rmempty = true -l:depends("multipath", "on") -l:depends("multipath", "master") -l:depends("multipath", "backup") -l:depends("multipath", "handover") - -p = s:taboption("general", ListValue, "proto", translate("Protocol")) -p.default = net:proto() - - -if not net:is_installed() then - p_install = s:taboption("general", Button, "_install") - p_install.title = translate("Protocol support is not installed") - p_install.inputtitle = translate("Install package %q" % net:opkg_package()) - p_install.inputstyle = "apply" - p_install:depends("proto", net:proto()) - - function p_install.write() - return luci.http.redirect( - luci.dispatcher.build_url("admin/system/packages") .. - "?submit=1&install=%s" % net:opkg_package() - ) - end -end - - -p_switch = s:taboption("general", Button, "_switch") -p_switch.title = translate("Really switch protocol?") -p_switch.inputtitle = translate("Switch protocol") -p_switch.inputstyle = "apply" - -local _, pr -for _, pr in ipairs(nw:get_protocols()) do - p:value(pr:proto(), pr:get_i18n()) - if pr:proto() ~= net:proto() then - p_switch:depends("proto", pr:proto()) - end -end - - -auto = s:taboption("advanced", Flag, "auto", translate("Bring up on boot")) -auto.default = (net:proto() == "none") and auto.disabled or auto.enabled - --- Add MPTCP -if fs.access("/proc/sys/net/mptcp") then - mptcp = s:taboption("advanced", ListValue, "multipath", translate("Multipath TCP"), translate("One interface must be set as master")) - mptcp:value("on", translate("enabled")) - mptcp:value("off", translate("disabled")) - mptcp:value("master", translate("master")) - mptcp:value("backup", translate("backup")) - mptcp:value("handover", translate("handover")) - mptcp.default = "off" -end - -delegate = s:taboption("advanced", Flag, "delegate", translate("Use builtin IPv6-management")) -delegate.default = delegate.enabled - -force_link = s:taboption("advanced", Flag, "force_link", - translate("Force link"), - translate("Set interface properties regardless of the link carrier (If set, carrier sense events do not invoke hotplug handlers).")) - -force_link.default = (net:proto() == "static") and force_link.enabled or force_link.disabled - - -if not net:is_virtual() then - --br = s:taboption("physical", Flag, "type", translate("Bridge interfaces"), translate("creates a bridge over specified interface(s)")) - --br.enabled = "bridge" - --br.rmempty = true - --br:depends("proto", "static") - --br:depends("proto", "dhcp") - --br:depends("proto", "none") - iftype = s:taboption("physical", ListValue, "type", translate("Type of the interface")) - iftype:value("", translate("Default")) - iftype:value("macvlan", translate("Create a macvlan sub interface")) - iftype:value("bridge", translate("Create a bridge over multiple interfaces")) - iftype:depends("proto", "static") - iftype:depends("proto", "dhcp") - iftype:depends("proto", "none") - - stp = s:taboption("physical", Flag, "stp", translate("Enable STP"), - translate("Enables the Spanning Tree Protocol on this bridge")) - stp:depends("type", "bridge") - stp.rmempty = true - - igmp = s:taboption("physical", Flag, "igmp_snooping", translate("Enable IGMP snooping"), - translate("Enables IGMP snooping on this bridge")) - igmp:depends("type", "bridge") - igmp.rmempty = true --- macsource = s:taboption("physical", DynamicList, "vlanmacs", translate("Add MACs address to enable source mode")) --- macsource:depends("type", "macvlan") --- macsource.rmempty = true -end - -macvlanmaster = s:taboption("physical", Value, "masterintf", translate("Master interface")) -macvlanmaster.default = "eth0" -macvlanmaster:depends("type", "macvlan") - -if not net:is_floating() then - ifname_single = s:taboption("physical", Value, "ifname_single", translate("Interface")) - ifname_single.template = "cbi/network_ifacelist" - ifname_single.widget = "radio" - ifname_single.nobridges = true - ifname_single.noaliases = false - ifname_single.rmempty = false - ifname_single.network = arg[1] - ifname_single:depends("type", "") - - function ifname_single.cfgvalue(self, s) - -- let the template figure out the related ifaces through the network model - return nil - end - - function ifname_single.write(self, s, val) - local _, i - local new_ifs = { } - local old_ifs = { } - - local alias = net:is_alias() - - if alias then - old_ifs[1] = '@' .. alias - else - for _, i in ipairs(net:get_interfaces() or { net:get_interface() }) do - old_ifs[#old_ifs+1] = i:name() - end - end - - for i in ut.imatch(val) do - new_ifs[#new_ifs+1] = i - - -- if this is not a bridge, only assign first interface - if self.option == "ifname_single" then - break - end - end - - table.sort(old_ifs) - table.sort(new_ifs) - - for i = 1, math.max(#old_ifs, #new_ifs) do - if old_ifs[i] ~= new_ifs[i] then - backup_ifnames() - for i = 1, #old_ifs do - net:del_interface(old_ifs[i]) - end - for i = 1, #new_ifs do - net:add_interface(new_ifs[i]) - end - break - end - end - end -end - - -if not net:is_virtual() then - ifname_multi = s:taboption("physical", Value, "ifname_multi", translate("Interface")) - ifname_multi.template = "cbi/network_ifacelist" - ifname_multi.nobridges = true - ifname_multi.noaliases = true - ifname_multi.rmempty = false - ifname_multi.network = arg[1] - ifname_multi.widget = "checkbox" - ifname_multi:depends("type", "bridge") - ifname_multi.cfgvalue = ifname_single.cfgvalue - ifname_multi.write = ifname_single.write -end - - -if has_firewall then - fwzone = s:taboption("firewall", Value, "_fwzone", - translate("Create / Assign firewall-zone"), - translate("Choose the firewall zone you want to assign to this interface. Select unspecified to remove the interface from the associated zone or fill out the create field to define a new zone and attach the interface to it.")) - - fwzone.template = "cbi/firewall_zonelist" - fwzone.network = arg[1] - - function fwzone.cfgvalue(self, section) - self.iface = section - local z = fw:get_zone_by_network(section) - return z and z:name() - end - - function fwzone.write(self, section, value) - local zone = fw:get_zone(value) or fw:add_zone(value) - if zone then - fw:del_network(section) - zone:add_network(section) - end - end - - function fwzone.remove(self, section) - fw:del_network(section) - end -end - - -function p.write() end -function p.remove() end -function p.validate(self, value, section) - if value == net:proto() then - if not net:is_floating() and net:is_empty() then - local ifn = ((br and (br:formvalue(section) == "bridge")) - and ifname_multi:formvalue(section) - or ifname_single:formvalue(section)) - - for ifn in ut.imatch(ifn) do - return value - end - return nil, translate("The selected protocol needs a device assigned") - end - end - return value -end - - -local form, ferr = loadfile( - ut.libpath() .. "/model/cbi/admin_network/proto_%s.lua" % net:proto() -) - -if not form then - s:taboption("general", DummyValue, "_error", - translate("Missing protocol extension for proto %q" % net:proto()) - ).value = ferr -else - setfenv(form, getfenv(1))(m, s, net) -end - - -local _, field -for _, field in ipairs(s.children) do - if field ~= st and field ~= p and field ~= p_install and field ~= p_switch then - if next(field.deps) then - local _, dep - for _, dep in ipairs(field.deps) do - dep.proto = net:proto() - end - else - field:depends("proto", net:proto()) - end - end -end - - --- --- Display DNS settings if dnsmasq is available --- - -if has_dnsmasq and net:proto() == "static" then - m2 = Map("dhcp", "", "") - - local has_section = false - - m2.uci:foreach("dhcp", "dhcp", function(s) - if s.interface == arg[1] then - has_section = true - return false - end - end) - - if not has_section and has_dnsmasq then - - s = m2:section(TypedSection, "dhcp", translate("DHCP Server")) - s.anonymous = true - s.cfgsections = function() return { "_enable" } end - - x = s:option(Button, "_enable") - x.title = translate("No DHCP Server configured for this interface") - x.inputtitle = translate("Setup DHCP Server") - x.inputstyle = "apply" - - elseif has_section then - - s = m2:section(TypedSection, "dhcp", translate("DHCP Server")) - s.addremove = false - s.anonymous = true - s:tab("general", translate("General Setup")) - s:tab("advanced", translate("Advanced Settings")) - s:tab("ipv6", translate("IPv6 Settings")) - - function s.filter(self, section) - return m2.uci:get("dhcp", section, "interface") == arg[1] - end - - local ignore = s:taboption("general", Flag, "ignore", - translate("Ignore interface"), - translate("Disable DHCP for " .. - "this interface.")) - - local start = s:taboption("general", Value, "start", translate("Start"), - translate("Lowest leased address as offset from the network address.")) - start.optional = true - start.datatype = "or(uinteger,ip4addr)" - start.default = "100" - - local limit = s:taboption("general", Value, "limit", translate("Limit"), - translate("Maximum number of leased addresses.")) - limit.optional = true - limit.datatype = "uinteger" - limit.default = "150" - - local ltime = s:taboption("general", Value, "leasetime", translate("Lease time"), - translate("Expiry time of leased addresses, minimum is 2 minutes (2m).")) - ltime.rmempty = true - ltime.default = "12h" - - local dd = s:taboption("advanced", Flag, "dynamicdhcp", - translate("Dynamic DHCP"), - translate("Dynamically allocate DHCP addresses for clients. If disabled, only " .. - "clients having static leases will be served.")) - dd.default = dd.enabled - - s:taboption("advanced", Flag, "force", translate("Force"), - translate("Force DHCP on this network even if another server is detected.")) - - -- XXX: is this actually useful? - --s:taboption("advanced", Value, "name", translate("Name"), - -- translate("Define a name for this network.")) - - mask = s:taboption("advanced", Value, "netmask", - translate("IPv4-Netmask"), - translate("Override the netmask sent to clients. Normally it is calculated " .. - "from the subnet that is served.")) - - mask.optional = true - mask.datatype = "ip4addr" - - s:taboption("advanced", DynamicList, "dhcp_option", translate("DHCP-Options"), - translate("Define additional DHCP options, for example \"6,192.168.2.1," .. - "192.168.2.2\" which advertises different DNS servers to clients.")) - - for i, n in ipairs(s.children) do - if n ~= ignore then - n:depends("ignore", "") - end - end - - o = s:taboption("ipv6", ListValue, "ra", translate("Router Advertisement-Service")) - o:value("", translate("disabled")) - o:value("server", translate("server mode")) - o:value("relay", translate("relay mode")) - o:value("hybrid", translate("hybrid mode")) - - o = s:taboption("ipv6", ListValue, "dhcpv6", translate("DHCPv6-Service")) - o:value("", translate("disabled")) - o:value("server", translate("server mode")) - o:value("relay", translate("relay mode")) - o:value("hybrid", translate("hybrid mode")) - - o = s:taboption("ipv6", ListValue, "ndp", translate("NDP-Proxy")) - o:value("", translate("disabled")) - o:value("relay", translate("relay mode")) - o:value("hybrid", translate("hybrid mode")) - - o = s:taboption("ipv6", ListValue, "ra_management", translate("DHCPv6-Mode"), - translate("Default is stateless + stateful")) - o:value("0", translate("stateless")) - o:value("1", translate("stateless + stateful")) - o:value("2", translate("stateful-only")) - o:depends("dhcpv6", "server") - o:depends("dhcpv6", "hybrid") - o.default = "1" - - o = s:taboption("ipv6", Flag, "ra_default", translate("Always announce default router"), - translate("Announce as default router even if no public prefix is available.")) - o:depends("ra", "server") - o:depends("ra", "hybrid") - - s:taboption("ipv6", DynamicList, "dns", translate("Announced DNS servers")) - s:taboption("ipv6", DynamicList, "domain", translate("Announced DNS domains")) - - else - m2 = nil - end -end - - -return m, m2 diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua deleted file mode 100644 index 4fa5ba7b7..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua +++ /dev/null @@ -1,298 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local tpl = require "luci.template" -local ntm = require "luci.model.network".init() -local fwm = require "luci.model.firewall".init() -local json = require "luci.jsonc" -local sys = require "luci.sys" - -m = Map("network", translate("Interfaces")) -m:chain("wireless") -m:chain("firewall") -m:chain("dhcp") -m.pageaction = false - - -local tpl_networks = tpl.Template(nil, [[ -
    -
    - <% - for i, net in ipairs(netlist) do - local z = net[3] - local c = z and z:get_color() or "#EEEEEE" - local t = z and translate("Part of zone %q" % z:name()) or translate("No zone assigned") - local disabled = (net[4]:get("auto") == "0") - local dynamic = net[4]:is_dynamic() - %> -
    -
    -
    -
    - <%=net[1]:upper()%> -
    -
    -
    - ? -
    -
    -
    -
    - <%:Collecting data...%> -
    -
    -
    - /> - - <% if disabled then %> - - /> - <% else %> - - /> - <% end %> - - '" title="<%:Edit this interface%>" value="<%:Edit%>" id="<%=net[1]%>-ifc-edit"<%=ifattr(dynamic, "disabled", "disabled")%> /> - - - /> -
    -
    -
    - <% end %> -
    -
    -
    - '" /> -
    -]]) - -local _, net -local ifaces, netlist = { }, { } - -for _, net in ipairs(ntm:get_networks()) do - if net:name() ~= "loopback" then - local zn = net:zonename() - local z = zn and fwm:get_zone(zn) or fwm:get_zone_by_network(net:name()) - - local w = 1 - if net:is_alias() then - w = 2 - elseif net:is_dynamic() then - w = 3 - end - - ifaces[#ifaces+1] = net:name() - netlist[#netlist+1] = { - net:name(), z and z:name() or "-", z, net, w - } - end -end - -table.sort(netlist, - function(a, b) - if a[2] ~= b[2] then - return a[2] < b[2] - elseif a[5] ~= b[5] then - return a[5] < b[5] - else - return a[1] < b[1] - end - end) - -s = m:section(TypedSection, "interface", translate("Interface Overview")) - -function s.sections(self) - local _, net, sl = nil, nil, { } - - for _, net in ipairs(netlist) do - sl[#sl+1] = net[1] - end - - return sl -end - -function s.render(self) - tpl_networks:render({ - netlist = netlist - }) -end - -o = s:option(Value, "__disable__") - -function o.cfgvalue(self, sid) - return (m:get(sid, "auto") == "0") and "1" or "0" -end - -function o.write(self, sid, value) - if value ~= "1" then - m:set(sid, "auto", "") - else - m:set(sid, "auto", "0") - end -end - -o.remove = o.write - -o = s:option(Value, "__delete__") - -function o.write(self, sid, value) - ntm:del_network(sid) -end - - -m:section(SimpleSection).template = "admin_network/iface_overview_status" - -if fs.access("/etc/init.d/dsl_control") then - local ok, boarddata = pcall(json.parse, fs.readfile("/etc/board.json")) - local modemtype = (ok == true) - and (type(boarddata) == "table") - and (type(boarddata.dsl) == "table") - and (type(boarddata.dsl.modem) == "table") - and boarddata.dsl.modem.type - - dsl = m:section(TypedSection, "dsl", translate("DSL")) - dsl.anonymous = true - - annex = dsl:option(ListValue, "annex", translate("Annex")) - annex:value("a", translate("Annex A + L + M (all)")) - annex:value("b", translate("Annex B (all)")) - annex:value("j", translate("Annex J (all)")) - annex:value("m", translate("Annex M (all)")) - annex:value("bdmt", translate("Annex B G.992.1")) - annex:value("b2", translate("Annex B G.992.3")) - annex:value("b2p", translate("Annex B G.992.5")) - annex:value("at1", translate("ANSI T1.413")) - annex:value("admt", translate("Annex A G.992.1")) - annex:value("alite", translate("Annex A G.992.2")) - annex:value("a2", translate("Annex A G.992.3")) - annex:value("a2p", translate("Annex A G.992.5")) - annex:value("l", translate("Annex L G.992.3 POTS 1")) - annex:value("m2", translate("Annex M G.992.3")) - annex:value("m2p", translate("Annex M G.992.5")) - - tone = dsl:option(ListValue, "tone", translate("Tone")) - tone:value("", translate("auto")) - tone:value("a", translate("A43C + J43 + A43")) - tone:value("av", translate("A43C + J43 + A43 + V43")) - tone:value("b", translate("B43 + B43C")) - tone:value("bv", translate("B43 + B43C + V43")) - - if modemtype == "vdsl" then - xfer_mode = dsl:option(ListValue, "xfer_mode", translate("Encapsulation mode")) - xfer_mode:value("", translate("auto")) - xfer_mode:value("atm", translate("ATM (Asynchronous Transfer Mode)")) - xfer_mode:value("ptm", translate("PTM/EFM (Packet Transfer Mode)")) - - line_mode = dsl:option(ListValue, "line_mode", translate("DSL line mode")) - line_mode:value("", translate("auto")) - line_mode:value("adsl", translate("ADSL")) - line_mode:value("vdsl", translate("VDSL")) - - ds_snr = dsl:option(ListValue, "ds_snr_offset", translate("Downstream SNR offset")) - ds_snr.default = "0" - for i = -100, 100, 5 do - ds_snr:value(i, translatef("%.1f dB", i / 10)) - end - end - - firmware = dsl:option(Value, "firmware", translate("Firmware File")) - - m.pageaction = true -end - --- Show ATM bridge section if we have the capabilities -if fs.access("/usr/sbin/br2684ctl") then - atm = m:section(TypedSection, "atm-bridge", translate("ATM Bridges"), - translate("ATM bridges expose encapsulated ethernet in AAL5 " .. - "connections as virtual Linux network interfaces which can " .. - "be used in conjunction with DHCP or PPP to dial into the " .. - "provider network.")) - - atm.addremove = true - atm.anonymous = true - - atm.create = function(self, section) - local sid = TypedSection.create(self, section) - local max_unit = -1 - - m.uci:foreach("network", "atm-bridge", - function(s) - local u = tonumber(s.unit) - if u ~= nil and u > max_unit then - max_unit = u - end - end) - - m.uci:set("network", sid, "unit", max_unit + 1) - m.uci:set("network", sid, "atmdev", 0) - m.uci:set("network", sid, "encaps", "llc") - m.uci:set("network", sid, "payload", "bridged") - m.uci:set("network", sid, "vci", 35) - m.uci:set("network", sid, "vpi", 8) - - return sid - end - - atm:tab("general", translate("General Setup")) - atm:tab("advanced", translate("Advanced Settings")) - - vci = atm:taboption("general", Value, "vci", translate("ATM Virtual Channel Identifier (VCI)")) - vpi = atm:taboption("general", Value, "vpi", translate("ATM Virtual Path Identifier (VPI)")) - encaps = atm:taboption("general", ListValue, "encaps", translate("Encapsulation mode")) - encaps:value("llc", translate("LLC")) - encaps:value("vc", translate("VC-Mux")) - - atmdev = atm:taboption("advanced", Value, "atmdev", translate("ATM device number")) - unit = atm:taboption("advanced", Value, "unit", translate("Bridge unit number")) - payload = atm:taboption("advanced", ListValue, "payload", translate("Forwarding mode")) - payload:value("bridged", translate("bridged")) - payload:value("routed", translate("routed")) - m.pageaction = true -end - -local network = require "luci.model.network" -local s = m:section(NamedSection, "globals", "globals", translate("Global network options")) -if network:has_ipv6() then - local o = s:option(Value, "ula_prefix", translate("IPv6 ULA-Prefix")) - o.datatype = "ip6addr" - o.rmempty = true -end -if fs.access("/proc/sys/net/mptcp") then - local uname = nixio.uname() - local mtcp = s:option(ListValue, "multipath", translate("Multipath TCP")) - mtcp:value("enable", translate("enable")) - mtcp:value("disable", translate("disable")) - local mtcpck = s:option(ListValue, "mptcp_checksum", translate("Multipath TCP checksum")) - mtcpck:value(1, translate("enable")) - mtcpck:value(0, translate("disable")) - local mtcppm = s:option(ListValue, "mptcp_path_manager", translate("Multipath TCP path-manager")) - mtcppm:value("default", translate("default")) - mtcppm:value("fullmesh", translate("fullmesh")) - mtcppm:value("ndiffports", translate("ndiffports")) - mtcppm:value("blinder", translate("blinder")) - if uname.release:sub(1,4) == "4.19" then - mtcppm:value("netlink", translate("Netlink")) - end - local mtcpsch = s:option(ListValue, "mptcp_scheduler", translate("Multipath TCP scheduler")) - mtcpsch:value("default", translate("default")) - mtcpsch:value("roundrobin", translate("round-robin")) - mtcpsch:value("redundant", translate("redundant")) - if uname.release:sub(1,4) == "4.19" then - mtcpsch:value("blest", translate("BLEST")) - end - local mtcpsyn = s:option(Value, "mptcp_syn_retries", translate("Multipath TCP SYN retries")) - mtcpsyn.datatype = "uinteger" - mtcpsyn.rmempty = false - local congestion = s:option(ListValue, "congestion", translate("Congestion Control")) - local availablecong = sys.exec("sysctl net.ipv4.tcp_available_congestion_control | awk -F'= ' '{print $NF}'") - for cong in string.gmatch(availablecong, "[^%s]+") do - congestion:value(cong, translate(cong)) - end -end -m.pageaction = true - - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/proto_ahcp.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/proto_ahcp.lua deleted file mode 100644 index 0818199a9..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/proto_ahcp.lua +++ /dev/null @@ -1,67 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local device, apn, service, pincode, username, password -local ipv6, maxwait, defaultroute, metric, peerdns, dns, - keepalive_failure, keepalive_interval, demand - - -mca = s:taboption("ahcp", Value, "multicast_address", translate("Multicast address")) -mca.optional = true -mca.placeholder = "ff02::cca6:c0f9:e182:5359" -mca.datatype = "ip6addr" -mca:depends("proto", "ahcp") - -port = s:taboption("ahcp", Value, "port", translate("Port")) -port.optional = true -port.placeholder = 5359 -port.datatype = "port" -port:depends("proto", "ahcp") - -fam = s:taboption("ahcp", ListValue, "_family", translate("Protocol family")) -fam:value("", translate("IPv4 and IPv6")) -fam:value("ipv4", translate("IPv4 only")) -fam:value("ipv6", translate("IPv6 only")) -fam:depends("proto", "ahcp") - -function fam.cfgvalue(self, section) - local v4 = m.uci:get_bool("network", section, "ipv4_only") - local v6 = m.uci:get_bool("network", section, "ipv6_only") - if v4 then - return "ipv4" - elseif v6 then - return "ipv6" - end - return "" -end - -function fam.write(self, section, value) - if value == "ipv4" then - m.uci:set("network", section, "ipv4_only", "true") - m.uci:delete("network", section, "ipv6_only") - elseif value == "ipv6" then - m.uci:set("network", section, "ipv6_only", "true") - m.uci:delete("network", section, "ipv4_only") - end -end - -function fam.remove(self, section) - m.uci:delete("network", section, "ipv4_only") - m.uci:delete("network", section, "ipv6_only") -end - -nodns = s:taboption("ahcp", Flag, "no_dns", translate("Disable DNS setup")) -nodns.optional = true -nodns.enabled = "true" -nodns.disabled = "false" -nodns.default = nodns.disabled -nodns:depends("proto", "ahcp") - -ltime = s:taboption("ahcp", Value, "lease_time", translate("Lease validity time")) -ltime.optional = true -ltime.placeholder = 3666 -ltime.datatype = "uinteger" -ltime:depends("proto", "ahcp") - diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/routes.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/routes.lua deleted file mode 100644 index dc75056c9..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/routes.lua +++ /dev/null @@ -1,110 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local wa = require "luci.tools.webadmin" -local fs = require "nixio.fs" - -m = Map("network", - translate("Routes"), - translate("Routes specify over which interface and gateway a certain host or network " .. - "can be reached.")) - -s = m:section(TypedSection, "route", translate("Static IPv4 Routes")) -s.addremove = true -s.anonymous = true - -s.template = "cbi/tblsection" - -iface = s:option(ListValue, "interface", translate("Interface")) -wa.cbi_add_networks(iface) - -t = s:option(Value, "target", translate("Target"), translate("Host-IP or Network")) -t.datatype = "ip4addr" -t.rmempty = false - -n = s:option(Value, "netmask", translate("IPv4-Netmask"), translate("if target is a network")) -n.placeholder = "255.255.255.255" -n.datatype = "ip4addr" -n.rmempty = true - -g = s:option(Value, "gateway", translate("IPv4-Gateway")) -g.datatype = "ip4addr" -g.rmempty = true - -metric = s:option(Value, "metric", translate("Metric")) -metric.placeholder = 0 -metric.datatype = "range(0,255)" -metric.size = 5 -metric.rmempty = true - -mtu = s:option(Value, "mtu", translate("MTU")) -mtu.placeholder = 1500 -mtu.datatype = "range(64,9000)" -mtu.size = 5 -mtu.rmempty = true - -table = s:option(Value, "table", translate("Table")) -table.rmempty = true -table.size = 5 - -routetype = s:option(Value, "type", translate("Route type")) -routetype:value("", "unicast") -routetype:value("local", "local") -routetype:value("broadcast", "broadcast") -routetype:value("multicast", "multicast") -routetype:value("unreachable", "unreachable") -routetype:value("prohibit", "prohibit") -routetype:value("blackhole", "blackhole") -routetype:value("anycast", "anycast") -routetype.default = "" -routetype.rmempty = true - -if fs.access("/proc/net/ipv6_route") then - s = m:section(TypedSection, "route6", translate("Static IPv6 Routes")) - s.addremove = true - s.anonymous = true - - s.template = "cbi/tblsection" - - iface = s:option(ListValue, "interface", translate("Interface")) - wa.cbi_add_networks(iface) - - t = s:option(Value, "target", translate("Target"), translate("IPv6-Address or Network (CIDR)")) - t.datatype = "ip6addr" - t.rmempty = false - - g = s:option(Value, "gateway", translate("IPv6-Gateway")) - g.datatype = "ip6addr" - g.rmempty = true - - metric = s:option(Value, "metric", translate("Metric")) - metric.placeholder = 0 - metric.datatype = "range(0,65535)" -- XXX: not sure - metric.size = 5 - metric.rmempty = true - - mtu = s:option(Value, "mtu", translate("MTU")) - mtu.placeholder = 1500 - mtu.datatype = "range(64,9000)" - mtu.size = 5 - mtu.rmempty = true - - table = s:option(Value, "table", translate("Table")) - table.rmempty = true - table.size = 5 - - routetype = s:option(Value, "type", translate("Route type")) - routetype:value("", "unicast") - routetype:value("local", "local") - routetype:value("broadcast", "broadcast") - routetype:value("multicast", "multicast") - routetype:value("unreachable", "unreachable") - routetype:value("prohibit", "prohibit") - routetype:value("blackhole", "blackhole") - routetype:value("anycast", "anycast") - routetype.default = "" - routetype.rmempty = true -end - - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua deleted file mode 100644 index 3e46628d3..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua +++ /dev/null @@ -1,364 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -m = Map("network", translate("Switch"), translate("The network ports on this device can be combined to several VLANs in which computers can communicate directly with each other. VLANs are often used to separate different network segments. Often there is by default one Uplink port for a connection to the next greater network like the internet and other ports for a local network.")) - -local fs = require "nixio.fs" -local ut = require "luci.util" -local nw = require "luci.model.network" -local switches = { } - -nw.init(m.uci) - -local topologies = nw:get_switch_topologies() or {} - -local update_interfaces = function(old_ifname, new_ifname) - local info = { } - - m.uci:foreach("network", "interface", function(section) - local old_ifnames = m.uci:get("network", section[".name"], "ifname") - local new_ifnames = { } - local cur_ifname - local changed = false - for cur_ifname in luci.util.imatch(old_ifnames) do - if cur_ifname == old_ifname then - new_ifnames[#new_ifnames+1] = new_ifname - changed = true - else - new_ifnames[#new_ifnames+1] = cur_ifname - end - end - if changed then - m.uci:set("network", section[".name"], "ifname", table.concat(new_ifnames, " ")) - - info[#info+1] = translatef("Interface %q device auto-migrated from %q to %q.", - section[".name"], old_ifname, new_ifname) - end - end) - - if #info > 0 then - m.message = (m.message and m.message .. "\n" or "") .. table.concat(info, "\n") - end -end - -m.uci:foreach("network", "switch", - function(x) - local sid = x['.name'] - local switch_name = x.name or sid - local has_vlan = nil - local has_learn = nil - local has_vlan4k = nil - local has_jumbo3 = nil - local has_mirror = nil - local min_vid = 0 - local max_vid = 16 - local num_vlans = 16 - - local switch_title - local enable_vlan4k = false - - local topo = topologies[switch_name] - - if not topo then - m.message = translatef("Switch %q has an unknown topology - the VLAN settings might not be accurate.", switch_name) - topo = { - ports = { - { num = 0, label = "Port 1" }, - { num = 1, label = "Port 2" }, - { num = 2, label = "Port 3" }, - { num = 3, label = "Port 4" }, - { num = 4, label = "Port 5" }, - { num = 5, label = "CPU (eth0)", tagged = false } - } - } - end - - -- Parse some common switch properties from swconfig help output. - local swc = io.popen("swconfig dev %s help 2>/dev/null" % ut.shellquote(switch_name)) - if swc then - - local is_port_attr = false - local is_vlan_attr = false - - while true do - local line = swc:read("*l") - if not line then break end - - if line:match("^%s+%-%-vlan") then - is_vlan_attr = true - - elseif line:match("^%s+%-%-port") then - is_vlan_attr = false - is_port_attr = true - - elseif line:match("cpu @") then - switch_title = line:match("^switch%d: %w+%((.-)%)") - num_vlans = tonumber(line:match("vlans: (%d+)")) or 16 - min_vid = 1 - - elseif line:match(": pvid") or line:match(": tag") or line:match(": vid") then - if is_vlan_attr then has_vlan4k = line:match(": (%w+)") end - - elseif line:match(": enable_vlan4k") then - enable_vlan4k = true - - elseif line:match(": enable_vlan") then - has_vlan = "enable_vlan" - - elseif line:match(": enable_learning") then - has_learn = "enable_learning" - - elseif line:match(": enable_mirror_rx") then - has_mirror = "enable_mirror_rx" - - elseif line:match(": max_length") then - has_jumbo3 = "max_length" - end - end - - swc:close() - end - - - -- Switch properties - s = m:section(NamedSection, x['.name'], "switch", - switch_title and translatef("Switch %q (%s)", switch_name, switch_title) - or translatef("Switch %q", switch_name)) - - s.addremove = false - - if has_vlan then - s:option(Flag, has_vlan, translate("Enable VLAN functionality")) - end - - if has_learn then - x = s:option(Flag, has_learn, translate("Enable learning and aging")) - x.default = x.enabled - end - - if has_jumbo3 then - x = s:option(Flag, has_jumbo3, translate("Enable Jumbo Frame passthrough")) - x.enabled = "3" - x.rmempty = true - end - - -- Does this switch support port mirroring? - if has_mirror then - s:option(Flag, "enable_mirror_rx", translate("Enable mirroring of incoming packets")) - s:option(Flag, "enable_mirror_tx", translate("Enable mirroring of outgoing packets")) - - local sp = s:option(ListValue, "mirror_source_port", translate("Mirror source port")) - local mp = s:option(ListValue, "mirror_monitor_port", translate("Mirror monitor port")) - - sp:depends("enable_mirror_tx", "1") - sp:depends("enable_mirror_rx", "1") - - mp:depends("enable_mirror_tx", "1") - mp:depends("enable_mirror_rx", "1") - - local _, pt - for _, pt in ipairs(topo.ports) do - sp:value(pt.num, pt.label) - mp:value(pt.num, pt.label) - end - end - - -- VLAN table - s = m:section(TypedSection, "switch_vlan", - switch_title and translatef("VLANs on %q (%s)", switch_name, switch_title) - or translatef("VLANs on %q", switch_name)) - - s.template = "cbi/tblsection" - s.addremove = true - s.anonymous = true - - -- Filter by switch - s.filter = function(self, section) - local device = m:get(section, "device") - return (device and device == switch_name) - end - - -- Override cfgsections callback to enforce row ordering by vlan id. - s.cfgsections = function(self) - local osections = TypedSection.cfgsections(self) - local sections = { } - local section - - for _, section in luci.util.spairs( - osections, - function(a, b) - return (tonumber(m:get(osections[a], has_vlan4k or "vlan")) or 9999) - < (tonumber(m:get(osections[b], has_vlan4k or "vlan")) or 9999) - end - ) do - sections[#sections+1] = section - end - - return sections - end - - -- When creating a new vlan, preset it with the highest found vid + 1. - s.create = function(self, section, origin) - -- Filter by switch - if m:get(origin, "device") ~= switch_name then - return - end - - local sid = TypedSection.create(self, section) - - local max_nr = 0 - local max_id = 0 - - m.uci:foreach("network", "switch_vlan", - function(s) - if s.device == switch_name then - local nr = tonumber(s.vlan) - local id = has_vlan4k and tonumber(s[has_vlan4k]) - if nr ~= nil and nr > max_nr then max_nr = nr end - if id ~= nil and id > max_id then max_id = id end - end - end) - - m:set(sid, "device", switch_name) - m:set(sid, "vlan", max_nr + 1) - - if has_vlan4k then - m:set(sid, has_vlan4k, max_id + 1) - end - - return sid - end - - - local port_opts = { } - local untagged = { } - - -- Parse current tagging state from the "ports" option. - local portvalue = function(self, section) - local pt - for pt in (m:get(section, "ports") or ""):gmatch("%w+") do - local pc, tu = pt:match("^(%d+)([tu]*)") - if pc == self.option then return (#tu > 0) and tu or "u" end - end - return "" - end - - -- Validate port tagging. Ensure that a port is only untagged once, - -- bail out if not. - local portvalidate = function(self, value, section) - -- ensure that the ports appears untagged only once - if value == "u" then - if not untagged[self.option] then - untagged[self.option] = true - else - return nil, - translatef("%s is untagged in multiple VLANs!", self.title) - end - end - return value - end - - - local vid = s:option(Value, has_vlan4k or "vlan", "VLAN ID") - local mx_vid = has_vlan4k and 4094 or (num_vlans - 1) - - vid.rmempty = false - vid.forcewrite = true - vid.vlan_used = { } - vid.datatype = "and(uinteger,range("..min_vid..","..mx_vid.."))" - - -- Validate user provided VLAN ID, make sure its within the bounds - -- allowed by the switch. - vid.validate = function(self, value, section) - local v = tonumber(value) - local m = has_vlan4k and 4094 or (num_vlans - 1) - if v ~= nil and v >= min_vid and v <= m then - if not self.vlan_used[v] then - self.vlan_used[v] = true - return value - else - return nil, - translatef("Invalid VLAN ID given! Only unique IDs are allowed") - end - else - return nil, - translatef("Invalid VLAN ID given! Only IDs between %d and %d are allowed.", min_vid, m) - end - end - - -- When writing the "vid" or "vlan" option, serialize the port states - -- as well and write them as "ports" option to uci. - vid.write = function(self, section, new_vid) - local o - local p = { } - for _, o in ipairs(port_opts) do - local new_tag = o:formvalue(section) - if new_tag == "t" then - p[#p+1] = o.option .. new_tag - elseif new_tag == "u" then - p[#p+1] = o.option - end - - if o.info and o.info.device then - local old_tag = o:cfgvalue(section) - local old_vid = self:cfgvalue(section) - if old_tag ~= new_tag or old_vid ~= new_vid then - local old_ifname = (old_tag == "u") and o.info.device - or "%s.%s" %{ o.info.device, old_vid } - - local new_ifname = (new_tag == "u") and o.info.device - or "%s.%s" %{ o.info.device, new_vid } - - if old_ifname ~= new_ifname then - update_interfaces(old_ifname, new_ifname) - end - end - end - end - - if enable_vlan4k then - m:set(sid, "enable_vlan4k", "1") - end - - m:set(section, "ports", table.concat(p, " ")) - return Value.write(self, section, new_vid) - end - - -- Fallback to "vlan" option if "vid" option is supported but unset. - vid.cfgvalue = function(self, section) - return m:get(section, has_vlan4k or "vlan") - or m:get(section, "vlan") - end - - local _, pt - for _, pt in ipairs(topo.ports) do - local po = s:option(ListValue, tostring(pt.num), pt.label) - - po:value("", translate("off")) - - if not pt.tagged then - po:value("u", translate("untagged")) - end - - po:value("t", translate("tagged")) - - po.cfgvalue = portvalue - po.validate = portvalidate - po.write = function() end - po.info = pt - - port_opts[#port_opts+1] = po - end - - table.sort(port_opts, function(a, b) return a.option < b.option end) - switches[#switches+1] = switch_name - end -) - --- Switch status template -s = m:section(SimpleSection) -s.template = "admin_network/switch_status" -s.switches = switches - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua deleted file mode 100644 index 758e0737c..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua +++ /dev/null @@ -1,1114 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local wa = require "luci.tools.webadmin" -local nw = require "luci.model.network" -local ut = require "luci.util" -local nt = require "luci.sys".net -local fs = require "nixio.fs" - -local acct_port, acct_secret, acct_server, anonymous_identity, ant1, ant2, - auth, auth_port, auth_secret, auth_server, bssid, cacert, cacert2, - cc, ch, cipher, clientcert, clientcert2, ea, eaptype, en, encr, - ft_protocol, ft_psk_generate_local, hidden, htmode, identity, - ieee80211r, ieee80211w, ifname, isolate, key_retries, - legacyrates, max_timeout, meshfwd, meshid, ml, mobility_domain, mode, - mp, nasid, network, password, pmk_r1_push, privkey, privkey2, privkeypwd, - privkeypwd2, r0_key_lifetime, r0kh, r1_key_holder, r1kh, - reassociation_deadline, retry_timeout, ssid, st, tp, wepkey, wepslot, - wmm, wpakey, wps, disassoc_low_ack, short_preamble, beacon_int, dtim_period - -arg[1] = arg[1] or "" - -m = Map("wireless", "", - translate("The Device Configuration section covers physical settings of the radio " .. - "hardware such as channel, transmit power or antenna selection which are shared among all " .. - "defined wireless networks (if the radio hardware is multi-SSID capable). Per network settings " .. - "like encryption or operation mode are grouped in the Interface Configuration.")) - -m:chain("network") -m:chain("firewall") -m.redirect = luci.dispatcher.build_url("admin/network/wireless") - -nw.init(m.uci) - -local wnet = nw:get_wifinet(arg[1]) -local wdev = wnet and wnet:get_device() - -local wifname = m.uci:get("wireless",wnet.sid,"ifname") or "" - --- redirect to overview page if network does not exist anymore (e.g. after a revert) -if not wnet or not wdev then - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless")) - return -end - -local function txpower_list(iw) - local list = iw.txpwrlist or { } - local off = tonumber(iw.txpower_offset) or 0 - local new = { } - local prev = -1 - local _, val - for _, val in ipairs(list) do - local dbm = val.dbm + off - local mw = math.floor(10 ^ (dbm / 10)) - if mw ~= prev then - prev = mw - new[#new+1] = { - display_dbm = dbm, - display_mw = mw, - driver_dbm = val.dbm, - driver_mw = val.mw - } - end - end - return new -end - -local function txpower_current(pwr, list) - pwr = tonumber(pwr) - if pwr ~= nil then - local _, item - for _, item in ipairs(list) do - if item.driver_dbm >= pwr then - return item.driver_dbm - end - end - end - return pwr or "" -end - -local iw = luci.sys.wifi.getiwinfo(arg[1]) -local hw_modes = iw.hwmodelist or { } -local tx_power_list = txpower_list(iw) -local tx_power_cur = txpower_current(wdev:get("txpower"), tx_power_list) - --- wireless toggle was requested, commit and reload page -function m.parse(map) - local new_cc = m:formvalue("cbid.wireless.%s.country" % wdev:name()) - local old_cc = m:get(wdev:name(), "country") - - if m:formvalue("cbid.wireless.%s.__toggle" % wdev:name()) then - if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then - wnet:set("disabled", nil) - else - wnet:set("disabled", "1") - end - wdev:set("disabled", nil) - m.apply_needed = true - m.redirect = nil - end - - Map.parse(map) - - if m:get(wdev:name(), "type") == "mac80211" and new_cc and new_cc ~= old_cc then - luci.sys.call("iw reg set %s" % ut.shellquote(new_cc)) - - local old_ch = tonumber(m:formvalue("cbid.wireless.%s._mode_freq.channel" % wdev:name()) or "") - if old_ch then - local _, c, new_ch - for _, c in ipairs(iw.freqlist) do - if c.channel > old_ch or (old_ch <= 14 and c.channel > 14) then - break - end - new_ch = c.channel - end - if new_ch ~= old_ch then - wdev:set("channel", new_ch) - m.message = translatef("Channel %d is not available in the %s regulatory domain and has been auto-adjusted to %d.", - old_ch, new_cc, new_ch) - end - end - end - - if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then - en.title = translate("Wireless network is disabled") - en.inputtitle = translate("Enable") - en.inputstyle = "apply" - else - en.title = translate("Wireless network is enabled") - en.inputtitle = translate("Disable") - en.inputstyle = "reset" - end -end - -m.title = luci.util.pcdata(wnet:get_i18n()) - -s = m:section(NamedSection, wdev:name(), "wifi-device", translate("Device Configuration")) -s.addremove = false - -s:tab("general", translate("General Setup")) -s:tab("macfilter", translate("MAC-Filter")) -s:tab("advanced", translate("Advanced Settings")) - -st = s:taboption("general", DummyValue, "__status", translate("Status")) -st.template = "admin_network/wifi_status" -st.ifname = arg[1] - -en = s:taboption("general", Button, "__toggle") - -local hwtype = wdev:get("type") - --- NanoFoo -local nsantenna = wdev:get("antenna") - --- Check whether there are client interfaces on the same radio, --- if yes, lock the channel choice as these stations will dicatate the freq -local found_sta = nil -local _, net -if wnet:mode() ~= "sta" then - for _, net in ipairs(wdev:get_wifinets()) do - if net:mode() == "sta" and net:get("disabled") ~= "1" then - if not found_sta then - found_sta = {} - found_sta.channel = net:channel() - found_sta.names = {} - end - found_sta.names[#found_sta.names+1] = net:shortname() - end - end -end - -if found_sta then - ch = s:taboption("general", DummyValue, "choice", translate("Channel")) - ch.value = translatef("Locked to channel %s used by: %s", - found_sta.channel or "(auto)", table.concat(found_sta.names, ", ")) -else - ch = s:taboption("general", Value, "_mode_freq", '
    '..translate("Operating frequency")) - ch.iwinfo = iw - ch.template = "cbi/wireless_modefreq" - - function ch.cfgvalue(self, section) - return { - m:get(section, "hwmode") or "", - m:get(section, "channel") or "auto", - m:get(section, "htmode") or "" - } - end - - function ch.formvalue(self, section) - return { - m:formvalue(self:cbid(section) .. ".band") or (hw_modes.g and "11g" or "11a"), - m:formvalue(self:cbid(section) .. ".channel") or "auto", - m:formvalue(self:cbid(section) .. ".htmode") or "" - } - end - - function ch.write(self, section, value) - m:set(section, "hwmode", value[1]) - m:set(section, "channel", value[2]) - m:set(section, "htmode", value[3]) - end -end - -------------------- MAC80211 Device ------------------ - -if hwtype == "mac80211" then - if #tx_power_list > 0 then - tp = s:taboption("general", ListValue, - "txpower", translate("Transmit Power"), "dBm") - tp.rmempty = true - tp.default = tx_power_cur - function tp.cfgvalue(...) - return txpower_current(Value.cfgvalue(...), tx_power_list) - end - - tp:value("", translate("auto")) - for _, p in ipairs(tx_power_list) do - tp:value(p.driver_dbm, "%i dBm (%i mW)" - %{ p.display_dbm, p.display_mw }) - end - end - - local cl = iw and iw.countrylist - if cl and #cl > 0 then - cc = s:taboption("advanced", ListValue, "country", translate("Country Code"), translate("Use ISO/IEC 3166 alpha2 country codes.")) - cc.default = tostring(iw and iw.country or "00") - for _, c in ipairs(cl) do - cc:value(c.alpha2, "%s - %s" %{ c.alpha2, c.name }) - end - else - s:taboption("advanced", Value, "country", translate("Country Code"), translate("Use ISO/IEC 3166 alpha2 country codes.")) - end - - legacyrates = s:taboption("advanced", Flag, "legacy_rates", translate("Allow legacy 802.11b rates")) - legacyrates.rmempty = false - legacyrates.default = "1" - - s:taboption("advanced", Value, "distance", translate("Distance Optimization"), - translate("Distance to farthest network member in meters.")) - - -- external antenna profiles - local eal = iw and iw.extant - if eal and #eal > 0 then - ea = s:taboption("advanced", ListValue, "extant", translate("Antenna Configuration")) - for _, eap in ipairs(eal) do - ea:value(eap.id, "%s (%s)" %{ eap.name, eap.description }) - if eap.selected then - ea.default = eap.id - end - end - end - - s:taboption("advanced", Value, "frag", translate("Fragmentation Threshold")) - s:taboption("advanced", Value, "rts", translate("RTS/CTS Threshold")) - - s:taboption("advanced", Flag, "noscan", translate("Force 40MHz mode"), - translate("Always use 40MHz channels even if the secondary channel overlaps. Using this option does not comply with IEEE 802.11n-2009!")).optional = true - - beacon_int = s:taboption("advanced", Value, "beacon_int", translate("Beacon Interval")) - beacon_int.optional = true - beacon_int.placeholder = 100 - beacon_int.datatype = "range(15,65535)" -end - - -------------------- Broadcom Device ------------------ - -if hwtype == "broadcom" then - tp = s:taboption("general", - (#tx_power_list > 0) and ListValue or Value, - "txpower", translate("Transmit Power"), "dBm") - - tp.rmempty = true - tp.default = tx_power_cur - - function tp.cfgvalue(...) - return txpower_current(Value.cfgvalue(...), tx_power_list) - end - - tp:value("", translate("auto")) - for _, p in ipairs(tx_power_list) do - tp:value(p.driver_dbm, "%i dBm (%i mW)" - %{ p.display_dbm, p.display_mw }) - end - - mode = s:taboption("advanced", ListValue, "hwmode", translate("Band")) - if hw_modes.b then - mode:value("11b", "2.4GHz (802.11b)") - if hw_modes.g then - mode:value("11bg", "2.4GHz (802.11b+g)") - end - end - if hw_modes.g then - mode:value("11g", "2.4GHz (802.11g)") - mode:value("11gst", "2.4GHz (802.11g + Turbo)") - mode:value("11lrs", "2.4GHz (802.11g Limited Rate Support)") - end - if hw_modes.a then mode:value("11a", "5GHz (802.11a)") end - if hw_modes.n then - if hw_modes.g then - mode:value("11ng", "2.4GHz (802.11g+n)") - mode:value("11n", "2.4GHz (802.11n)") - end - if hw_modes.a then - mode:value("11na", "5GHz (802.11a+n)") - mode:value("11n", "5GHz (802.11n)") - end - htmode = s:taboption("advanced", ListValue, "htmode", translate("HT mode (802.11n)")) - htmode:depends("hwmode", "11ng") - htmode:depends("hwmode", "11na") - htmode:depends("hwmode", "11n") - htmode:value("HT20", "20MHz") - htmode:value("HT40", "40MHz") - end - - ant1 = s:taboption("advanced", ListValue, "txantenna", translate("Transmitter Antenna")) - ant1.widget = "radio" - ant1:depends("diversity", "") - ant1:value("3", translate("auto")) - ant1:value("0", translate("Antenna 1")) - ant1:value("1", translate("Antenna 2")) - - ant2 = s:taboption("advanced", ListValue, "rxantenna", translate("Receiver Antenna")) - ant2.widget = "radio" - ant2:depends("diversity", "") - ant2:value("3", translate("auto")) - ant2:value("0", translate("Antenna 1")) - ant2:value("1", translate("Antenna 2")) - - s:taboption("advanced", Flag, "frameburst", translate("Frame Bursting")) - - s:taboption("advanced", Value, "distance", translate("Distance Optimization")) - --s:option(Value, "slottime", translate("Slot time")) - - s:taboption("advanced", Value, "country", translate("Country Code")) - s:taboption("advanced", Value, "maxassoc", translate("Connection Limit")) -end - - ---------------------- HostAP Device --------------------- - -if hwtype == "prism2" then - s:taboption("advanced", Value, "txpower", translate("Transmit Power"), "att units").rmempty = true - - s:taboption("advanced", Flag, "diversity", translate("Diversity")).rmempty = false - - s:taboption("advanced", Value, "txantenna", translate("Transmitter Antenna")) - s:taboption("advanced", Value, "rxantenna", translate("Receiver Antenna")) -end - - ------------------------ Interface ----------------------- - -s = m:section(NamedSection, wnet.sid, "wifi-iface", translate("Interface Configuration")) -s.addremove = false -s.anonymous = true -s.defaults.device = wdev:name() - -s:tab("general", translate("General Setup")) -s:tab("encryption", translate("Wireless Security")) -s:tab("macfilter", translate("MAC-Filter")) -s:tab("advanced", translate("Advanced Settings")) - -mode = s:taboption("general", ListValue, "mode", translate("Mode")) -mode.override_values = true -if not wifname:match("^mtkwlan.*") then - mode:value("ap", translate("Access Point")) -end -if not wifname:match("^mtkap.*") then - mode:value("sta", translate("Client")) - mode:value("adhoc", translate("Ad-Hoc")) -end - -meshid = s:taboption("general", Value, "mesh_id", translate("Mesh Id")) -meshid:depends({mode="mesh"}) - -meshfwd = s:taboption("advanced", Flag, "mesh_fwding", translate("Forward mesh peer traffic")) -meshfwd.rmempty = false -meshfwd.default = "1" -meshfwd:depends({mode="mesh"}) - -ssid = s:taboption("general", Value, "ssid", translate("ESSID")) -ssid.datatype = "maxlength(32)" -ssid:depends({mode="ap"}) -ssid:depends({mode="sta"}) -ssid:depends({mode="adhoc"}) -ssid:depends({mode="ahdemo"}) -ssid:depends({mode="monitor"}) -ssid:depends({mode="ap-wds"}) -ssid:depends({mode="sta-wds"}) -ssid:depends({mode="wds"}) - -bssid = s:taboption("general", Value, "bssid", translate("BSSID")) - -network = s:taboption("general", Value, "network", translate("Network"), - translate("Choose the network(s) you want to attach to this wireless interface or " .. - "fill out the create field to define a new network.")) - -network.rmempty = true -network.template = "cbi/network_netlist" -network.widget = "checkbox" -network.novirtual = true - -function network.write(self, section, value) - local i = nw:get_interface(section) - if i then - local _, net, old, new = nil, nil, {}, {} - - for _, net in ipairs(i:get_networks()) do - old[net:name()] = true - end - - for net in ut.imatch(value) do - new[net] = true - if not old[net] then - local n = nw:get_network(net) or nw:add_network(net, { proto = "none" }) - if n then - if not n:is_empty() then - n:set("type", "bridge") - end - n:add_interface(i) - end - end - end - - for net, _ in pairs(old) do - if not new[net] then - local n = nw:get_network(net) - if n then - n:del_interface(i) - end - end - end - end -end - --------------------- MAC80211 Interface ---------------------- - -if hwtype == "mac80211" then - if not wifname:match("^mtkap.*") then - if fs.access("/usr/sbin/iw") then - mode:value("mesh", "802.11s") - end - mode:value("ahdemo", translate("Pseudo Ad-Hoc (ahdemo)")) - mode:value("monitor", translate("Monitor")) - end - bssid:depends({mode="adhoc"}) - bssid:depends({mode="sta"}) - bssid:depends({mode="sta-wds"}) - - mp = s:taboption("macfilter", ListValue, "macfilter", translate("MAC-Address Filter")) - mp:depends({mode="ap"}) - mp:depends({mode="ap-wds"}) - mp:value("", translate("disable")) - mp:value("allow", translate("Allow listed only")) - mp:value("deny", translate("Allow all except listed")) - - ml = s:taboption("macfilter", DynamicList, "maclist", translate("MAC-List")) - ml.datatype = "macaddr" - ml:depends({macfilter="allow"}) - ml:depends({macfilter="deny"}) - nt.mac_hints(function(mac, name) ml:value(mac, "%s (%s)" %{ mac, name }) end) - - if not wifname:match("^mtkwlan.*") then - mode:value("ap-wds", "%s (%s)" % {translate("Access Point"), translate("WDS")}) - end - if not wifname:match("^mtkap.*") then - mode:value("sta-wds", "%s (%s)" % {translate("Client"), translate("WDS")}) - end - - function mode.write(self, section, value) - if value == "ap-wds" then - ListValue.write(self, section, "ap") - m.uci:set("wireless", section, "wds", 1) - elseif value == "sta-wds" then - ListValue.write(self, section, "sta") - m.uci:set("wireless", section, "wds", 1) - else - ListValue.write(self, section, value) - m.uci:delete("wireless", section, "wds") - end - end - - function mode.cfgvalue(self, section) - local mode = ListValue.cfgvalue(self, section) - local wds = m.uci:get("wireless", section, "wds") == "1" - - if mode == "ap" and wds then - return "ap-wds" - elseif mode == "sta" and wds then - return "sta-wds" - else - return mode - end - end - - hidden = s:taboption("general", Flag, "hidden", translate("Hide ESSID")) - hidden:depends({mode="ap"}) - hidden:depends({mode="ap-wds"}) - - wmm = s:taboption("general", Flag, "wmm", translate("WMM Mode")) - wmm:depends({mode="ap"}) - wmm:depends({mode="ap-wds"}) - wmm.default = wmm.enabled - - isolate = s:taboption("advanced", Flag, "isolate", translate("Isolate Clients"), - translate("Prevents client-to-client communication")) - isolate:depends({mode="ap"}) - isolate:depends({mode="ap-wds"}) - - if not wifname:match("^mtk.*") then - ifname = s:taboption("advanced", Value, "ifname", translate("Interface name"), translate("Override default interface name")) - ifname.optional = true - end - - short_preamble = s:taboption("advanced", Flag, "short_preamble", translate("Short Preamble")) - short_preamble.default = short_preamble.enabled - - dtim_period = s:taboption("advanced", Value, "dtim_period", translate("DTIM Interval"), translate("Delivery Traffic Indication Message Interval")) - dtim_period.optional = true - dtim_period.placeholder = 2 - dtim_period.datatype = "range(1,255)" - - disassoc_low_ack = s:taboption("advanced", Flag, "disassoc_low_ack", translate("Disassociate On Low Acknowledgement"), - translate("Allow AP mode to disconnect STAs based on low ACK condition")) - disassoc_low_ack.default = disassoc_low_ack.enabled -end - - --------------------- Broadcom Interface ---------------------- - -if hwtype == "broadcom" then - mode:value("wds", translate("WDS")) - mode:value("monitor", translate("Monitor")) - - hidden = s:taboption("general", Flag, "hidden", translate("Hide ESSID")) - hidden:depends({mode="ap"}) - hidden:depends({mode="adhoc"}) - hidden:depends({mode="wds"}) - - isolate = s:taboption("advanced", Flag, "isolate", translate("Separate Clients"), - translate("Prevents client-to-client communication")) - isolate:depends({mode="ap"}) - - s:taboption("advanced", Flag, "doth", "802.11h") - s:taboption("advanced", Flag, "wmm", translate("WMM Mode")) - - bssid:depends({mode="wds"}) - bssid:depends({mode="adhoc"}) -end - - ------------------------ HostAP Interface --------------------- - -if hwtype == "prism2" then - mode:value("wds", translate("WDS")) - mode:value("monitor", translate("Monitor")) - - hidden = s:taboption("general", Flag, "hidden", translate("Hide ESSID")) - hidden:depends({mode="ap"}) - hidden:depends({mode="adhoc"}) - hidden:depends({mode="wds"}) - - bssid:depends({mode="sta"}) - - mp = s:taboption("macfilter", ListValue, "macpolicy", translate("MAC-Address Filter")) - mp:value("", translate("disable")) - mp:value("allow", translate("Allow listed only")) - mp:value("deny", translate("Allow all except listed")) - ml = s:taboption("macfilter", DynamicList, "maclist", translate("MAC-List")) - ml:depends({macpolicy="allow"}) - ml:depends({macpolicy="deny"}) - nt.mac_hints(function(mac, name) ml:value(mac, "%s (%s)" %{ mac, name }) end) - - s:taboption("advanced", Value, "rate", translate("Transmission Rate")) - s:taboption("advanced", Value, "frag", translate("Fragmentation Threshold")) - s:taboption("advanced", Value, "rts", translate("RTS/CTS Threshold")) -end - - -------------------- WiFI-Encryption ------------------- - -encr = s:taboption("encryption", ListValue, "encryption", translate("Encryption")) -encr.override_values = true -encr.override_depends = true -encr:depends({mode="ap"}) -encr:depends({mode="sta"}) -encr:depends({mode="adhoc"}) -encr:depends({mode="ahdemo"}) -encr:depends({mode="ap-wds"}) -encr:depends({mode="sta-wds"}) -encr:depends({mode="mesh"}) - -cipher = s:taboption("encryption", ListValue, "cipher", translate("Cipher")) -cipher:depends({encryption="wpa"}) -cipher:depends({encryption="wpa2"}) -cipher:depends({encryption="psk"}) -cipher:depends({encryption="psk2"}) -cipher:depends({encryption="wpa-mixed"}) -cipher:depends({encryption="psk-mixed"}) -cipher:value("auto", translate("auto")) -cipher:value("ccmp", translate("Force CCMP (AES)")) -cipher:value("tkip", translate("Force TKIP")) -cipher:value("tkip+ccmp", translate("Force TKIP and CCMP (AES)")) - -function encr.cfgvalue(self, section) - local v = tostring(ListValue.cfgvalue(self, section)) - if v == "wep" then - return "wep-open" - elseif v and v:match("%+") then - return (v:gsub("%+.+$", "")) - end - return v -end - -function encr.write(self, section, value) - local e = tostring(encr:formvalue(section)) - local c = tostring(cipher:formvalue(section)) - if value == "wpa" or value == "wpa2" then - self.map.uci:delete("wireless", section, "key") - end - if e and (c == "tkip" or c == "ccmp" or c == "tkip+ccmp") then - e = e .. "+" .. c - end - self.map:set(section, "encryption", e) -end - -function cipher.cfgvalue(self, section) - local v = tostring(ListValue.cfgvalue(encr, section)) - if v and v:match("%+") then - v = v:gsub("^[^%+]+%+", "") - if v == "aes" then v = "ccmp" - elseif v == "tkip+aes" then v = "tkip+ccmp" - elseif v == "aes+tkip" then v = "tkip+ccmp" - elseif v == "ccmp+tkip" then v = "tkip+ccmp" - end - end - return v -end - -function cipher.write(self, section) - return encr:write(section) -end - - -encr:value("none", "No Encryption") -encr:value("wep-open", translate("WEP Open System"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="ahdemo"}, {mode="wds"}) -encr:value("wep-shared", translate("WEP Shared Key"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="ahdemo"}, {mode="wds"}) - -if hwtype == "mac80211" or hwtype == "prism2" then - local supplicant = fs.access("/usr/sbin/wpa_supplicant") - local hostapd = fs.access("/usr/sbin/hostapd") - - -- Probe EAP support - local has_ap_eap = (os.execute("hostapd -veap >/dev/null 2>/dev/null") == 0) - local has_sta_eap = (os.execute("wpa_supplicant -veap >/dev/null 2>/dev/null") == 0) - - if hostapd and supplicant then - encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) - encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}) - if has_ap_eap and has_sta_eap then - encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) - encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}) - end - elseif hostapd and not supplicant then - encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="ap-wds"}) - encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="ap-wds"}) - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="ap-wds"}) - if has_ap_eap then - encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="ap-wds"}) - encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="ap-wds"}) - end - encr.description = translate( - "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. - "and ad-hoc mode) to be installed." - ) - elseif not hostapd and supplicant then - encr:value("psk", "WPA-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) - encr:value("psk2", "WPA2-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) - encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"}) - if has_sta_eap then - encr:value("wpa", "WPA-EAP", {mode="sta"}, {mode="sta-wds"}) - encr:value("wpa2", "WPA2-EAP", {mode="sta"}, {mode="sta-wds"}) - end - encr.description = translate( - "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. - "and ad-hoc mode) to be installed." - ) - else - encr.description = translate( - "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP " .. - "and ad-hoc mode) to be installed." - ) - end -elseif hwtype == "broadcom" then - encr:value("psk", "WPA-PSK") - encr:value("psk2", "WPA2-PSK") - encr:value("psk+psk2", "WPA-PSK/WPA2-PSK Mixed Mode") -end - -auth_server = s:taboption("encryption", Value, "auth_server", translate("Radius-Authentication-Server")) -auth_server:depends({mode="ap", encryption="wpa"}) -auth_server:depends({mode="ap", encryption="wpa2"}) -auth_server:depends({mode="ap-wds", encryption="wpa"}) -auth_server:depends({mode="ap-wds", encryption="wpa2"}) -auth_server.rmempty = true -auth_server.datatype = "host(0)" - -auth_port = s:taboption("encryption", Value, "auth_port", translate("Radius-Authentication-Port"), translatef("Default %d", 1812)) -auth_port:depends({mode="ap", encryption="wpa"}) -auth_port:depends({mode="ap", encryption="wpa2"}) -auth_port:depends({mode="ap-wds", encryption="wpa"}) -auth_port:depends({mode="ap-wds", encryption="wpa2"}) -auth_port.rmempty = true -auth_port.datatype = "port" - -auth_secret = s:taboption("encryption", Value, "auth_secret", translate("Radius-Authentication-Secret")) -auth_secret:depends({mode="ap", encryption="wpa"}) -auth_secret:depends({mode="ap", encryption="wpa2"}) -auth_secret:depends({mode="ap-wds", encryption="wpa"}) -auth_secret:depends({mode="ap-wds", encryption="wpa2"}) -auth_secret.rmempty = true -auth_secret.password = true - -acct_server = s:taboption("encryption", Value, "acct_server", translate("Radius-Accounting-Server")) -acct_server:depends({mode="ap", encryption="wpa"}) -acct_server:depends({mode="ap", encryption="wpa2"}) -acct_server:depends({mode="ap-wds", encryption="wpa"}) -acct_server:depends({mode="ap-wds", encryption="wpa2"}) -acct_server.rmempty = true -acct_server.datatype = "host(0)" - -acct_port = s:taboption("encryption", Value, "acct_port", translate("Radius-Accounting-Port"), translatef("Default %d", 1813)) -acct_port:depends({mode="ap", encryption="wpa"}) -acct_port:depends({mode="ap", encryption="wpa2"}) -acct_port:depends({mode="ap-wds", encryption="wpa"}) -acct_port:depends({mode="ap-wds", encryption="wpa2"}) -acct_port.rmempty = true -acct_port.datatype = "port" - -acct_secret = s:taboption("encryption", Value, "acct_secret", translate("Radius-Accounting-Secret")) -acct_secret:depends({mode="ap", encryption="wpa"}) -acct_secret:depends({mode="ap", encryption="wpa2"}) -acct_secret:depends({mode="ap-wds", encryption="wpa"}) -acct_secret:depends({mode="ap-wds", encryption="wpa2"}) -acct_secret.rmempty = true -acct_secret.password = true - -wpakey = s:taboption("encryption", Value, "_wpa_key", translate("Key")) -wpakey:depends("encryption", "psk") -wpakey:depends("encryption", "psk2") -wpakey:depends("encryption", "psk+psk2") -wpakey:depends("encryption", "psk-mixed") -wpakey.datatype = "wpakey" -wpakey.rmempty = true -wpakey.password = true - -wpakey.cfgvalue = function(self, section, value) - local key = m.uci:get("wireless", section, "key") - if key == "1" or key == "2" or key == "3" or key == "4" then - return nil - end - return key -end - -wpakey.write = function(self, section, value) - self.map.uci:set("wireless", section, "key", value) - self.map.uci:delete("wireless", section, "key1") -end - - -wepslot = s:taboption("encryption", ListValue, "_wep_key", translate("Used Key Slot")) -wepslot:depends("encryption", "wep-open") -wepslot:depends("encryption", "wep-shared") -wepslot:value("1", translatef("Key #%d", 1)) -wepslot:value("2", translatef("Key #%d", 2)) -wepslot:value("3", translatef("Key #%d", 3)) -wepslot:value("4", translatef("Key #%d", 4)) - -wepslot.cfgvalue = function(self, section) - local slot = tonumber(m.uci:get("wireless", section, "key")) - if not slot or slot < 1 or slot > 4 then - return 1 - end - return slot -end - -wepslot.write = function(self, section, value) - self.map.uci:set("wireless", section, "key", value) -end - -local slot -for slot=1,4 do - wepkey = s:taboption("encryption", Value, "key" .. slot, translatef("Key #%d", slot)) - wepkey:depends("encryption", "wep-open") - wepkey:depends("encryption", "wep-shared") - wepkey.datatype = "wepkey" - wepkey.rmempty = true - wepkey.password = true - - function wepkey.write(self, section, value) - if value and (#value == 5 or #value == 13) then - value = "s:" .. value - end - return Value.write(self, section, value) - end -end - - -if hwtype == "mac80211" or hwtype == "prism2" then - - -- Probe 802.11r support (and EAP support as a proxy for Openwrt) - local has_80211r = (os.execute("hostapd -v11r 2>/dev/null || hostapd -veap 2>/dev/null") == 0) - - ieee80211r = s:taboption("encryption", Flag, "ieee80211r", - translate("802.11r Fast Transition"), - translate("Enables fast roaming among access points that belong " .. - "to the same Mobility Domain")) - ieee80211r:depends({mode="ap", encryption="wpa"}) - ieee80211r:depends({mode="ap", encryption="wpa2"}) - ieee80211r:depends({mode="ap-wds", encryption="wpa"}) - ieee80211r:depends({mode="ap-wds", encryption="wpa2"}) - if has_80211r then - ieee80211r:depends({mode="ap", encryption="psk"}) - ieee80211r:depends({mode="ap", encryption="psk2"}) - ieee80211r:depends({mode="ap", encryption="psk-mixed"}) - ieee80211r:depends({mode="ap-wds", encryption="psk"}) - ieee80211r:depends({mode="ap-wds", encryption="psk2"}) - ieee80211r:depends({mode="ap-wds", encryption="psk-mixed"}) - end - ieee80211r.rmempty = true - - nasid = s:taboption("encryption", Value, "nasid", translate("NAS ID"), - translate("Used for two different purposes: RADIUS NAS ID and " .. - "802.11r R0KH-ID. Not needed with normal WPA(2)-PSK.")) - nasid:depends({mode="ap", encryption="wpa"}) - nasid:depends({mode="ap", encryption="wpa2"}) - nasid:depends({mode="ap-wds", encryption="wpa"}) - nasid:depends({mode="ap-wds", encryption="wpa2"}) - nasid:depends({ieee80211r="1"}) - nasid.rmempty = true - - mobility_domain = s:taboption("encryption", Value, "mobility_domain", - translate("Mobility Domain"), - translate("4-character hexadecimal ID")) - mobility_domain:depends({ieee80211r="1"}) - mobility_domain.placeholder = "4f57" - mobility_domain.datatype = "and(hexstring,rangelength(4,4))" - mobility_domain.rmempty = true - - reassociation_deadline = s:taboption("encryption", Value, "reassociation_deadline", - translate("Reassociation Deadline"), - translate("time units (TUs / 1.024 ms) [1000-65535]")) - reassociation_deadline:depends({ieee80211r="1"}) - reassociation_deadline.placeholder = "1000" - reassociation_deadline.datatype = "range(1000,65535)" - reassociation_deadline.rmempty = true - - ft_protocol = s:taboption("encryption", ListValue, "ft_over_ds", translate("FT protocol")) - ft_protocol:depends({ieee80211r="1"}) - ft_protocol:value("1", translatef("FT over DS")) - ft_protocol:value("0", translatef("FT over the Air")) - ft_protocol.rmempty = true - - ft_psk_generate_local = s:taboption("encryption", Flag, "ft_psk_generate_local", - translate("Generate PMK locally"), - translate("When using a PSK, the PMK can be generated locally without inter AP communications")) - ft_psk_generate_local:depends({ieee80211r="1"}) - - r0_key_lifetime = s:taboption("encryption", Value, "r0_key_lifetime", - translate("R0 Key Lifetime"), translate("minutes")) - r0_key_lifetime:depends({ieee80211r="1", ft_psk_generate_local=""}) - r0_key_lifetime.placeholder = "10000" - r0_key_lifetime.datatype = "uinteger" - r0_key_lifetime.rmempty = true - - r1_key_holder = s:taboption("encryption", Value, "r1_key_holder", - translate("R1 Key Holder"), - translate("6-octet identifier as a hex string - no colons")) - r1_key_holder:depends({ieee80211r="1", ft_psk_generate_local=""}) - r1_key_holder.placeholder = "00004f577274" - r1_key_holder.datatype = "and(hexstring,rangelength(12,12))" - r1_key_holder.rmempty = true - - pmk_r1_push = s:taboption("encryption", Flag, "pmk_r1_push", translate("PMK R1 Push")) - pmk_r1_push:depends({ieee80211r="1", ft_psk_generate_local=""}) - pmk_r1_push.placeholder = "0" - pmk_r1_push.rmempty = true - - r0kh = s:taboption("encryption", DynamicList, "r0kh", translate("External R0 Key Holder List"), - translate("List of R0KHs in the same Mobility Domain. " .. - "
    Format: MAC-address,NAS-Identifier,128-bit key as hex string. " .. - "
    This list is used to map R0KH-ID (NAS Identifier) to a destination " .. - "MAC address when requesting PMK-R1 key from the R0KH that the STA " .. - "used during the Initial Mobility Domain Association.")) - r0kh:depends({ieee80211r="1", ft_psk_generate_local=""}) - r0kh.rmempty = true - - r1kh = s:taboption("encryption", DynamicList, "r1kh", translate("External R1 Key Holder List"), - translate ("List of R1KHs in the same Mobility Domain. ".. - "
    Format: MAC-address,R1KH-ID as 6 octets with colons,128-bit key as hex string. ".. - "
    This list is used to map R1KH-ID to a destination MAC address " .. - "when sending PMK-R1 key from the R0KH. This is also the " .. - "list of authorized R1KHs in the MD that can request PMK-R1 keys.")) - r1kh:depends({ieee80211r="1", ft_psk_generate_local=""}) - r1kh.rmempty = true - -- End of 802.11r options - - eaptype = s:taboption("encryption", ListValue, "eap_type", translate("EAP-Method")) - eaptype:value("tls", "TLS") - eaptype:value("ttls", "TTLS") - eaptype:value("peap", "PEAP") - eaptype:value("fast", "FAST") - eaptype:depends({mode="sta", encryption="wpa"}) - eaptype:depends({mode="sta", encryption="wpa2"}) - eaptype:depends({mode="sta-wds", encryption="wpa"}) - eaptype:depends({mode="sta-wds", encryption="wpa2"}) - - cacert = s:taboption("encryption", FileUpload, "ca_cert", translate("Path to CA-Certificate")) - cacert:depends({mode="sta", encryption="wpa"}) - cacert:depends({mode="sta", encryption="wpa2"}) - cacert:depends({mode="sta-wds", encryption="wpa"}) - cacert:depends({mode="sta-wds", encryption="wpa2"}) - cacert.rmempty = true - - clientcert = s:taboption("encryption", FileUpload, "client_cert", translate("Path to Client-Certificate")) - clientcert:depends({mode="sta", eap_type="tls", encryption="wpa"}) - clientcert:depends({mode="sta", eap_type="tls", encryption="wpa2"}) - clientcert:depends({mode="sta-wds", eap_type="tls", encryption="wpa"}) - clientcert:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"}) - - privkey = s:taboption("encryption", FileUpload, "priv_key", translate("Path to Private Key")) - privkey:depends({mode="sta", eap_type="tls", encryption="wpa2"}) - privkey:depends({mode="sta", eap_type="tls", encryption="wpa"}) - privkey:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"}) - privkey:depends({mode="sta-wds", eap_type="tls", encryption="wpa"}) - - privkeypwd = s:taboption("encryption", Value, "priv_key_pwd", translate("Password of Private Key")) - privkeypwd:depends({mode="sta", eap_type="tls", encryption="wpa2"}) - privkeypwd:depends({mode="sta", eap_type="tls", encryption="wpa"}) - privkeypwd:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"}) - privkeypwd:depends({mode="sta-wds", eap_type="tls", encryption="wpa"}) - privkeypwd.rmempty = true - privkeypwd.password = true - - auth = s:taboption("encryption", ListValue, "auth", translate("Authentication")) - auth:value("PAP", "PAP", {eap_type="ttls"}) - auth:value("CHAP", "CHAP", {eap_type="ttls"}) - auth:value("MSCHAP", "MSCHAP", {eap_type="ttls"}) - auth:value("MSCHAPV2", "MSCHAPv2", {eap_type="ttls"}) - auth:value("EAP-GTC") - auth:value("EAP-MD5") - auth:value("EAP-MSCHAPV2") - auth:value("EAP-TLS") - auth:depends({mode="sta", eap_type="fast", encryption="wpa2"}) - auth:depends({mode="sta", eap_type="fast", encryption="wpa"}) - auth:depends({mode="sta", eap_type="peap", encryption="wpa2"}) - auth:depends({mode="sta", eap_type="peap", encryption="wpa"}) - auth:depends({mode="sta", eap_type="ttls", encryption="wpa2"}) - auth:depends({mode="sta", eap_type="ttls", encryption="wpa"}) - auth:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"}) - auth:depends({mode="sta-wds", eap_type="fast", encryption="wpa"}) - auth:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"}) - auth:depends({mode="sta-wds", eap_type="peap", encryption="wpa"}) - auth:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"}) - auth:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"}) - - cacert2 = s:taboption("encryption", FileUpload, "ca_cert2", translate("Path to inner CA-Certificate")) - cacert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"}) - cacert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"}) - cacert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"}) - cacert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"}) - - clientcert2 = s:taboption("encryption", FileUpload, "client_cert2", translate("Path to inner Client-Certificate")) - clientcert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"}) - clientcert2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"}) - clientcert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"}) - clientcert2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"}) - - privkey2 = s:taboption("encryption", FileUpload, "priv_key2", translate("Path to inner Private Key")) - privkey2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"}) - privkey2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"}) - privkey2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"}) - privkey2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"}) - - privkeypwd2 = s:taboption("encryption", Value, "priv_key2_pwd", translate("Password of inner Private Key")) - privkeypwd2:depends({mode="sta", auth="EAP-TLS", encryption="wpa"}) - privkeypwd2:depends({mode="sta", auth="EAP-TLS", encryption="wpa2"}) - privkeypwd2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa"}) - privkeypwd2:depends({mode="sta-wds", auth="EAP-TLS", encryption="wpa2"}) - privkeypwd2.rmempty = true - privkeypwd2.password = true - - identity = s:taboption("encryption", Value, "identity", translate("Identity")) - identity:depends({mode="sta", eap_type="fast", encryption="wpa2"}) - identity:depends({mode="sta", eap_type="fast", encryption="wpa"}) - identity:depends({mode="sta", eap_type="peap", encryption="wpa2"}) - identity:depends({mode="sta", eap_type="peap", encryption="wpa"}) - identity:depends({mode="sta", eap_type="ttls", encryption="wpa2"}) - identity:depends({mode="sta", eap_type="ttls", encryption="wpa"}) - identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"}) - identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa"}) - identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"}) - identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa"}) - identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"}) - identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"}) - identity:depends({mode="sta", eap_type="tls", encryption="wpa2"}) - identity:depends({mode="sta", eap_type="tls", encryption="wpa"}) - identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"}) - identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa"}) - - anonymous_identity = s:taboption("encryption", Value, "anonymous_identity", translate("Anonymous Identity")) - anonymous_identity:depends({mode="sta", eap_type="fast", encryption="wpa2"}) - anonymous_identity:depends({mode="sta", eap_type="fast", encryption="wpa"}) - anonymous_identity:depends({mode="sta", eap_type="peap", encryption="wpa2"}) - anonymous_identity:depends({mode="sta", eap_type="peap", encryption="wpa"}) - anonymous_identity:depends({mode="sta", eap_type="ttls", encryption="wpa2"}) - anonymous_identity:depends({mode="sta", eap_type="ttls", encryption="wpa"}) - anonymous_identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"}) - anonymous_identity:depends({mode="sta-wds", eap_type="fast", encryption="wpa"}) - anonymous_identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"}) - anonymous_identity:depends({mode="sta-wds", eap_type="peap", encryption="wpa"}) - anonymous_identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"}) - anonymous_identity:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"}) - anonymous_identity:depends({mode="sta", eap_type="tls", encryption="wpa2"}) - anonymous_identity:depends({mode="sta", eap_type="tls", encryption="wpa"}) - anonymous_identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa2"}) - anonymous_identity:depends({mode="sta-wds", eap_type="tls", encryption="wpa"}) - - password = s:taboption("encryption", Value, "password", translate("Password")) - password:depends({mode="sta", eap_type="fast", encryption="wpa2"}) - password:depends({mode="sta", eap_type="fast", encryption="wpa"}) - password:depends({mode="sta", eap_type="peap", encryption="wpa2"}) - password:depends({mode="sta", eap_type="peap", encryption="wpa"}) - password:depends({mode="sta", eap_type="ttls", encryption="wpa2"}) - password:depends({mode="sta", eap_type="ttls", encryption="wpa"}) - password:depends({mode="sta-wds", eap_type="fast", encryption="wpa2"}) - password:depends({mode="sta-wds", eap_type="fast", encryption="wpa"}) - password:depends({mode="sta-wds", eap_type="peap", encryption="wpa2"}) - password:depends({mode="sta-wds", eap_type="peap", encryption="wpa"}) - password:depends({mode="sta-wds", eap_type="ttls", encryption="wpa2"}) - password:depends({mode="sta-wds", eap_type="ttls", encryption="wpa"}) - password.rmempty = true - password.password = true -end - --- ieee802.11w options -if hwtype == "mac80211" then - local has_80211w = (os.execute("hostapd -v11w 2>/dev/null || hostapd -veap 2>/dev/null") == 0) - if has_80211w then - ieee80211w = s:taboption("encryption", ListValue, "ieee80211w", - translate("802.11w Management Frame Protection"), - translate("Requires the 'full' version of wpad/hostapd " .. - "and support from the wifi driver
    (as of Feb 2017: " .. - "ath9k and ath10k, in LEDE also mwlwifi and mt76)")) - ieee80211w.default = "" - ieee80211w.rmempty = true - ieee80211w:value("", translate("Disabled (default)")) - ieee80211w:value("1", translate("Optional")) - ieee80211w:value("2", translate("Required")) - ieee80211w:depends({mode="ap", encryption="wpa2"}) - ieee80211w:depends({mode="ap-wds", encryption="wpa2"}) - ieee80211w:depends({mode="ap", encryption="psk2"}) - ieee80211w:depends({mode="ap", encryption="psk-mixed"}) - ieee80211w:depends({mode="ap-wds", encryption="psk2"}) - ieee80211w:depends({mode="ap-wds", encryption="psk-mixed"}) - - max_timeout = s:taboption("encryption", Value, "ieee80211w_max_timeout", - translate("802.11w maximum timeout"), - translate("802.11w Association SA Query maximum timeout")) - max_timeout:depends({ieee80211w="1"}) - max_timeout:depends({ieee80211w="2"}) - max_timeout.datatype = "uinteger" - max_timeout.placeholder = "1000" - max_timeout.rmempty = true - - retry_timeout = s:taboption("encryption", Value, "ieee80211w_retry_timeout", - translate("802.11w retry timeout"), - translate("802.11w Association SA Query retry timeout")) - retry_timeout:depends({ieee80211w="1"}) - retry_timeout:depends({ieee80211w="2"}) - retry_timeout.datatype = "uinteger" - retry_timeout.placeholder = "201" - retry_timeout.rmempty = true - end - - key_retries = s:taboption("encryption", Flag, "wpa_disable_eapol_key_retries", - translate("Enable key reinstallation (KRACK) countermeasures"), - translate("Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load.")) - - key_retries:depends({mode="ap", encryption="wpa2"}) - key_retries:depends({mode="ap", encryption="psk2"}) - key_retries:depends({mode="ap", encryption="psk-mixed"}) - key_retries:depends({mode="ap-wds", encryption="wpa2"}) - key_retries:depends({mode="ap-wds", encryption="psk2"}) - key_retries:depends({mode="ap-wds", encryption="psk-mixed"}) -end - -if hwtype == "mac80211" or hwtype == "prism2" then - local wpasupplicant = fs.access("/usr/sbin/wpa_supplicant") - local hostcli = fs.access("/usr/sbin/hostapd_cli") - if hostcli and wpasupplicant then - wps = s:taboption("encryption", Flag, "wps_pushbutton", translate("Enable WPS pushbutton, requires WPA(2)-PSK")) - wps.enabled = "1" - wps.disabled = "0" - wps.rmempty = false - wps:depends("encryption", "psk") - wps:depends("encryption", "psk2") - wps:depends("encryption", "psk-mixed") - end -end - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_add.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_add.lua deleted file mode 100644 index e8a305882..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_add.lua +++ /dev/null @@ -1,168 +0,0 @@ --- Copyright 2009 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local nw = require "luci.model.network" -local fw = require "luci.model.firewall" -local uci = require "luci.model.uci".cursor() -local http = require "luci.http" - -local iw = luci.sys.wifi.getiwinfo(http.formvalue("device")) - -local has_firewall = fs.access("/etc/config/firewall") - -if not iw then - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless")) - return -end - -m = SimpleForm("network", translatef("Joining Network: %q", http.formvalue("join"))) -m.cancel = translate("Back to scan results") -m.reset = false - -function m.on_cancel() - local dev = http.formvalue("device") - http.redirect(luci.dispatcher.build_url( - dev and "admin/network/wireless_join?device=" .. dev - or "admin/network/wireless" - )) -end - -nw.init(uci) -fw.init(uci) - -m.hidden = { - device = http.formvalue("device"), - join = http.formvalue("join"), - channel = http.formvalue("channel"), - mode = http.formvalue("mode"), - bssid = http.formvalue("bssid"), - wep = http.formvalue("wep"), - wpa_suites = http.formvalue("wpa_suites"), - wpa_version = http.formvalue("wpa_version") -} - -if iw and iw.mbssid_support then - replace = m:field(Flag, "replace", translate("Replace wireless configuration"), - translate("Check this option to delete the existing networks from this radio.")) - - function replace.cfgvalue() return "0" end -else - replace = m:field(DummyValue, "replace", translate("Replace wireless configuration")) - replace.default = translate("The hardware is not multi-SSID capable and the existing " .. - "configuration will be replaced if you proceed.") - - function replace.formvalue() return "1" end -end - -if http.formvalue("wep") == "1" then - key = m:field(Value, "key", translate("WEP passphrase"), - translate("Specify the secret encryption key here.")) - - key.password = true - key.datatype = "wepkey" - -elseif (tonumber(m.hidden.wpa_version) or 0) > 0 and - (m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2") -then - key = m:field(Value, "key", translate("WPA passphrase"), - translate("Specify the secret encryption key here.")) - - key.password = true - key.datatype = "wpakey" - --m.hidden.wpa_suite = (tonumber(http.formvalue("wpa_version")) or 0) >= 2 and "psk2" or "psk" -end - -newnet = m:field(Value, "_netname_new", translate("Name of the new network"), - translate("The allowed characters are: A-Z, a-z, " .. - "0-9 and _" - )) - -newnet.default = m.hidden.mode == "Ad-Hoc" and "mesh" or "wwan" -newnet.datatype = "uciname" - -if has_firewall then - fwzone = m:field(Value, "_fwzone", - translate("Create / Assign firewall-zone"), - translate("Choose the firewall zone you want to assign to this interface. Select unspecified to remove the interface from the associated zone or fill out the create field to define a new zone and attach the interface to it.")) - - fwzone.template = "cbi/firewall_zonelist" - fwzone.default = m.hidden.mode == "Ad-Hoc" and "mesh" or "wan" -end - -function newnet.parse(self, section) - local net, zone - - if has_firewall then - local value = fwzone:formvalue(section) - if value and #value > 0 then - zone = fw:get_zone(value) or fw:add_zone(value) - end - end - - local wdev = nw:get_wifidev(m.hidden.device) - - wdev:set("disabled", false) - wdev:set("channel", m.hidden.channel) - - if replace:formvalue(section) then - local n - for _, n in ipairs(wdev:get_wifinets()) do - wdev:del_wifinet(n) - end - end - - local wconf = { - device = m.hidden.device, - ssid = m.hidden.join, - mode = (m.hidden.mode == "Ad-Hoc" and "adhoc" or "sta") - } - - if m.hidden.wep == "1" then - wconf.encryption = "wep-open" - wconf.key = "1" - wconf.key1 = key and key:formvalue(section) or "" - elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then - wconf.encryption = (tonumber(m.hidden.wpa_version) or 0) >= 2 and "psk2" or "psk" - wconf.key = key and key:formvalue(section) or "" - else - wconf.encryption = "none" - end - - if wconf.mode == "adhoc" or wconf.mode == "sta" then - wconf.bssid = m.hidden.bssid - end - - local value = self:formvalue(section) - net = nw:add_network(value, { proto = "dhcp" }) - - if not net then - self.error = { [section] = "missing" } - else - wconf.network = net:name() - - local wnet = wdev:add_wifinet(wconf) - if wnet then - if zone then - fw:del_network(net:name()) - zone:add_network(net:name()) - end - - uci:save("wireless") - uci:save("network") - uci:save("firewall") - - luci.http.redirect(wnet:adminlink()) - end - end -end - -if has_firewall then - function fwzone.cfgvalue(self, section) - self.iface = section - local z = fw:get_zone_by_network(section) - return z and z:name() - end -end - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua deleted file mode 100644 index ad20f0918..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi_overview.lua +++ /dev/null @@ -1,223 +0,0 @@ --- Copyright 2018 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local utl = require "luci.util" -local tpl = require "luci.template" -local ntm = require "luci.model.network" - -local has_iwinfo = pcall(require, "iwinfo") - -function guess_wifi_hw(dev) - local bands = "" - local ifname = dev:name() - local name, idx = ifname:match("^([a-z]+)(%d+)") - idx = tonumber(idx) - - if has_iwinfo then - local bl = dev.iwinfo.hwmodelist - if bl and next(bl) then - if bl.a then bands = bands .. "a" end - if bl.b then bands = bands .. "b" end - if bl.g then bands = bands .. "g" end - if bl.n then bands = bands .. "n" end - if bl.ac then bands = bands .. "ac" end - end - - local hw = dev.iwinfo.hardware_name - if hw then - return "%s 802.11%s" %{ hw, bands } - end - end - - -- wl.o - if name == "wl" then - local name = translatef("Broadcom 802.11%s Wireless Controller", bands) - local nm = 0 - - local fd = nixio.open("/proc/bus/pci/devices", "r") - if fd then - local ln - for ln in fd:linesource() do - if ln:match("wl$") then - if nm == idx then - local version = ln:match("^%S+%s+%S%S%S%S([0-9a-f]+)") - name = translatef( - "Broadcom BCM%04x 802.11 Wireless Controller", - tonumber(version, 16) - ) - - break - else - nm = nm + 1 - end - end - end - fd:close() - end - - return name - - -- dunno yet - else - return translatef("Generic 802.11%s Wireless Controller", bands) - end -end - -local tpl_radio = tpl.Template(nil, [[ -
    -
    - -
    -
    - <%=dev:name()%> -
    -
    - <%=hw%>
    - -
    -
    -
    - - - -
    -
    -
    - - - - <% if #wnets > 0 then %> - <% for i, net in ipairs(wnets) do local disabled = (dev:get("disabled") == "1" or net:get("disabled") == "1") %> -
    -
    - .png" /> 0% -
    -
    "> - <%= disabled and translate("Wireless is disabled") or translate("Collecting data...") %> -
    -
    -
    - <% if disabled then %> - - - <% else %> - - - <% end %> - - - - - -
    -
    -
    - <% end %> - <% else %> -
    -
    - <%:No network configured on this device%> -
    -
    - <% end %> - -
    -
    -]]) - - -m = Map("wireless", translate("Wireless Overview")) -m:chain("network") -m.pageaction = false - -if not has_iwinfo then - s = m:section(NamedSection, "__warning__") - - function s.render(self) - tpl.render_string([[ -
    -

    <%:Package libiwinfo required!%>

    -

    <%_The libiwinfo-lua package is not installed. You must install this component for working wireless configuration!%>

    -
    - ]]) - end -end - -local _, dev, net -for _, dev in ipairs(ntm:get_wifidevs()) do - s = m:section(TypedSection) - s.wnets = dev:get_wifinets() - - function s.render(self, sid) - tpl_radio:render({ - hw = guess_wifi_hw(dev), - dev = dev, - wnets = self.wnets - }) - end - - function s.cfgsections(self) - local _, net, sl = nil, nil, { } - for _, net in ipairs(self.wnets) do - sl[#sl+1] = net:name() - self.wnets[net:name()] = net - end - return sl - end - - o = s:option(Value, "__disable__") - - function o.cfgvalue(self, sid) - local wnet = self.section.wnets[sid] - local wdev = wnet:get_device() - - return ((wnet and wnet:get("disabled") == "1") or - (wdev and wdev:get("disabled") == "1")) and "1" or "0" - end - - function o.write(self, sid, value) - local wnet = self.section.wnets[sid] - local wdev = wnet:get_device() - - if value ~= "1" then - wnet:set("disabled", nil) - wdev:set("disabled", nil) - else - wnet:set("disabled", "1") - end - end - - o.remove = o.write - - - o = s:option(Value, "__delete__") - - function o.write(self, sid, value) - local wnet = self.section.wnets[sid] - local nets = wnet:get_networks() - - ntm:del_wifinet(wnet:id()) - - local _, net - for _, net in ipairs(nets) do - if net:is_empty() then - ntm:del_network(net:name()) - end - end - end -end - -s = m:section(NamedSection, "__script__") -s.template = "admin_network/wifi_overview_status" - -s = m:section(NamedSection, "__assoclist__") - -function s.render(self, sid) - tpl.render_string([[ -

    <%:Associated Stations%>

    - <%+admin_network/wifi_assoclist%> - ]]) -end - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_status/processes.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_status/processes.lua deleted file mode 100644 index 0a6e48fd8..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_status/processes.lua +++ /dev/null @@ -1,34 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -f = SimpleForm("processes", translate("Processes"), translate("This list gives an overview over currently running system processes and their status.")) -f.reset = false -f.submit = false - -t = f:section(Table, luci.sys.process.list()) -t:option(DummyValue, "PID", translate("PID")) -t:option(DummyValue, "USER", translate("Owner")) -t:option(DummyValue, "COMMAND", translate("Command")) -t:option(DummyValue, "%CPU", translate("CPU usage (%)")) -t:option(DummyValue, "%MEM", translate("Memory usage (%)")) - -hup = t:option(Button, "_hup", translate("Hang Up")) -hup.inputstyle = "reload" -function hup.write(self, section) - null, self.tag_error[section] = luci.sys.process.signal(section, 1) -end - -term = t:option(Button, "_term", translate("Terminate")) -term.inputstyle = "remove" -function term.write(self, section) - null, self.tag_error[section] = luci.sys.process.signal(section, 15) -end - -kill = t:option(Button, "_kill", translate("Kill")) -kill.inputstyle = "reset" -function kill.write(self, section) - null, self.tag_error[section] = luci.sys.process.signal(section, 9) -end - -return f \ No newline at end of file diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_system/admin.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_system/admin.lua deleted file mode 100644 index 6c1c1235c..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_system/admin.lua +++ /dev/null @@ -1,122 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" - -m = Map("system", translate("Router Password"), - translate("Changes the administrator password for accessing the device")) - -s = m:section(TypedSection, "_dummy", "") -s.addremove = false -s.anonymous = true - -pw1 = s:option(Value, "pw1", translate("Password")) -pw1.password = true - -pw2 = s:option(Value, "pw2", translate("Confirmation")) -pw2.password = true - -function s.cfgsections() - return { "_pass" } -end - -function m.parse(map) - local v1 = pw1:formvalue("_pass") - local v2 = pw2:formvalue("_pass") - - if v1 and v2 and #v1 > 0 and #v2 > 0 then - if v1 == v2 then - if luci.sys.user.setpasswd(luci.dispatcher.context.authuser, v1) == 0 then - m.message = translate("Password successfully changed!") - else - m.message = translate("Unknown Error, password not changed!") - end - else - m.message = translate("Given password confirmation did not match, password not changed!") - end - end - - Map.parse(map) -end - - -if fs.access("/etc/config/dropbear") then - -m2 = Map("dropbear", translate("SSH Access"), - translate("Dropbear offers SSH network shell access and an integrated SCP server")) - -s = m2:section(TypedSection, "dropbear", translate("Dropbear Instance")) -s.anonymous = true -s.addremove = true - - -ni = s:option(Value, "Interface", translate("Interface"), - translate("Listen only on the given interface or, if unspecified, on all")) - -ni.template = "cbi/network_netlist" -ni.nocreate = true -ni.unspecified = true - - -pt = s:option(Value, "Port", translate("Port"), - translate("Specifies the listening port of this Dropbear instance")) - -pt.datatype = "port" -pt.default = 22 - - -pa = s:option(Flag, "PasswordAuth", translate("Password authentication"), - translate("Allow SSH password authentication")) - -pa.enabled = "on" -pa.disabled = "off" -pa.default = pa.enabled -pa.rmempty = false - - -ra = s:option(Flag, "RootPasswordAuth", translate("Allow root logins with password"), - translate("Allow the root user to login with password")) - -ra.enabled = "on" -ra.disabled = "off" -ra.default = ra.enabled - - -gp = s:option(Flag, "GatewayPorts", translate("Gateway ports"), - translate("Allow remote hosts to connect to local SSH forwarded ports")) - -gp.enabled = "on" -gp.disabled = "off" -gp.default = gp.disabled - - -s2 = m2:section(TypedSection, "_dummy", translate("SSH-Keys"), - translate("Here you can paste public SSH-Keys (one per line) for SSH public-key authentication.")) -s2.addremove = false -s2.anonymous = true -s2.template = "cbi/tblsection" - -function s2.cfgsections() - return { "_keys" } -end - -keys = s2:option(TextValue, "_data", "") -keys.wrap = "off" -keys.rows = 3 - -function keys.cfgvalue() - return fs.readfile("/etc/dropbear/authorized_keys") or "" -end - -function keys.write(self, section, value) - return fs.writefile("/etc/dropbear/authorized_keys", value:gsub("\r\n", "\n")) -end - -function keys.remove(self, section, value) - return fs.writefile("/etc/dropbear/authorized_keys", "") -end - -end - -return m, m2 diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_system/backupfiles.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_system/backupfiles.lua deleted file mode 100644 index ee2401e93..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_system/backupfiles.lua +++ /dev/null @@ -1,80 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -if luci.http.formvalue("cbid.luci.1._list") then - luci.http.redirect(luci.dispatcher.build_url("admin/system/flashops/backupfiles") .. "?display=list") -elseif luci.http.formvalue("cbid.luci.1._edit") then - luci.http.redirect(luci.dispatcher.build_url("admin/system/flashops/backupfiles") .. "?display=edit") - return -end - -m = SimpleForm("luci", translate("Backup file list")) -m:append(Template("admin_system/backupfiles")) - -if luci.http.formvalue("display") ~= "list" then - f = m:section(SimpleSection, nil, translate("This is a list of shell glob patterns for matching files and directories to include during sysupgrade. Modified files in /etc/config/ and certain other configurations are automatically preserved.")) - - l = f:option(Button, "_list", translate("Show current backup file list")) - l.inputtitle = translate("Open list...") - l.inputstyle = "apply" - - c = f:option(TextValue, "_custom") - c.rmempty = false - c.cols = 70 - c.rows = 30 - - c.cfgvalue = function(self, section) - return nixio.fs.readfile("/etc/sysupgrade.conf") - end - - c.write = function(self, section, value) - value = value:gsub("\r\n?", "\n") - return nixio.fs.writefile("/etc/sysupgrade.conf", value) - end -else - m.submit = false - m.reset = false - - f = m:section(SimpleSection, nil, translate("Below is the determined list of files to backup. It consists of changed configuration files marked by opkg, essential base files and the user defined backup patterns.")) - - l = f:option(Button, "_edit", translate("Back to configuration")) - l.inputtitle = translate("Close list...") - l.inputstyle = "link" - - - d = f:option(DummyValue, "_detected") - d.rawhtml = true - d.cfgvalue = function(s) - local list = io.popen( - "( find $(sed -ne '/^[[:space:]]*$/d; /^#/d; p' /etc/sysupgrade.conf " .. - "/lib/upgrade/keep.d/* 2>/dev/null) -type f 2>/dev/null; " .. - "opkg list-changed-conffiles ) | sort -u" - ) - - if list then - local files = { "
      " } - - while true do - local ln = list:read("*l") - if not ln then - break - else - files[#files+1] = "
    • " - files[#files+1] = luci.util.pcdata(ln) - files[#files+1] = "
    • " - end - end - - list:close() - files[#files+1] = "
    " - - return table.concat(files, "") - end - - return "" .. translate("No files found") .. "" - end - -end - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua deleted file mode 100644 index 016a6199a..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua +++ /dev/null @@ -1,32 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2013 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local cronfile = "/etc/crontabs/root" - -f = SimpleForm("crontab", translate("Scheduled Tasks"), - translate("This is the system crontab in which scheduled tasks can be defined.") .. - translate("
    Note: you need to manually restart the cron service if the " .. - "crontab file was empty before editing.")) - -t = f:field(TextValue, "crons") -t.rmempty = true -t.rows = 10 -function t.cfgvalue() - return fs.readfile(cronfile) or "" -end - -function f.handle(self, state, data) - if state == FORM_VALID then - if data.crons then - fs.writefile(cronfile, data.crons:gsub("\r\n", "\n")) - luci.sys.call("/usr/bin/crontab %q" % cronfile) - else - fs.writefile(cronfile, "") - end - end - return true -end - -return f diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua deleted file mode 100644 index 3ce5351bf..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua +++ /dev/null @@ -1,270 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -require("luci.tools.webadmin") - -local fs = require "nixio.fs" -local util = require "nixio.util" -local tp = require "luci.template.parser" - -local block = io.popen("block info", "r") -local ln, dev, devices = nil, nil, {} - -repeat - ln = block:read("*l") - dev = ln and ln:match("^/dev/(.-):") - - if dev then - local e, s, key, val = { } - - for key, val in ln:gmatch([[(%w+)="(.-)"]]) do - e[key:lower()] = val - devices[val] = e - end - - s = tonumber((fs.readfile("/sys/class/block/%s/size" % dev))) - - e.dev = "/dev/%s" % dev - e.size = s and math.floor(s / 2048) - - devices[e.dev] = e - end -until not ln - -block:close() - -m = Map("fstab", translate("Mount Points")) -s = m:section(TypedSection, "global", translate("Global Settings")) -s.addremove = false -s.anonymous = true - -detect = s:option(Button, "block_detect", translate("Generate Config"), translate("Find all currently attached filesystems and swap and replace configuration with defaults based on what was detected")) -detect.inputstyle = "reload" - -detect.write = function(self, section) - luci.sys.call("block detect >/etc/config/fstab") - luci.http.redirect(luci.dispatcher.build_url("admin/system", "fstab")) -end - -o = s:option(Flag, "anon_swap", translate("Anonymous Swap"), translate("Mount swap not specifically configured")) -o.default = o.disabled -o.rmempty = false - -o = s:option(Flag, "anon_mount", translate("Anonymous Mount"), translate("Mount filesystems not specifically configured")) -o.default = o.disabled -o.rmempty = false - -o = s:option(Flag, "auto_swap", translate("Automount Swap"), translate("Automatically mount swap on hotplug")) -o.default = o.enabled -o.rmempty = false - -o = s:option(Flag, "auto_mount", translate("Automount Filesystem"), translate("Automatically mount filesystems on hotplug")) -o.default = o.enabled -o.rmempty = false - -o = s:option(Flag, "check_fs", translate("Check filesystems before mount"), translate("Automatically check filesystem for errors before mounting")) -o.default = o.disabled -o.rmempty = false - -local mounts = luci.sys.mounts() -local non_system_mounts = {} -for rawmount, val in pairs(mounts) do - if (string.find(val.mountpoint, "/tmp/.jail") == nil) then - repeat - val.umount = false - if (val.mountpoint == "/") then - break - elseif (val.mountpoint == "/overlay") then - break - elseif (val.mountpoint == "/rom") then - break - elseif (val.mountpoint == "/tmp") then - break - elseif (val.mountpoint == "/tmp/shm") then - break - elseif (val.mountpoint == "/tmp/upgrade") then - break - elseif (val.mountpoint == "/dev") then - break - end - val.umount = true - until true - non_system_mounts[rawmount] = val - end -end - -v = m:section(Table, non_system_mounts, translate("Mounted file systems")) - -fs = v:option(DummyValue, "fs", translate("Filesystem")) - -mp = v:option(DummyValue, "mountpoint", translate("Mount Point")) - -avail = v:option(DummyValue, "avail", translate("Available")) -function avail.cfgvalue(self, section) - return luci.tools.webadmin.byte_format( - ( tonumber(mounts[section].available) or 0 ) * 1024 - ) .. " / " .. luci.tools.webadmin.byte_format( - ( tonumber(mounts[section].blocks) or 0 ) * 1024 - ) -end - -used = v:option(DummyValue, "used", translate("Used")) -function used.cfgvalue(self, section) - return ( mounts[section].percent or "0%" ) .. " (" .. - luci.tools.webadmin.byte_format( - ( tonumber(mounts[section].used) or 0 ) * 1024 - ) .. ")" -end - -unmount = v:option(Button, "unmount", translate("Unmount")) -unmount.render = function(self, section, scope) - if non_system_mounts[section].umount then - self.title = translate("Unmount") - self.inputstyle = "remove" - Button.render(self, section, scope) - end -end - -unmount.write = function(self, section) - if non_system_mounts[section].umount then - luci.sys.call("/bin/umount '%s'" % luci.util.shellstartsqescape(non_system_mounts[section].mountpoint)) - return luci.http.redirect(luci.dispatcher.build_url("admin/system", "fstab")) - end -end - -mount = m:section(TypedSection, "mount", translate("Mount Points"), translate("Mount Points define at which point a memory device will be attached to the filesystem")) -mount.anonymous = true -mount.addremove = true -mount.template = "cbi/tblsection" -mount.extedit = luci.dispatcher.build_url("admin/system/fstab/mount/%s") - -mount.create = function(...) - local sid = TypedSection.create(...) - if sid then - luci.http.redirect(mount.extedit % sid) - return - end -end - - -mount:option(Flag, "enabled", translate("Enabled")).rmempty = false - -dev = mount:option(DummyValue, "device", translate("Device")) -dev.rawhtml = true -dev.cfgvalue = function(self, section) - local v, e - - v = m.uci:get("fstab", section, "uuid") - e = v and devices[v:lower()] - if v and e and e.size then - return "UUID: %s (%s, %d MB)" %{ tp.pcdata(v), e.dev, e.size } - elseif v and e then - return "UUID: %s (%s)" %{ tp.pcdata(v), e.dev } - elseif v then - return "UUID: %s (%s)" %{ tp.pcdata(v), translate("not present") } - end - - v = m.uci:get("fstab", section, "label") - e = v and devices[v] - if v and e and e.size then - return "Label: %s (%s, %d MB)" %{ tp.pcdata(v), e.dev, e.size } - elseif v and e then - return "Label: %s (%s)" %{ tp.pcdata(v), e.dev } - elseif v then - return "Label: %s (%s)" %{ tp.pcdata(v), translate("not present") } - end - - v = Value.cfgvalue(self, section) or "?" - e = v and devices[v] - if v and e and e.size then - return "%s (%d MB)" %{ tp.pcdata(v), e.size } - elseif v and e then - return tp.pcdata(v) - elseif v then - return "%s (%s)" %{ tp.pcdata(v), translate("not present") } - end -end - -mp = mount:option(DummyValue, "target", translate("Mount Point")) -mp.cfgvalue = function(self, section) - if m.uci:get("fstab", section, "is_rootfs") == "1" then - return "/overlay" - else - return Value.cfgvalue(self, section) or "?" - end -end - -fs = mount:option(DummyValue, "fstype", translate("Filesystem")) -fs.cfgvalue = function(self, section) - local v, e - - v = m.uci:get("fstab", section, "uuid") - v = v and v:lower() or m.uci:get("fstab", section, "label") - v = v or m.uci:get("fstab", section, "device") - - e = v and devices[v] - - return e and e.type or m.uci:get("fstab", section, "fstype") or "?" -end - -op = mount:option(DummyValue, "options", translate("Options")) -op.cfgvalue = function(self, section) - return Value.cfgvalue(self, section) or "defaults" -end - -rf = mount:option(DummyValue, "is_rootfs", translate("Root")) -rf.cfgvalue = function(self, section) - local target = m.uci:get("fstab", section, "target") - if target == "/" then - return translate("yes") - elseif target == "/overlay" then - return translate("overlay") - else - return translate("no") - end -end - -ck = mount:option(DummyValue, "enabled_fsck", translate("Check")) -ck.cfgvalue = function(self, section) - return Value.cfgvalue(self, section) == "1" - and translate("yes") or translate("no") -end - - -swap = m:section(TypedSection, "swap", "SWAP", translate("If your physical memory is insufficient unused data can be temporarily swapped to a swap-device resulting in a higher amount of usable RAM. Be aware that swapping data is a very slow process as the swap-device cannot be accessed with the high datarates of the RAM.")) -swap.anonymous = true -swap.addremove = true -swap.template = "cbi/tblsection" -swap.extedit = luci.dispatcher.build_url("admin/system/fstab/swap/%s") - -swap.create = function(...) - local sid = TypedSection.create(...) - if sid then - luci.http.redirect(swap.extedit % sid) - return - end -end - - -swap:option(Flag, "enabled", translate("Enabled")).rmempty = false - -dev = swap:option(DummyValue, "device", translate("Device")) -dev.cfgvalue = function(self, section) - local v - - v = m.uci:get("fstab", section, "uuid") - if v then return "UUID: %s" % v end - - v = m.uci:get("fstab", section, "label") - if v then return "Label: %s" % v end - - v = Value.cfgvalue(self, section) or "?" - e = v and devices[v] - if v and e and e.size then - return "%s (%s MB)" % {v, e.size} - else - return v - end -end - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/mount.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/mount.lua deleted file mode 100644 index a85872afa..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/mount.lua +++ /dev/null @@ -1,151 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local util = require "nixio.util" - -local has_fscheck = fs.access("/usr/sbin/e2fsck") - -local block = io.popen("block info", "r") -local ln, dev, devices = nil, nil, {} - -repeat - ln = block:read("*l") - dev = ln and ln:match("^/dev/(.-):") - - if dev then - local e, s, key, val = { } - - for key, val in ln:gmatch([[(%w+)="(.-)"]]) do - e[key:lower()] = val - end - - s = tonumber((fs.readfile("/sys/class/block/%s/size" % dev))) - - e.dev = "/dev/%s" % dev - e.size = s and math.floor(s / 2048) - - devices[#devices+1] = e - end -until not ln - -block:close() - - -m = Map("fstab", translate("Mount Points - Mount Entry")) -m.redirect = luci.dispatcher.build_url("admin/system/fstab") - -if not arg[1] or m.uci:get("fstab", arg[1]) ~= "mount" then - luci.http.redirect(m.redirect) - return -end - - - -mount = m:section(NamedSection, arg[1], "mount", translate("Mount Entry")) -mount.anonymous = true -mount.addremove = false - -mount:tab("general", translate("General Settings")) -mount:tab("advanced", translate("Advanced Settings")) - - -mount:taboption("general", Flag, "enabled", translate("Enable this mount")).rmempty = false - - -o = mount:taboption("general", Value, "uuid", translate("UUID"), - translate("If specified, mount the device by its UUID instead of a fixed device node")) - -o:value("", translate("-- match by uuid --")) - -for i, d in ipairs(devices) do - if d.uuid and d.size then - o:value(d.uuid, "%s (%s, %d MB)" %{ d.uuid, d.dev, d.size }) - elseif d.uuid then - o:value(d.uuid, "%s (%s)" %{ d.uuid, d.dev }) - end -end - - -o = mount:taboption("general", Value, "label", translate("Label"), - translate("If specified, mount the device by the partition label instead of a fixed device node")) - -o:value("", translate("-- match by label --")) - -o:depends("uuid", "") - -for i, d in ipairs(devices) do - if d.label and d.size then - o:value(d.label, "%s (%s, %d MB)" %{ d.label, d.dev, d.size }) - elseif d.label then - o:value(d.label, "%s (%s)" %{ d.label, d.dev }) - end -end - - -o = mount:taboption("general", Value, "device", translate("Device"), - translate("The device file of the memory or partition (e.g. /dev/sda1)")) - -o:value("", translate("-- match by device --")) - -o:depends({ uuid = "", label = "" }) - -for i, d in ipairs(devices) do - if d.size then - o:value(d.dev, "%s (%d MB)" %{ d.dev, d.size }) - else - o:value(d.dev) - end -end - - -o = mount:taboption("general", Value, "target", translate("Mount point"), - translate("Specifies the directory the device is attached to")) - -o:value("/", translate("Use as root filesystem (/)")) -o:value("/overlay", translate("Use as external overlay (/overlay)")) - - -o = mount:taboption("general", DummyValue, "__notice", translate("Root preparation")) -o:depends("target", "/") -o.rawhtml = true -o.default = [[ -

    %s

    mkdir -p /tmp/introot
    -mkdir -p /tmp/extroot
    -mount --bind / /tmp/introot
    -mount /dev/sda1 /tmp/extroot
    -tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
    -umount /tmp/introot
    -umount /tmp/extroot
    -]] %{ - translate("Make sure to clone the root filesystem using something like the commands below:"), - -} - - -o = mount:taboption("advanced", Value, "fstype", translate("Filesystem"), - translate("The filesystem that was used to format the memory (e.g. ext3)")) - -o:value("", "auto") - -local fs -for fs in io.lines("/proc/filesystems") do - fs = fs:match("%S+") - if fs ~= "nodev" then - o:value(fs) - end -end - - -o = mount:taboption("advanced", Value, "options", translate("Mount options"), - translate("See \"mount\" manpage for details")) - -o.placeholder = "defaults" - - -if has_fscheck then - o = mount:taboption("advanced", Flag, "enabled_fsck", translate("Run filesystem check"), - translate("Run a filesystem check before mounting the device")) -end - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/swap.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/swap.lua deleted file mode 100644 index 82468d5fc..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab/swap.lua +++ /dev/null @@ -1,54 +0,0 @@ --- Copyright 2010 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local util = require "nixio.util" - -local devices = {} -util.consume((fs.glob("/dev/sd*")), devices) -util.consume((fs.glob("/dev/hd*")), devices) -util.consume((fs.glob("/dev/scd*")), devices) -util.consume((fs.glob("/dev/mmc*")), devices) - -local size = {} -for i, dev in ipairs(devices) do - local s = tonumber((fs.readfile("/sys/class/block/%s/size" % dev:sub(6)))) - size[dev] = s and math.floor(s / 2048) -end - - -m = Map("fstab", translate("Mount Points - Swap Entry")) -m.redirect = luci.dispatcher.build_url("admin/system/fstab") - -if not arg[1] or m.uci:get("fstab", arg[1]) ~= "swap" then - luci.http.redirect(m.redirect) - return -end - - -mount = m:section(NamedSection, arg[1], "swap", translate("Swap Entry")) -mount.anonymous = true -mount.addremove = false - -mount:tab("general", translate("General Settings")) -mount:tab("advanced", translate("Advanced Settings")) - - -mount:taboption("general", Flag, "enabled", translate("Enable this swap")).rmempty = false - - -o = mount:taboption("general", Value, "device", translate("Device"), - translate("The device file of the memory or partition (e.g. /dev/sda1)")) - -for i, d in ipairs(devices) do - o:value(d, size[d] and "%s (%s MB)" % {d, size[d]}) -end - -o = mount:taboption("advanced", Value, "uuid", translate("UUID"), - translate("If specified, mount the device by its UUID instead of a fixed device node")) - -o = mount:taboption("advanced", Value, "label", translate("Label"), - translate("If specified, mount the device by the partition label instead of a fixed device node")) - - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua deleted file mode 100644 index 7c6d7e1c6..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_system/ipkg.lua +++ /dev/null @@ -1,64 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2008-2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local ipkgfile = "/etc/opkg.conf" -local distfeeds = "/etc/opkg/distfeeds.conf" -local customfeeds = "/etc/opkg/customfeeds.conf" - -f = SimpleForm("ipkgconf", translate("OPKG-Configuration"), translate("General options for opkg")) - -f:append(Template("admin_system/ipkg")) - -t = f:field(TextValue, "lines") -t.wrap = "off" -t.rows = 10 -function t.cfgvalue() - return nixio.fs.readfile(ipkgfile) or "" -end - -function t.write(self, section, data) - return nixio.fs.writefile(ipkgfile, data:gsub("\r\n", "\n")) -end - -function f.handle(self, state, data) - return true -end - -g = SimpleForm("distfeedconf", translate("Distribution feeds"), - translate("Build/distribution specific feed definitions. This file will NOT be preserved in any sysupgrade.")) - -d = g:field(TextValue, "lines2") -d.wrap = "off" -d.rows = 10 -function d.cfgvalue() - return nixio.fs.readfile(distfeeds) or "" -end - -function d.write(self, section, data) - return nixio.fs.writefile(distfeeds, data:gsub("\r\n", "\n")) -end - -function g.handle(self, state, data) - return true -end - -h = SimpleForm("customfeedconf", translate("Custom feeds"), - translate("Custom feed definitions, e.g. private feeds. This file can be preserved in a sysupgrade.")) - -c = h:field(TextValue, "lines3") -c.wrap = "off" -c.rows = 10 -function c.cfgvalue() - return nixio.fs.readfile(customfeeds) or "" -end - -function c.write(self, section, data) - return nixio.fs.writefile(customfeeds, data:gsub("\r\n", "\n")) -end - -function h.handle(self, state, data) - return true -end - -return f, g, h diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua deleted file mode 100644 index 2ea044e16..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua +++ /dev/null @@ -1,158 +0,0 @@ --- Copyright 2008 Steven Barth --- Licensed to the public under the Apache License 2.0. - -m = Map("system", translate("LED Configuration"), translate("Customizes the behaviour of the device LEDs if possible.")) - -local sysfs_path = "/sys/class/leds/" -local leds = {} - -local fs = require "nixio.fs" -local nu = require "nixio.util" -local util = require "luci.util" - -if fs.access(sysfs_path) then - leds = nu.consume((fs.dir(sysfs_path))) -end - -if #leds == 0 then - return m -end - - -s = m:section(TypedSection, "led", "") -s.anonymous = true -s.addremove = true - -function s.parse(self, ...) - TypedSection.parse(self, ...) - os.execute("/etc/init.d/led enable") -end - - -s:option(Value, "name", translate("Name")) - - -sysfs = s:option(ListValue, "sysfs", translate("LED Name")) -for k, v in ipairs(leds) do - sysfs:value(v) -end - -s:option(Flag, "default", translate("Default state")).rmempty = false - - -trigger = s:option(ListValue, "trigger", translate("Trigger")) - -local triggers = fs.readfile(sysfs_path .. leds[1] .. "/trigger") -for t in triggers:gmatch("[%w-]+") do - trigger:value(t, translate(t:gsub("-", ""))) -end - - -delayon = s:option(Value, "delayon", translate ("On-State Delay")) -delayon:depends("trigger", "timer") - -delayoff = s:option(Value, "delayoff", translate ("Off-State Delay")) -delayoff:depends("trigger", "timer") - - -dev = s:option(ListValue, "_net_dev", translate("Device")) -dev.rmempty = true -dev:value("") -dev:depends("trigger", "netdev") - -function dev.cfgvalue(self, section) - return m.uci:get("system", section, "dev") -end - -function dev.write(self, section, value) - m.uci:set("system", section, "dev", value) -end - -function dev.remove(self, section) - local t = trigger:formvalue(section) - if t ~= "netdev" and t ~= "usbdev" then - m.uci:delete("system", section, "dev") - end -end - -for k, v in pairs(luci.sys.net.devices()) do - if v ~= "lo" then - dev:value(v) - end -end - - -mode = s:option(MultiValue, "mode", translate("Trigger Mode")) -mode.rmempty = true -mode:depends("trigger", "netdev") -mode:value("link", translate("Link On")) -mode:value("tx", translate("Transmit")) -mode:value("rx", translate("Receive")) - - -usbdev = s:option(ListValue, "_usb_dev", translate("USB Device")) -usbdev:depends("trigger", "usbdev") -usbdev.rmempty = true -usbdev:value("") - -function usbdev.cfgvalue(self, section) - return m.uci:get("system", section, "dev") -end - -function usbdev.write(self, section, value) - m.uci:set("system", section, "dev", value) -end - -function usbdev.remove(self, section) - local t = trigger:formvalue(section) - if t ~= "netdev" and t ~= "usbdev" then - m.uci:delete("system", section, "dev") - end -end - - -usbport = s:option(MultiValue, "port", translate("USB Ports")) -usbport:depends("trigger", "usbport") -usbport.rmempty = true -usbport.widget = "checkbox" -usbport.cast = "table" -usbport.size = 1 - -function usbport.valuelist(self, section) - local port, ports = nil, {} - for port in util.imatch(m.uci:get("system", section, "port")) do - local b, n = port:match("^usb(%d+)-port(%d+)$") - if not (b and n) then - b, n = port:match("^(%d+)-(%d+)$") - end - if b and n then - ports[#ports+1] = "usb%u-port%u" %{ tonumber(b), tonumber(n) } - end - end - return ports -end - -function usbport.validate(self, value) - return type(value) == "string" and { value } or value -end - - -for p in nixio.fs.glob("/sys/bus/usb/devices/[0-9]*/manufacturer") do - local id = p:match("%d+-%d+") - local mf = nixio.fs.readfile("/sys/bus/usb/devices/" .. id .. "/manufacturer") or "?" - local pr = nixio.fs.readfile("/sys/bus/usb/devices/" .. id .. "/product") or "?" - usbdev:value(id, "%s (%s - %s)" %{ id, mf, pr }) -end - -for p in nixio.fs.glob("/sys/bus/usb/devices/*/usb[0-9]*-port[0-9]*") do - local bus, port = p:match("usb(%d+)-port(%d+)") - if bus and port then - usbport:value("usb%u-port%u" %{ tonumber(bus), tonumber(port) }, - "Hub %u, Port %u" %{ tonumber(bus), tonumber(port) }) - end -end - -port_mask = s:option(Value, "port_mask", translate ("Switch Port Mask")) -port_mask:depends("trigger", "switch0") - -return m diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_system/startup.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_system/startup.lua deleted file mode 100644 index 9e19ac50a..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_system/startup.lua +++ /dev/null @@ -1,97 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2010-2012 Jo-Philipp Wich --- Copyright 2010 Manuel Munz --- Licensed to the public under the Apache License 2.0. - -local fs = require "nixio.fs" -local sys = require "luci.sys" - -local inits = { } - -for _, name in ipairs(sys.init.names()) do - local index = sys.init.index(name) - local enabled = sys.init.enabled(name) - - if index < 255 then - inits["%02i.%s" % { index, name }] = { - name = name, - index = tostring(index), - enabled = enabled - } - end -end - - -m = SimpleForm("initmgr", translate("Initscripts"), translate("You can enable or disable installed init scripts here. Changes will applied after a device reboot.
    Warning: If you disable essential init scripts like \"network\", your device might become inaccessible!")) -m.reset = false -m.submit = false - - -s = m:section(Table, inits) - -i = s:option(DummyValue, "index", translate("Start priority")) -n = s:option(DummyValue, "name", translate("Initscript")) - - -e = s:option(Button, "endisable", translate("Enable/Disable")) - -e.render = function(self, section, scope) - if inits[section].enabled then - self.title = translate("Enabled") - self.inputstyle = "save" - else - self.title = translate("Disabled") - self.inputstyle = "reset" - end - - Button.render(self, section, scope) -end - -e.write = function(self, section) - if inits[section].enabled then - inits[section].enabled = false - return sys.init.disable(inits[section].name) - else - inits[section].enabled = true - return sys.init.enable(inits[section].name) - end -end - - -start = s:option(Button, "start", translate("Start")) -start.inputstyle = "apply" -start.write = function(self, section) - sys.call("/etc/init.d/%s %s >/dev/null" %{ inits[section].name, self.option }) -end - -restart = s:option(Button, "restart", translate("Restart")) -restart.inputstyle = "reload" -restart.write = start.write - -stop = s:option(Button, "stop", translate("Stop")) -stop.inputstyle = "remove" -stop.write = start.write - - - -f = SimpleForm("rc", translate("Local Startup"), - translate("This is the content of /etc/rc.local. Insert your own commands here (in front of 'exit 0') to execute them at the end of the boot process.")) - -t = f:field(TextValue, "rcs") -t.rmempty = true -t.rows = 20 - -function t.cfgvalue() - return fs.readfile("/etc/rc.local") or "" -end - -function f.handle(self, state, data) - if state == FORM_VALID then - if data.rcs then - fs.writefile("/etc/rc.local", data.rcs:gsub("\r\n", "\n")) - end - end - return true -end - -return m, f diff --git a/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua b/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua deleted file mode 100644 index c7fdfcddb..000000000 --- a/luci-mod-admin-full/luasrc/model/cbi/admin_system/system.lua +++ /dev/null @@ -1,224 +0,0 @@ --- Copyright 2008 Steven Barth --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local sys = require "luci.sys" -local zones = require "luci.sys.zoneinfo" -local fs = require "nixio.fs" -local conf = require "luci.config" - -local m, s, o -local has_ntpd = fs.access("/usr/sbin/ntpd") - -m = Map("system", translate("System"), translate("Here you can configure the basic aspects of your device like its hostname or the timezone.")) -m:chain("luci") - - -s = m:section(TypedSection, "system", translate("System Properties")) -s.anonymous = true -s.addremove = false - -s:tab("general", translate("General Settings")) -s:tab("logging", translate("Logging")) -s:tab("language", translate("Language and Style")) - - --- --- System Properties --- - -o = s:taboption("general", DummyValue, "_systime", translate("Local Time")) -o.template = "admin_system/clock_status" - - -o = s:taboption("general", Value, "hostname", translate("Hostname")) -o.datatype = "hostname" - -function o.write(self, section, value) - Value.write(self, section, value) - sys.hostname(value) -end - - -o = s:taboption("general", ListValue, "zonename", translate("Timezone")) -o:value("UTC") - -for i, zone in ipairs(zones.TZ) do - o:value(zone[1]) -end - -function o.write(self, section, value) - local function lookup_zone(title) - for _, zone in ipairs(zones.TZ) do - if zone[1] == title then return zone[2] end - end - end - - AbstractValue.write(self, section, value) - local timezone = lookup_zone(value) or "GMT0" - self.map.uci:set("system", section, "timezone", timezone) - fs.writefile("/etc/TZ", timezone .. "\n") -end - - --- --- Logging --- - -o = s:taboption("logging", Value, "log_size", translate("System log buffer size"), "kiB") -o.optional = true -o.placeholder = 16 -o.datatype = "uinteger" - -o = s:taboption("logging", Value, "log_ip", translate("External system log server")) -o.optional = true -o.placeholder = "0.0.0.0" -o.datatype = "ip4addr" - -o = s:taboption("logging", Value, "log_port", translate("External system log server port")) -o.optional = true -o.placeholder = 514 -o.datatype = "port" - -o = s:taboption("logging", ListValue, "log_proto", translate("External system log server protocol")) -o:value("udp", "UDP") -o:value("tcp", "TCP") - -o = s:taboption("logging", Value, "log_file", translate("Write system log to file")) -o.optional = true -o.placeholder = "/tmp/system.log" - -o = s:taboption("logging", ListValue, "conloglevel", translate("Log output level")) -o:value(8, translate("Debug")) -o:value(7, translate("Info")) -o:value(6, translate("Notice")) -o:value(5, translate("Warning")) -o:value(4, translate("Error")) -o:value(3, translate("Critical")) -o:value(2, translate("Alert")) -o:value(1, translate("Emergency")) - -o = s:taboption("logging", ListValue, "cronloglevel", translate("Cron Log Level")) -o.default = 8 -o:value(5, translate("Debug")) -o:value(8, translate("Normal")) -o:value(9, translate("Warning")) - - --- --- Langauge & Style --- - -o = s:taboption("language", ListValue, "_lang", translate("Language")) -o:value("auto") - -local i18ndir = luci.i18n.i18ndir .. "base." -for k, v in luci.util.kspairs(conf.languages) do - local file = i18ndir .. k:gsub("_", "-") - if k:sub(1, 1) ~= "." and fs.access(file .. ".lmo") then - o:value(k, v) - end -end - -function o.cfgvalue(...) - return m.uci:get("luci", "main", "lang") -end - -function o.write(self, section, value) - m.uci:set("luci", "main", "lang", value) -end - - -o = s:taboption("language", ListValue, "_mediaurlbase", translate("Design")) -for k, v in pairs(conf.themes) do - if k:sub(1, 1) ~= "." then - o:value(v, k) - end -end - -function o.cfgvalue(...) - return m.uci:get("luci", "main", "mediaurlbase") -end - -function o.write(self, section, value) - m.uci:set("luci", "main", "mediaurlbase", value) -end - - --- --- NTP --- - -if has_ntpd then - - -- timeserver setup was requested, create section and reload page - if m:formvalue("cbid.system._timeserver._enable") then - m.uci:section("system", "timeserver", "ntp", - { - server = { "0.openwrt.pool.ntp.org", "1.openwrt.pool.ntp.org", "2.openwrt.pool.ntp.org", "3.openwrt.pool.ntp.org" } - } - ) - - m.uci:save("system") - luci.http.redirect(luci.dispatcher.build_url("admin/system", arg[1])) - return - end - - local has_section = false - m.uci:foreach("system", "timeserver", - function(s) - has_section = true - return false - end) - - if not has_section then - - s = m:section(TypedSection, "timeserver", translate("Time Synchronization")) - s.anonymous = true - s.cfgsections = function() return { "_timeserver" } end - - x = s:option(Button, "_enable") - x.title = translate("Time Synchronization is not configured yet.") - x.inputtitle = translate("Set up Time Synchronization") - x.inputstyle = "apply" - - else - - s = m:section(TypedSection, "timeserver", translate("Time Synchronization")) - s.anonymous = true - s.addremove = false - - o = s:option(Flag, "enable", translate("Enable NTP client")) - o.rmempty = false - - function o.cfgvalue(self) - return sys.init.enabled("sysntpd") - and self.enabled or self.disabled - end - - function o.write(self, section, value) - if value == self.enabled then - sys.init.enable("sysntpd") - sys.call("env -i /etc/init.d/sysntpd start >/dev/null") - else - sys.call("env -i /etc/init.d/sysntpd stop >/dev/null") - sys.init.disable("sysntpd") - end - end - - - o = s:option(Flag, "enable_server", translate("Provide NTP server")) - o:depends("enable", "1") - - - o = s:option(DynamicList, "server", translate("NTP server candidates")) - o.datatype = "host(0)" - o:depends("enable", "1") - - -- retain server list even if disabled - function o.remove() end - - end -end - -return m diff --git a/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm b/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm deleted file mode 100644 index 4ab206e81..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm +++ /dev/null @@ -1,137 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<% -local fs = require "nixio.fs" -local has_ping6 = fs.access("/bin/ping6") or fs.access("/usr/bin/ping6") -local has_traceroute6 = fs.access("/bin/traceroute6") or fs.access("/usr/bin/traceroute6") -local has_speedtest = fs.access("/usr/sbin/speedtestc") -local has_curl = fs.access("/usr/bin/curl") -local has_netstat = fs.access("/bin/netstat") - -local dns_host = luci.config.diag and luci.config.diag.dns or "dev.openwrt.org" -local ping_host = luci.config.diag and luci.config.diag.ping or "dev.openwrt.org" -local route_host = luci.config.diag and luci.config.diag.route or "dev.openwrt.org" -local getip_host = luci.config.diag and luci.config.diag.getip or "ifconfig.co" -%> - - - -
    -
    -

    <%:Diagnostics%>

    - -
    - <%:Network Utilities%> - -
    -
    -
    -
    - <% if has_ping6 then %> - - - <% else %> - - <% end %> -
    - -
    -
    - <% if has_traceroute6 then %> - - - <% else %> - - <% end %> - <% if not has_traceroute6 then %> -

     

    -

    <%:Install iputils-traceroute6 for IPv6 traceroute%>

    - <% end %> -
    - -
    -
    - -
    - <% if has_speedtest and false then %> -
    -
    - -
    - <% end %> - - <% if has_curl then %> -
    -
    - -
    - <% end %> - - <% if has_netstat then %> -
    -
    - -
    - <% end %> -
    -
    -
    -
    - - -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm b/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm deleted file mode 100644 index 7427154a0..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_network/iface_overview_status.htm +++ /dev/null @@ -1,183 +0,0 @@ -<%# - Copyright 2010-2018 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - - diff --git a/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm b/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm deleted file mode 100644 index 34be35dd2..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_network/iface_status.htm +++ /dev/null @@ -1,66 +0,0 @@ -<%+cbi/valueheader%> - - - - - - - <%:Collecting data...%> - - - -<%+cbi/valuefooter%> diff --git a/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm b/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm deleted file mode 100644 index 8fbbdc947..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm +++ /dev/null @@ -1,95 +0,0 @@ - - -
    -

    <%:Active DHCP Leases%>

    -
    -
    -
    <%:Hostname%>
    -
    <%:IPv4-Address%>
    -
    <%:MAC-Address%>
    -
    <%:Leasetime remaining%>
    -
    -
    -
    <%:Collecting data...%>
    -
    -
    -
    - - diff --git a/luci-mod-admin-full/luasrc/view/admin_network/switch_status.htm b/luci-mod-admin-full/luasrc/view/admin_network/switch_status.htm deleted file mode 100644 index 68f0bbc9d..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_network/switch_status.htm +++ /dev/null @@ -1,62 +0,0 @@ - diff --git a/luci-mod-admin-full/luasrc/view/admin_network/wifi_assoclist.htm b/luci-mod-admin-full/luasrc/view/admin_network/wifi_assoclist.htm deleted file mode 100644 index b6f84c060..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_network/wifi_assoclist.htm +++ /dev/null @@ -1,82 +0,0 @@ - - -
    -
    -
    <%:Network%>
    -
    <%:MAC-Address%>
    -
    <%:Host%>
    -
    <%:Signal%> / <%:Noise%>
    -
    <%:RX Rate%> / <%:TX Rate%>
    -
    -
    -
    <%:Collecting data...%>
    -
    -
    diff --git a/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm b/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm deleted file mode 100644 index 987123642..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_network/wifi_join.htm +++ /dev/null @@ -1,224 +0,0 @@ -<%# - Copyright 2009-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - - local sys = require "luci.sys" - local utl = require "luci.util" - - local dev = luci.http.formvalue("device") - local iw = luci.sys.wifi.getiwinfo(dev) - - if not iw then - luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless")) - return - end --%> - -<%+header%> - - - -

    <%:Join Network: Wireless Scan%>

    - -
    -
    -
    -
    -
    <%:Signal%>
    -
    <%:SSID%>
    -
    <%:Channel%>
    -
    <%:Mode%>
    -
    <%:BSSID%>
    -
    <%:Encryption%>
    -
     
    -
    - -
    -
    - - <%:Collecting data...%> -
    -
    -
    -
    -
    -
    -
    " method="get"> - -
    -
    - - - -
    -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview_status.htm b/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview_status.htm deleted file mode 100644 index 9730bc2c9..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview_status.htm +++ /dev/null @@ -1,127 +0,0 @@ -<%# - Copyright 2008-2009 Steven Barth - Copyright 2008-2018 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - - diff --git a/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm b/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm deleted file mode 100644 index bfad3d080..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm +++ /dev/null @@ -1,77 +0,0 @@ -<%+cbi/valueheader%> - - - - - -   - - - <%:Collecting data...%> - - - -<%+cbi/valuefooter%> diff --git a/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm b/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm deleted file mode 100644 index 3bb55f905..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_status/bandwidth.htm +++ /dev/null @@ -1,305 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - local ntm = require "luci.model.network".init() - - local dev - local devices = { } - for _, dev in luci.util.vspairs(luci.sys.net.devices()) do - if dev ~= "lo" and not ntm:ignore_interface(dev) then - devices[#devices+1] = dev - end - end - - local curdev = luci.http.formvalue("dev") or devices[1] --%> - -<%+header%> - - - -

    <%:Realtime Traffic%>

    - - - - -
    -
    -
    - -
    -
    -
    <%:Inbound:%>
    -
    0 <%:kbit/s%>
    (0 <%:kB/s%>)
    - -
    <%:Average:%>
    -
    0 <%:kbit/s%>
    (0 <%:kB/s%>)
    - -
    <%:Peak:%>
    -
    0 <%:kbit/s%>
    (0 <%:kB/s%>)
    -
    -
    -
    <%:Outbound:%>
    -
    0 <%:kbit/s%>
    (0 <%:kB/s%>)
    - -
    <%:Average:%>
    -
    0 <%:kbit/s%>
    (0 <%:kB/s%>)
    - -
    <%:Peak:%>
    -
    0 <%:kbit/s%>
    (0 <%:kB/s%>)
    -
    -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_status/connections.htm b/luci-mod-admin-full/luasrc/view/admin_status/connections.htm deleted file mode 100644 index 0a0db3be7..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_status/connections.htm +++ /dev/null @@ -1,376 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - - - -

    <%:Realtime Connections%>

    - -
    <%:This page gives an overview over currently active network connections.%>
    - -
    - <%:Active Connections%> - - -
    -
    -
    - -
    -
    -
    <%:UDP:%>
    -
    0
    - -
    <%:Average:%>
    -
    0
    - -
    <%:Peak:%>
    -
    0
    -
    -
    -
    <%:TCP:%>
    -
    0
    - -
    <%:Average:%>
    -
    0
    - -
    <%:Peak:%>
    -
    0
    -
    -
    -
    <%:Other:%>
    -
    0
    - -
    <%:Average:%>
    -
    0
    - -
    <%:Peak:%>
    -
    0
    -
    -
    -
    - -
    -
    -
    -
    <%:Network%>
    -
    <%:Protocol%>
    -
    <%:Source%>
    -
    <%:Destination%>
    -
    <%:Transfer%>
    -
    - -
    -
    - <%:Collecting data...%> -
    -
    -
    -
    -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_status/dmesg.htm b/luci-mod-admin-full/luasrc/view/admin_status/dmesg.htm deleted file mode 100644 index 1a8770ef8..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_status/dmesg.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    <%:Kernel Log%>

    -
    - -
    -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_status/index.htm b/luci-mod-admin-full/luasrc/view/admin_status/index.htm deleted file mode 100644 index 5abc6d61c..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_status/index.htm +++ /dev/null @@ -1,467 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2011 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% - local fs = require "nixio.fs" - local ipc = require "luci.ip" - local util = require "luci.util" - local stat = require "luci.tools.status" - local ver = require "luci.version" - - local has_ipv6 = fs.access("/proc/net/ipv6_route") - local has_dhcp = fs.access("/etc/config/dhcp") - local has_mptcp = (luci.sys.exec("sysctl -n net.mptcp.mptcp_enabled | tr -d '\n'")) or 0 - local has_wifi = ((fs.stat("/etc/config/wireless", "size") or 0) > 0) - - local sysinfo = luci.util.ubus("system", "info") or { } - local boardinfo = luci.util.ubus("system", "board") or { } - local unameinfo = nixio.uname() or { } - - local meminfo = sysinfo.memory or { - total = 0, - free = 0, - buffered = 0, - shared = 0 - } - - local swapinfo = sysinfo.swap or { - total = 0, - free = 0 - } - - local has_dsl = fs.access("/etc/init.d/dsl_control") - - if luci.http.formvalue("status") == "1" then - local ntm = require "luci.model.network".init() - local wan = ntm:get_wannet() - local wan6 = ntm:get_wan6net() - - local conn_count = tonumber( - fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count") or "") or 0 - - local conn_max = tonumber(luci.sys.exec( - "sysctl -n -e net.nf_conntrack_max net.ipv4.netfilter.ip_conntrack_max" - ):match("%d+")) or 4096 - - local rv = { - uptime = sysinfo.uptime or 0, - localtime = os.date(), - loadavg = sysinfo.load or { 0, 0, 0 }, - memory = meminfo, - swap = swapinfo, - connmax = conn_max, - conncount = conn_count, - wifinets = stat.wifi_networks() - } - - if wan then - local dev = wan:get_interface() - local link = dev and ipc.link(dev:name()) - rv.wan = { - ipaddr = wan:ipaddr(), - gwaddr = wan:gwaddr(), - netmask = wan:netmask(), - dns = wan:dnsaddrs(), - expires = wan:expires(), - uptime = wan:uptime(), - proto = wan:proto(), - i18n = wan:get_i18n(), - ifname = wan:ifname(), - link = wan:adminlink(), - mac = dev and dev:mac(), - type = dev and dev:type(), - name = dev and dev:get_i18n(), - ether = link and link.type == 1 - } - end - - if wan6 then - local dev = wan6:get_interface() - local link = dev and ipc.link(dev:name()) - rv.wan6 = { - ip6addr = wan6:ip6addr(), - gw6addr = wan6:gw6addr(), - dns = wan6:dns6addrs(), - ip6prefix = wan6:ip6prefix(), - uptime = wan6:uptime(), - proto = wan6:proto(), - i18n = wan6:get_i18n(), - ifname = wan6:ifname(), - link = wan6:adminlink(), - mac = dev and dev:mac(), - type = dev and dev:type(), - name = dev and dev:get_i18n(), - ether = link and link.type == 1 - } - end - - if has_dsl then - local dsl_stat = luci.sys.exec("/etc/init.d/dsl_control lucistat") - local dsl_func = loadstring(dsl_stat) - if dsl_func then - rv.dsl = dsl_func() - end - end - - luci.http.prepare_content("application/json") - luci.http.write_json(rv) - - return - end --%> - -<%+header%> - - - -

    <%:Status%>

    - -
    -

    <%:System%>

    - -
    -
    <%:Hostname%>
    <%=luci.sys.hostname() or "?"%>
    -
    <%:Model%>
    <%=pcdata(boardinfo.model or "?")%>
    -
    <%:Architecture%>
    <%=pcdata(boardinfo.system or "?")%>
    -
    <%:Firmware Version%>
    - <%=pcdata(ver.distname)%> <%=pcdata(ver.distversion)%> / - <%=pcdata(ver.luciname)%> (<%=pcdata(ver.luciversion)%>) -
    -
    <%:Kernel Version%>
    <%=unameinfo.release or "?"%>
    -
    <%:Local Time%>
    -
    -
    <%:Uptime%>
    -
    -
    <%:Load Average%>
    -
    -
    -
    - -
    -

    <%:Memory%>

    - -
    -
    <%:Total Available%>
    -
    -
    <%:Free%>
    -
    -
    <%:Buffered%>
    -
    -
    -
    - -<% if swapinfo.total > 0 then %> -
    -

    <%:Swap%>

    - -
    -
    <%:Total Available%>
    -
    -
    <%:Free%>
    -
    -
    -
    -<% end %> - -
    -

    <%:Network%>

    - - <% if has_mptcp == 0 then %> -
    -

    <%:Collecting data...%>

    -
    - <% end %> - -
    -
    <%:Active Connections%>
    -
    -
    -
    - -<% - if has_dhcp then - include("admin_network/lease_status") - end -%> - -<% if has_dsl then %> -
    -

    <%:DSL%>

    - -
    -

    <%:Collecting data...%>

    -
    -
    -<% end %> - -<% if has_wifi then %> -
    -

    <%:Wireless%>

    - -
    -

    <%:Collecting data...%>

    -
    -
    - -
    -

    <%:Associated Stations%>

    - - <%+admin_network/wifi_assoclist%> -
    -<% end %> - -<%- - local incdir = util.libpath() .. "/view/admin_status/index/" - if fs.access(incdir) then - local inc - for inc in fs.dir(incdir) do - if inc:match("%.htm$") then - include("admin_status/index/" .. inc:gsub("%.htm$", "")) - end - end - end --%> - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm b/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm deleted file mode 100644 index 51e428e40..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_status/iptables.htm +++ /dev/null @@ -1,155 +0,0 @@ -<%# - Copyright 2008-2009 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - - require "luci.sys.iptparser" - local wba = require "luci.tools.webadmin" - local fs = require "nixio.fs" - local io = require "io" - - local has_ip6tables = fs.access("/usr/sbin/ip6tables") - local mode = 4 - - if has_ip6tables then - mode = luci.dispatcher.context.requestpath - mode = tonumber(mode[#mode] ~= "iptables" and mode[#mode]) or 4 - end - - local ipt = luci.sys.iptparser.IptParser(mode) - - local rowcnt = 1 - function rowstyle() - rowcnt = rowcnt + 1 - return (rowcnt % 2) + 1 - end - - function link_target(t,c) - if ipt:is_custom_target(c) then - return '%s' %{ t:lower(), c, c } - end - return c - end - - function link_iface(i) - local net = wba.iface_get_network(i) - if net and i ~= "lo" then - return '%s' %{ - url("admin/network/network", net), i - } - - end - return i - end - - local tables = { "Filter", "NAT", "Mangle", "Raw" } - if mode == 6 then - tables = { "Filter", "Mangle", "Raw" } - local ok, lines = pcall(io.lines, "/proc/net/ip6_tables_names") - if ok and lines then - local line - for line in lines do - if line == "nat" then - tables = { "Filter", "NAT", "Mangle", "Raw" } - end - end - end - end --%> - -<%+header%> - - - -

    <%:Firewall Status%>

    - -<% if has_ip6tables then %> - -<% end %> - -
    - -
    " style="position: absolute; right: 0"> - - - - -
    - -
    - - <% for _, tbl in ipairs(tables) do chaincnt = 0 %> -

    <%:Table%>: <%=tbl%>

    - - <% for _, chain in ipairs(ipt:chains(tbl)) do - rowcnt = 0 - chaincnt = chaincnt + 1 - chaininfo = ipt:chain(tbl, chain) - %> -

    - <%:Chain%> <%=chain%> - (<%- if chaininfo.policy then -%> - <%:Policy%>: <%=chaininfo.policy%>, <%:Packets%>: <%=chaininfo.packets%>, <%:Traffic%>: <%=wba.byte_format(chaininfo.bytes)-%> - <%- else -%> - <%:References%>: <%=chaininfo.references-%> - <%- end -%>) -

    - -
    -
    -
    -
    <%:Pkts.%>
    -
    <%:Traffic%>
    -
    <%:Target%>
    -
    <%:Prot.%>
    -
    <%:In%>
    -
    <%:Out%>
    -
    <%:Source%>
    -
    <%:Destination%>
    -
    <%:Options%>
    -
    - - <% for _, rule in ipairs(ipt:find({table=tbl, chain=chain})) do %> -
    -
    <%=rule.packets%>
    -
    <%=wba.byte_format(rule.bytes)%>
    -
    <%=rule.target and link_target(tbl, rule.target) or "-"%>
    -
    <%=rule.protocol%>
    -
    <%=link_iface(rule.inputif)%>
    -
    <%=link_iface(rule.outputif)%>
    -
    <%=rule.source%>
    -
    <%=rule.destination%>
    -
    <%=#rule.options > 0 and luci.util.pcdata(table.concat(rule.options, " ")) or "-"%>
    -
    - <% end %> - - <% if rowcnt == 1 then %> -
    -
    <%:No rules in this chain%>
    -
    - <% end %> -
    -
    - <% end %> - - <% if chaincnt == 0 then %> - <%:No chains in this table%> - <% end %> - -

    - <% end %> -
    -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_status/load.htm b/luci-mod-admin-full/luasrc/view/admin_status/load.htm deleted file mode 100644 index bced06fa2..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_status/load.htm +++ /dev/null @@ -1,285 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - - - -

    <%:Realtime Load%>

    - - -
    -
    -
    - -
    -
    -
    <%:1 Minute Load:%>
    -
    0
    - -
    <%:Average:%>
    -
    0
    - -
    <%:Peak:%>
    -
    0
    -
    -
    -
    <%:5 Minute Load:%>
    -
    0
    - -
    <%:Average:%>
    -
    0
    - -
    <%:Peak:%>
    -
    0
    -
    -
    -
    <%:15 Minute Load:%>
    -
    0
    - -
    <%:Average:%>
    -
    0
    - -
    <%:Peak:%>
    -
    0
    -
    -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_status/routes.htm b/luci-mod-admin-full/luasrc/view/admin_status/routes.htm deleted file mode 100644 index 74779f6ad..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_status/routes.htm +++ /dev/null @@ -1,156 +0,0 @@ -<%# - Copyright 2008-2009 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - require "luci.tools.webadmin" - require "nixio.fs" - - local ip = require "luci.ip" - local style = true - local _, v - - local rtn = { - [255] = "local", - [254] = "main", - [253] = "default", - [0] = "unspec" - } - - if nixio.fs.access("/etc/iproute2/rt_tables") then - local ln - for ln in io.lines("/etc/iproute2/rt_tables") do - local i, n = ln:match("^(%d+)%s+(%S+)") - if i and n then - rtn[tonumber(i)] = n - end - end - end --%> - -<%+header%> - - -
    -

    <%:Routes%>

    -
    <%:The following rules are currently active on this system.%>
    - -
    - ARP -
    -
    -
    -
    <%_IPv4-Address%>
    -
    <%_MAC-Address%>
    -
    <%:Interface%>
    -
    - - <% - for _, v in ipairs(ip.neighbors({ family = 4 })) do - if v.mac then - %> -
    -
    <%=v.dest%>
    -
    <%=v.mac%>
    -
    <%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%>
    -
    - <% - style = not style - end - end - %> -
    -
    -
    - -
    - <%_Active IPv4-Routes%> -
    -
    -
    -
    <%:Network%>
    -
    <%:Target%>
    -
    <%_IPv4-Gateway%>
    -
    <%:Metric%>
    -
    <%:Table%>
    -
    - <% for _, v in ipairs(ip.routes({ family = 4, type = 1 })) do %> -
    -
    <%=luci.tools.webadmin.iface_get_network(v.dev) or v.dev%>
    -
    <%=v.dest%>
    -
    <%=v.gw or "-"%>
    -
    <%=v.metric or 0%>
    -
    <%=rtn[v.table] or v.table%>
    -
    - <% style = not style end %> -
    -
    -
    - - <% - if nixio.fs.access("/proc/net/ipv6_route") then - style = true - %> -
    - <%_Active IPv6-Routes%> -
    -
    -
    -
    <%:Network%>
    -
    <%:Target%>
    -
    <%:Source%>
    -
    <%:Metric%>
    -
    <%:Table%>
    -
    - <% - for _, v in ipairs(ip.routes({ family = 6, type = 1 })) do - if v.dest and not v.dest:is6linklocal() then - %> -
    -
    <%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%>
    -
    <%=v.dest%>
    -
    <%=v.from%>
    -
    <%=v.metric or 0%>
    -
    <%=rtn[v.table] or v.table%>
    -
    - <% - style = not style - end - end - %> -
    -
    -
    - -
    - <%:IPv6 Neighbours%> -
    -
    -
    -
    <%:IPv6-Address%>
    -
    <%:MAC-Address%>
    -
    <%:Interface%>
    -
    - <% - for _, v in ipairs(ip.neighbors({ family = 6 })) do - if v.dest and not v.dest:is6linklocal() and v.mac then - %> -
    -
    <%=v.dest%>
    -
    <%=v.mac%>
    -
    <%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%>
    -
    - <% - style = not style - end - end - %> -
    -
    -
    - <% end %> -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_status/syslog.htm b/luci-mod-admin-full/luasrc/view/admin_status/syslog.htm deleted file mode 100644 index fb734a76d..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_status/syslog.htm +++ /dev/null @@ -1,12 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> -

    <%:System Log%>

    -
    - -
    -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm b/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm deleted file mode 100644 index 8ec43cb0e..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_status/wireless.htm +++ /dev/null @@ -1,371 +0,0 @@ -<%# - Copyright 2011 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- - local ntm = require "luci.model.network".init() - - local dev - local devices = { } - for _, dev in luci.util.vspairs(luci.sys.net.devices()) do - if dev:match("^wlan%d") or dev:match("^ath%d") or dev:match("^wl%d") then - devices[#devices+1] = dev - end - end - - local curdev = luci.http.formvalue("dev") or devices[1] --%> - -<%+header%> - - - -

    <%:Realtime Wireless%>

    - - - - -
    -
    -
    - -
    -
    -
    <%:Signal:%>
    -
    0 <%:dBm%>
    - -
    <%:Average:%>
    -
    0 <%:dBm%>
    - -
    <%:Peak:%>
    -
    0 <%:dBm%>
    -
    -
    -
    <%:Noise:%>
    -
    0 <%:dBm%>
    - -
    <%:Average:%>
    -
    0 <%:dBm%>
    - -
    <%:Peak:%>
    -
    0 <%:dBm%>
    -
    -
    - -
    - - -
    -
    -
    - -
    -
    -
    <%:Phy Rate:%>
    -
    0 MBit/s
    - -
    <%:Average:%>
    -
    0 MBit/s
    - -
    <%:Peak:%>
    -
    0 MBit/s
    -
    -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_system/applyreboot.htm b/luci-mod-admin-full/luasrc/view/admin_system/applyreboot.htm deleted file mode 100644 index e722a4809..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_system/applyreboot.htm +++ /dev/null @@ -1,41 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - - - - <%=luci.sys.hostname()%> - <% if title then %><%=title%><% else %><%:Rebooting...%><% end %> - - - - - -
    -
    -

    <%:System%> - <% if title then %><%=title%><% else %><%:Rebooting...%><% end %>

    -
    -

    - <% if msg then %><%=msg%><% else %><%:Changes applied.%><% end %> -

    -

    - <%:Loading%> - <%:Waiting for changes to be applied...%> -

    -
    -
    -
    - - diff --git a/luci-mod-admin-full/luasrc/view/admin_system/backupfiles.htm b/luci-mod-admin-full/luasrc/view/admin_system/backupfiles.htm deleted file mode 100644 index c1f3361ae..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_system/backupfiles.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - - diff --git a/luci-mod-admin-full/luasrc/view/admin_system/clock_status.htm b/luci-mod-admin-full/luasrc/view/admin_system/clock_status.htm deleted file mode 100644 index 37d8ae0e8..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_system/clock_status.htm +++ /dev/null @@ -1,36 +0,0 @@ -<%+cbi/valueheader%> - - - -<%:Collecting data...%> - - -<%+cbi/valuefooter%> diff --git a/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm b/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm deleted file mode 100644 index ee9c2f8fd..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm +++ /dev/null @@ -1,94 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Flash operations%>

    - - - -
    -

    <%:Backup%>

    -
    <%:Click "Generate archive" to download a tar archive of the current configuration files.%>
    -
    -
    - -
    - -
    - -
    -
    -
    -
    - -

    <%:Restore%>

    -
    <%:To restore configuration files, you can upload a previously generated backup archive here. To reset the firmware to its initial state, click "Perform reset" (only possible with squashfs images).%>
    -
    - <% if reset_avail then %> -
    - -
    - -
    - -
    -
    -
    - <% end %> -
    -
    - -
    - - - - <% if reset_avail then %> -
    <%:Custom files (certificates, scripts) may remain on the system. To prevent this, perform a factory-reset first.%>
    - <% end %> -
    -
    -
    - <% if backup_invalid then %> -
    <%:The backup archive does not appear to be a valid gzip file.%>
    - <% end %> -
    -
    - -
    -

    <%:Flash new firmware image%>

    - <% if upgrade_avail then %> -
    - -
    <%:Upload a sysupgrade-compatible image here to replace the running firmware. Check "Keep settings" to retain the current configuration (requires a compatible firmware image).%>
    -
    -
    - -
    - -
    -
    -
    - -
    - - -
    -
    -
    - <% if image_invalid then %> -
    <%:The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform. %>
    - <% end %> -
    - <% else %> -
    <%:Sorry, there is no sysupgrade support present; a new firmware image must be flashed manually. Please refer to the wiki for device specific install instructions.%>
    - <% end %> -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_system/ipkg.htm b/luci-mod-admin-full/luasrc/view/admin_system/ipkg.htm deleted file mode 100644 index a7ff4e50b..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_system/ipkg.htm +++ /dev/null @@ -1,10 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - - diff --git a/luci-mod-admin-full/luasrc/view/admin_system/packages.htm b/luci-mod-admin-full/luasrc/view/admin_system/packages.htm deleted file mode 100644 index 280eabb8e..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_system/packages.htm +++ /dev/null @@ -1,213 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%- -local opkg = require "luci.model.ipkg" -local fs = require "nixio.fs" -local wa = require "luci.tools.webadmin" -local rowcnt = 1 - -function rowstyle() - rowcnt = rowcnt + 1 - return (rowcnt % 2) + 1 -end - -local fstat = fs.statvfs(opkg.overlay_root()) -local space_total = fstat and fstat.blocks or 0 -local space_free = fstat and fstat.bfree or 0 -local space_used = space_total - space_free - -local used_perc = math.floor(0.5 + ((space_total > 0) and ((100 / space_total) * space_used) or 100)) -local free_byte = space_free * fstat.frsize - -local filter = { } - - -local opkg_list = luci.model.ipkg.list_all -local querypat -if query and #query > 0 then - querypat = '*%s*' % query - opkg_list = luci.model.ipkg.find -end - -local letterpat -if letter == 35 then - letterpat = "[^a-z]*" -else - letterpat = string.char(letter, 42) -- 'A' '*' -end - --%> - -<%+header%> - - -

    <%:Software%>

    - -
    - - - -
    - - - -
    -
    - <% if (install and next(install)) or (remove and next(remove)) or update or upgrade then %> -
    - <% if #stdout > 0 then %>
    <%=pcdata(stdout)%>
    <% end %> - <% if #stderr > 0 then %>
    <%=pcdata(stderr)%>
    <% end %> -
    - <% end %> - - <% if querypat then %> -
    - <%:Displaying only packages containing%> "<%=pcdata(query)%>" - -
    -
    - <% end %> - - <% if no_lists or old_lists then %> -
    - <% if old_lists then %> - <%:Package lists are older than 24 hours%> - <% else %> - <%:No package lists available%> - <% end %> - -
    - <% end %> - -
    - <%:Free space%>: <%=(100-used_perc)%>% (<%=wa.byte_format(free_byte)%>) -
    -
     
    -
    -
    -
    - -
    - -
    - - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    -
    -
    -
    - - -

    <%:Status%>

    - - - - - <% if display ~= "available" then %> -
    -
    -
    -
    -
    <%:Package name%>
    -
    <%:Version%>
    -
     
    -
    - <% local empty = true; luci.model.ipkg.list_installed(querypat, function(n, v, s, d) empty = false; filter[n] = true %> -
    -
    <%=luci.util.pcdata(n)%>
    -
    <%=luci.util.pcdata(v)%>
    -
    -
    - - - - -
    -
    -
    - <% end) %> - <% if empty then %> -
    -
     
    -
    <%:none%>
    -
    <%:none%>
    -
    - <% end %> -
    -
    -
    - <% else %> -
    - <% if not querypat then %> - - <% end %> -
    -
    -
    -
    <%:Package name%>
    -
    <%:Version%>
    -
    <%:Size (.ipk)%>
    -
    <%:Description%>
    -
     
    -
    - <% local empty = true; opkg_list(querypat or letterpat, function(n, v, s, d) if filter[n] then return end; empty = false %> -
    -
    <%=luci.util.pcdata(n)%>
    -
    <%=luci.util.pcdata(v)%>
    -
    <%=luci.util.pcdata(s)%>
    -
    <%=luci.util.pcdata(d)%>
    -
    -
    - - - - -
    -
    -
    - <% end) %> - <% if empty then %> -
    -
     
    -
    <%:none%>
    -
    <%:none%>
    -
    <%:none%>
    -
    <%:none%>
    -
    - <% end %> -
    -
    -
    - <% end %> -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_system/reboot.htm b/luci-mod-admin-full/luasrc/view/admin_system/reboot.htm deleted file mode 100644 index d23664ada..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_system/reboot.htm +++ /dev/null @@ -1,62 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2015 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Reboot%>

    - -

    <%:Reboots the operating system of your device%>

    - -<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%> -

    <%:Warning: There are unsaved changes that will get lost on reboot!%>

    -<%- end -%> - -
    - - - - - - - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_system/upgrade.htm b/luci-mod-admin-full/luasrc/view/admin_system/upgrade.htm deleted file mode 100644 index 7175248db..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_system/upgrade.htm +++ /dev/null @@ -1,59 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2009 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -

    <%:Flash Firmware%> - <%:Verify%>

    -

    - <%_ The flash image was uploaded. - Below is the checksum and file size listed, - compare them with the original file to ensure data integrity.
    - Click "Proceed" below to start the flash procedure. %> - - <% if storage > 0 and size > storage then %> -

    -

    <%:It appears that you are trying to - flash an image that does not fit into the flash memory, please verify - the image file! %>
    - <% end %> - -

    - -
    -
      -
    • <%:Checksum%>
      - <%:MD5%>: <%=checksum%>
      - <%:SHA256%>: <%=sha256ch%>
    • -
    • <%:Size%>: <% - local w = require "luci.tools.webadmin" - write(w.byte_format(size)) - - if storage > 0 then - write(luci.i18n.translatef( - " (%s available)", - w.byte_format(storage) - )) - end - %>
    • -
    • <% if keep then %> - <%:Configuration files will be kept.%> - <% else %> - <%:Note: Configuration files will be erased.%> - <% end %>
    • -
    -
    - -
    -
    - - - " /> - - -
    -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm b/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm deleted file mode 100644 index e05ccdece..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_uci/changelog.htm +++ /dev/null @@ -1,81 +0,0 @@ -<%# - Copyright 2010 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<% export("uci_changelog", function(changes) -%> -
    - <%:Legend:%> -
    -
      <%:Section added%>
    -
      <%:Section removed%>
    -
      <%:Option changed%>
    -
      <%:Option removed%>
    -
    -
    -
    - -
    <% - local util = luci.util - local ret = { } - - for r, tbl in pairs(changes) do - for s, os in pairs(tbl) do - -- section add - if os['.type'] and os['.type'] ~= "" then - ret[#ret+1] = "%s.%s=%s" %{ r, s, os['.type'] } - for o, v in util.kspairs(os) do - if o:sub(1,1) ~= "." then - if type(v) == "table" then - local i - for i = 1, #v do - ret[#ret+1] = "
    %s.%s.%s+=%s" - %{ r, s, o, util.pcdata(v[i]) } - end - elseif v ~= "" then - ret[#ret+1] = "
    %s.%s.%s=%s" - %{ r, s, o, util.pcdata(v) } - else - ret[#ret+1] = "
    %s.%s.%s" %{ r, s, o } - end - end - end - ret[#ret+1] = "

    " - - -- section delete - elseif os['.type'] and os['.type'] == "" then - ret[#ret+1] = "%s.%s
    " %{ r, s } - - -- modifications - else - ret[#ret+1] = "%s.%s
    " %{ r, s } - for o, v in util.kspairs(os) do - if o:sub(1,1) ~= "." then - if v and #v > 0 then - ret[#ret+1] = "" - if type(v) == "table" then - local i - for i = 1, #v do - ret[#ret+1] = "%s.%s.%s+=%s
    " - %{ r, s, o, util.pcdata(v[i]) } - end - - else - ret[#ret+1] = "%s.%s.%s=%s
    " - %{ r, s, o, util.pcdata(v) } - end - ret[#ret+1] = "
    " - else - ret[#ret+1] = "%s.%s.%s
    " %{ r, s, o } - end - end - end - ret[#ret+1] = "

    " - end - end - end - - write(table.concat(ret)) - %>
    -
    -<%- end) %> diff --git a/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm b/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm deleted file mode 100644 index 43bd7c23f..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm +++ /dev/null @@ -1,45 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2018 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<%- - local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir")) - export("redirect", redir_url or url("admin/uci/changes")) - - include("admin_uci/changelog") --%> - -

    <%:Configuration%> / <%:Changes%>

    - -<% if changes then %> - <%- uci_changelog(changes) -%> -<% else %> -

    <%:There are no pending changes!%>

    -<% end %> - - - -
    - <% if redir_url then %> -
    - -
    - <% end %> - -
    "> - - " /> - -
    -
    "> - - " /> - -
    -
    - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm b/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm deleted file mode 100644 index d8fd3de01..000000000 --- a/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm +++ /dev/null @@ -1,33 +0,0 @@ -<%# - Copyright 2008 Steven Barth - Copyright 2008-2018 Jo-Philipp Wich - Licensed to the public under the Apache License 2.0. --%> - -<%+header%> - -<%- - local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir")) - export("redirect", redir_url or url("admin/uci/changes")) - - include("admin_uci/changelog") --%> - -

    <%:Configuration%> / <%:Revert%>

    - -<% if changes then %> -

    <%:The following changes have been reverted%>:

    - <%- uci_changelog(changes) -%> -<% else %> -

    <%:There are no pending changes to revert!%>

    -<% end %> - -<% if redir_url then %> -
    -
    - -
    -
    -<% end %> - -<%+footer%> diff --git a/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm b/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm deleted file mode 100644 index ebb02e489..000000000 --- a/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm +++ /dev/null @@ -1,168 +0,0 @@ -<%+cbi/valueheader%> - - - - - - - -
    - - - -<%+cbi/valuefooter%> diff --git a/luci-mod-admin-full/root/etc/uci-defaults/51_macvlan b/luci-mod-admin-full/root/etc/uci-defaults/51_macvlan deleted file mode 100755 index c1b9c2406..000000000 --- a/luci-mod-admin-full/root/etc/uci-defaults/51_macvlan +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -uci -q batch <<-EOF >/dev/null - delete ucitrack.@macvlan[-1] - add ucitrack macvlan - set ucitrack.@macvlan[-1].init=macvlan - commit ucitrack -EOF -if [ "$(uci -q get ucitrack.@network[-1].affects | grep macvlan)" = "" ]; then - uci -q batch <<-EOF >/dev/null - add_list ucitrack.@network[-1].affects=macvlan - commit ucitrack - EOF -fi -exit 0 \ No newline at end of file diff --git a/luci-mod-admin-full/src/Makefile b/luci-mod-admin-full/src/Makefile deleted file mode 100644 index d6ed8c6e4..000000000 --- a/luci-mod-admin-full/src/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -%.o: %.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -c -o $@ $< - -clean: - rm -f luci-bwc *.o - -luci-bwc: luci-bwc.o - $(CC) $(LDFLAGS) -o $@ $^ -ldl - -compile: luci-bwc - -install: compile - mkdir -p $(DESTDIR)/usr/bin - cp luci-bwc $(DESTDIR)/usr/bin/luci-bwc diff --git a/luci-mod-admin-full/src/luci-bwc.c b/luci-mod-admin-full/src/luci-bwc.c deleted file mode 100644 index 8ddd91727..000000000 --- a/luci-mod-admin-full/src/luci-bwc.c +++ /dev/null @@ -1,778 +0,0 @@ -/* - * luci-bwc - Very simple bandwidth collector cache for LuCI realtime graphs - * - * Copyright (C) 2010 Jo-Philipp Wich - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#define STEP_COUNT 60 -#define STEP_TIME 1 -#define TIMEOUT 10 - -#define PID_PATH "/var/run/luci-bwc.pid" - -#define DB_PATH "/var/lib/luci-bwc" -#define DB_IF_FILE DB_PATH "/if/%s" -#define DB_RD_FILE DB_PATH "/radio/%s" -#define DB_CN_FILE DB_PATH "/connections" -#define DB_LD_FILE DB_PATH "/load" - -#define IF_SCAN_PATTERN \ - " %[^ :]:%u %u" \ - " %*d %*d %*d %*d %*d %*d" \ - " %u %u" - -#define LD_SCAN_PATTERN \ - "%f %f %f" - - -struct file_map { - int fd; - int size; - char *mmap; -}; - -struct traffic_entry { - uint32_t time; - uint32_t rxb; - uint32_t rxp; - uint32_t txb; - uint32_t txp; -}; - -struct conn_entry { - uint32_t time; - uint32_t udp; - uint32_t tcp; - uint32_t other; -}; - -struct load_entry { - uint32_t time; - uint16_t load1; - uint16_t load5; - uint16_t load15; -}; - -struct radio_entry { - uint32_t time; - uint16_t rate; - uint8_t rssi; - uint8_t noise; -}; - -static int readpid(void) -{ - int fd; - int pid = -1; - char buf[9] = { 0 }; - - if ((fd = open(PID_PATH, O_RDONLY)) > -1) - { - if (read(fd, buf, sizeof(buf))) - { - buf[8] = 0; - pid = atoi(buf); - } - - close(fd); - } - - return pid; -} - -static int writepid(void) -{ - int fd; - int wlen; - char buf[9] = { 0 }; - - if ((fd = open(PID_PATH, O_WRONLY | O_CREAT | O_TRUNC, 0600)) > -1) - { - wlen = snprintf(buf, sizeof(buf), "%i", getpid()); - write(fd, buf, wlen); - close(fd); - - return 0; - } - - return -1; -} - -static int timeout = TIMEOUT; -static int countdown = -1; - -static void reset_countdown(int sig) -{ - countdown = timeout; - -} - - -static char *progname; -static int prognamelen; - -static struct iwinfo_ops *backend = NULL; - - -static int init_directory(char *path) -{ - char *p = path; - - for (p = &path[1]; *p; p++) - { - if (*p == '/') - { - *p = 0; - - if (mkdir(path, 0700) && (errno != EEXIST)) - return -1; - - *p = '/'; - } - } - - return 0; -} - -static int init_file(char *path, int esize) -{ - int i, file; - char buf[sizeof(struct traffic_entry)] = { 0 }; - - if (init_directory(path)) - return -1; - - if ((file = open(path, O_WRONLY | O_CREAT, 0600)) >= 0) - { - for (i = 0; i < STEP_COUNT; i++) - { - if (write(file, buf, esize) < 0) - break; - } - - close(file); - - return 0; - } - - return -1; -} - -static inline uint32_t timeof(void *entry) -{ - return ntohl(((struct traffic_entry *)entry)->time); -} - -static int update_file(const char *path, void *entry, int esize) -{ - int rv = -1; - int file; - char *map; - - if ((file = open(path, O_RDWR)) >= 0) - { - map = mmap(NULL, esize * STEP_COUNT, PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_LOCKED, file, 0); - - if ((map != NULL) && (map != MAP_FAILED)) - { - if (timeof(entry) > timeof(map + esize * (STEP_COUNT-1))) - { - memmove(map, map + esize, esize * (STEP_COUNT-1)); - memcpy(map + esize * (STEP_COUNT-1), entry, esize); - } - - munmap(map, esize * STEP_COUNT); - - rv = 0; - } - - close(file); - } - - return rv; -} - -static int mmap_file(const char *path, int esize, struct file_map *m) -{ - m->fd = -1; - m->size = -1; - m->mmap = NULL; - - if ((m->fd = open(path, O_RDONLY)) >= 0) - { - m->size = STEP_COUNT * esize; - m->mmap = mmap(NULL, m->size, PROT_READ, - MAP_SHARED | MAP_LOCKED, m->fd, 0); - - if ((m->mmap != NULL) && (m->mmap != MAP_FAILED)) - return 0; - } - - return -1; -} - -static void umap_file(struct file_map *m) -{ - if ((m->mmap != NULL) && (m->mmap != MAP_FAILED)) - munmap(m->mmap, m->size); - - if (m->fd > -1) - close(m->fd); -} - -static void * iw_open(void) -{ - return dlopen("/usr/lib/libiwinfo.so", RTLD_LAZY); -} - -static int iw_update( - void *iw, const char *ifname, uint16_t *rate, uint8_t *rssi, uint8_t *noise -) { - struct iwinfo_ops *(*probe)(const char *); - int val; - - if (!backend) - { - probe = dlsym(iw, "iwinfo_backend"); - - if (!probe) - return 0; - - backend = probe(ifname); - - if (!backend) - return 0; - } - - *rate = (backend->bitrate && !backend->bitrate(ifname, &val)) ? val : 0; - *rssi = (backend->signal && !backend->signal(ifname, &val)) ? val : 0; - *noise = (backend->noise && !backend->noise(ifname, &val)) ? val : 0; - - return 1; -} - -static void iw_close(void *iw) -{ - void (*finish)(void); - - finish = dlsym(iw, "iwinfo_finish"); - - if (finish) - finish(); - - dlclose(iw); -} - - -static int update_ifstat( - const char *ifname, uint32_t rxb, uint32_t rxp, uint32_t txb, uint32_t txp -) { - char path[1024]; - - struct stat s; - struct traffic_entry e; - - snprintf(path, sizeof(path), DB_IF_FILE, ifname); - - if (stat(path, &s)) - { - if (init_file(path, sizeof(struct traffic_entry))) - { - fprintf(stderr, "Failed to init %s: %s\n", - path, strerror(errno)); - - return -1; - } - } - - e.time = htonl(time(NULL)); - e.rxb = htonl(rxb); - e.rxp = htonl(rxp); - e.txb = htonl(txb); - e.txp = htonl(txp); - - return update_file(path, &e, sizeof(struct traffic_entry)); -} - -static int update_radiostat( - const char *ifname, uint16_t rate, uint8_t rssi, uint8_t noise -) { - char path[1024]; - - struct stat s; - struct radio_entry e; - - snprintf(path, sizeof(path), DB_RD_FILE, ifname); - - if (stat(path, &s)) - { - if (init_file(path, sizeof(struct radio_entry))) - { - fprintf(stderr, "Failed to init %s: %s\n", - path, strerror(errno)); - - return -1; - } - } - - e.time = htonl(time(NULL)); - e.rate = htons(rate); - e.rssi = rssi; - e.noise = noise; - - return update_file(path, &e, sizeof(struct radio_entry)); -} - -static int update_cnstat(uint32_t udp, uint32_t tcp, uint32_t other) -{ - char path[1024]; - - struct stat s; - struct conn_entry e; - - snprintf(path, sizeof(path), DB_CN_FILE); - - if (stat(path, &s)) - { - if (init_file(path, sizeof(struct conn_entry))) - { - fprintf(stderr, "Failed to init %s: %s\n", - path, strerror(errno)); - - return -1; - } - } - - e.time = htonl(time(NULL)); - e.udp = htonl(udp); - e.tcp = htonl(tcp); - e.other = htonl(other); - - return update_file(path, &e, sizeof(struct conn_entry)); -} - -static int update_ldstat(uint16_t load1, uint16_t load5, uint16_t load15) -{ - char path[1024]; - - struct stat s; - struct load_entry e; - - snprintf(path, sizeof(path), DB_LD_FILE); - - if (stat(path, &s)) - { - if (init_file(path, sizeof(struct load_entry))) - { - fprintf(stderr, "Failed to init %s: %s\n", - path, strerror(errno)); - - return -1; - } - } - - e.time = htonl(time(NULL)); - e.load1 = htons(load1); - e.load5 = htons(load5); - e.load15 = htons(load15); - - return update_file(path, &e, sizeof(struct load_entry)); -} - -static int run_daemon(void) -{ - FILE *info; - uint32_t rxb, txb, rxp, txp; - uint32_t udp, tcp, other; - uint16_t rate; - uint8_t rssi, noise; - float lf1, lf5, lf15; - char line[1024]; - char ifname[16]; - int i; - void *iw; - struct sigaction sa; - - struct stat s; - const char *ipc = stat("/proc/net/nf_conntrack", &s) - ? "/proc/net/ip_conntrack" : "/proc/net/nf_conntrack"; - - switch (fork()) - { - case -1: - perror("fork()"); - return -1; - - case 0: - if (chdir("/") < 0) - { - perror("chdir()"); - exit(1); - } - - close(0); - close(1); - close(2); - break; - - default: - return 0; - } - - /* setup USR1 signal handler to reset timer */ - sa.sa_handler = reset_countdown; - sa.sa_flags = SA_RESTART; - sigemptyset(&sa.sa_mask); - sigaction(SIGUSR1, &sa, NULL); - - /* write pid */ - if (writepid()) - { - fprintf(stderr, "Failed to write pid file: %s\n", strerror(errno)); - return 1; - } - - /* initialize iwinfo */ - iw = iw_open(); - - /* go */ - for (reset_countdown(0); countdown >= 0; countdown--) - { - /* alter progname for ps, top */ - memset(progname, 0, prognamelen); - snprintf(progname, prognamelen, "luci-bwc %d", countdown); - - if ((info = fopen("/proc/net/dev", "r")) != NULL) - { - while (fgets(line, sizeof(line), info)) - { - if (strchr(line, '|')) - continue; - - if (sscanf(line, IF_SCAN_PATTERN, ifname, &rxb, &rxp, &txb, &txp)) - { - if (strncmp(ifname, "lo", sizeof(ifname))) - update_ifstat(ifname, rxb, rxp, txb, txp); - } - } - - fclose(info); - } - - if (iw) - { - for (i = 0; i < 5; i++) - { -#define iw_checkif(pattern) \ - do { \ - snprintf(ifname, sizeof(ifname), pattern, i); \ - if (iw_update(iw, ifname, &rate, &rssi, &noise)) \ - { \ - update_radiostat(ifname, rate, rssi, noise); \ - continue; \ - } \ - } while(0) - - iw_checkif("wlan%d"); - iw_checkif("ath%d"); - iw_checkif("wl%d"); - } - } - - if ((info = fopen(ipc, "r")) != NULL) - { - udp = 0; - tcp = 0; - other = 0; - - while (fgets(line, sizeof(line), info)) - { - if (strstr(line, "TIME_WAIT")) - continue; - - if ((strstr(line, "src=127.0.0.1 ") && strstr(line, "dst=127.0.0.1 ")) - || (strstr(line, "src=::1 ") && strstr(line, "dst=::1 "))) - continue; - - if (sscanf(line, "%*s %*d %s", ifname) || sscanf(line, "%s %*d", ifname)) - { - if (!strcmp(ifname, "tcp")) - tcp++; - else if (!strcmp(ifname, "udp")) - udp++; - else - other++; - } - } - - update_cnstat(udp, tcp, other); - - fclose(info); - } - - if ((info = fopen("/proc/loadavg", "r")) != NULL) - { - if (fscanf(info, LD_SCAN_PATTERN, &lf1, &lf5, &lf15)) - { - update_ldstat((uint16_t)(lf1 * 100), - (uint16_t)(lf5 * 100), - (uint16_t)(lf15 * 100)); - } - - fclose(info); - } - - sleep(STEP_TIME); - } - - unlink(PID_PATH); - - if (iw) - iw_close(iw); - - return 0; -} - -static void check_daemon(void) -{ - int pid; - - if ((pid = readpid()) < 0 || kill(pid, 0) < 0) - { - /* daemon ping failed, try to start it up */ - if (run_daemon()) - { - fprintf(stderr, - "Failed to ping daemon and unable to start it up: %s\n", - strerror(errno)); - - exit(1); - } - } - else if (kill(pid, SIGUSR1)) - { - fprintf(stderr, "Failed to send signal: %s\n", strerror(errno)); - exit(2); - } -} - -static int run_dump_ifname(const char *ifname) -{ - int i; - char path[1024]; - struct file_map m; - struct traffic_entry *e; - - check_daemon(); - snprintf(path, sizeof(path), DB_IF_FILE, ifname); - - if (mmap_file(path, sizeof(struct traffic_entry), &m)) - { - fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno)); - return 1; - } - - for (i = 0; i < m.size; i += sizeof(struct traffic_entry)) - { - e = (struct traffic_entry *) &m.mmap[i]; - - if (!e->time) - continue; - - printf("[ %u, %u, %" PRIu32 - ", %u, %u ]%s\n", - ntohl(e->time), - ntohl(e->rxb), ntohl(e->rxp), - ntohl(e->txb), ntohl(e->txp), - ((i + sizeof(struct traffic_entry)) < m.size) ? "," : ""); - } - - umap_file(&m); - - return 0; -} - -static int run_dump_radio(const char *ifname) -{ - int i; - char path[1024]; - struct file_map m; - struct radio_entry *e; - - check_daemon(); - snprintf(path, sizeof(path), DB_RD_FILE, ifname); - - if (mmap_file(path, sizeof(struct radio_entry), &m)) - { - fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno)); - return 1; - } - - for (i = 0; i < m.size; i += sizeof(struct radio_entry)) - { - e = (struct radio_entry *) &m.mmap[i]; - - if (!e->time) - continue; - - printf("[ %u, %d, %d, %d ]%s\n", - ntohl(e->time), - e->rate, e->rssi, e->noise, - ((i + sizeof(struct radio_entry)) < m.size) ? "," : ""); - } - - umap_file(&m); - - return 0; -} - -static int run_dump_conns(void) -{ - int i; - char path[1024]; - struct file_map m; - struct conn_entry *e; - - check_daemon(); - snprintf(path, sizeof(path), DB_CN_FILE); - - if (mmap_file(path, sizeof(struct conn_entry), &m)) - { - fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno)); - return 1; - } - - for (i = 0; i < m.size; i += sizeof(struct conn_entry)) - { - e = (struct conn_entry *) &m.mmap[i]; - - if (!e->time) - continue; - - printf("[ %u, %u, %u, %u ]%s\n", - ntohl(e->time), ntohl(e->udp), - ntohl(e->tcp), ntohl(e->other), - ((i + sizeof(struct conn_entry)) < m.size) ? "," : ""); - } - - umap_file(&m); - - return 0; -} - -static int run_dump_load(void) -{ - int i; - char path[1024]; - struct file_map m; - struct load_entry *e; - - check_daemon(); - snprintf(path, sizeof(path), DB_LD_FILE); - - if (mmap_file(path, sizeof(struct load_entry), &m)) - { - fprintf(stderr, "Failed to open %s: %s\n", path, strerror(errno)); - return 1; - } - - for (i = 0; i < m.size; i += sizeof(struct load_entry)) - { - e = (struct load_entry *) &m.mmap[i]; - - if (!e->time) - continue; - - printf("[ %u, %u, %u, %u ]%s\n", - ntohl(e->time), - ntohs(e->load1), ntohs(e->load5), ntohs(e->load15), - ((i + sizeof(struct load_entry)) < m.size) ? "," : ""); - } - - umap_file(&m); - - return 0; -} - - -int main(int argc, char *argv[]) -{ - int opt; - - progname = argv[0]; - prognamelen = -1; - - for (opt = 0; opt < argc; opt++) - prognamelen += 1 + strlen(argv[opt]); - - while ((opt = getopt(argc, argv, "t:i:r:cl")) > -1) - { - switch (opt) - { - case 't': - timeout = atoi(optarg); - break; - - case 'i': - if (optarg) - return run_dump_ifname(optarg); - break; - - case 'r': - if (optarg) - return run_dump_radio(optarg); - break; - - case 'c': - return run_dump_conns(); - - case 'l': - return run_dump_load(); - - default: - break; - } - } - - fprintf(stderr, - "Usage:\n" - " %s [-t timeout] -i ifname\n" - " %s [-t timeout] -r radiodev\n" - " %s [-t timeout] -c\n" - " %s [-t timeout] -l\n", - argv[0], argv[0], argv[0], argv[0] - ); - - return 1; -} diff --git a/luci-mod-dashboard/Makefile b/luci-mod-dashboard/Makefile new file mode 100644 index 000000000..6a6d84166 --- /dev/null +++ b/luci-mod-dashboard/Makefile @@ -0,0 +1,21 @@ +# +# Copyright 2019-2020 ZHANG Zhao +# Copyright 2020 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# +# This is free software, licensed under the Apache License, Version 2.0 . +# +# Based on openwrt luci commit 03c77dafe3cfb922b995adfe9c0f8a75c98a18af +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI Dashboard Pages +LUCI_DEPENDS:=+luci-base +libiwinfo + +PKG_BUILD_DEPENDS:=iwinfo +PKG_LICENSE:=Apache-2.0 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature + diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css new file mode 100644 index 000000000..f20713832 --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/css/custom.css @@ -0,0 +1,300 @@ +/** + * Dashboard Principals Styles +**/ + +.Dashboard { + color: #212529!important; +} + +.Dashboard h3 { + color:#000; + background: transparent; +} + +.Dashboard hr { + border: 0; + height: 0; + overflow: visible; + margin: 0; + box-sizing: content-box; + border-top: 1px solid rgba(0,0,0,.1); +} + +.Dashboard .box-s1 { + min-height: 550px; +} + +.Dashboard .internet-status-self .internet-status-info .title { + height: 97px; +} + +.Dashboard .dashboard-bg { + border-radius: 16px; + background-color: #e0e0e0; +} + +.Dashboard div > table > tbody > tr:nth-of-type(2n), div > .table > .tr:nth-of-type(2n) { + background-color: transparent; +} +.Dashboard .tr { + background-color: transparent; +} + +.Dashboard .title { + text-align: center; +} + +.Dashboard .section-content { + display: flex; + vertical-align: top; + padding: 20px 0 0 0; + align-items: flex-start; + justify-content: space-between; +} + +.Dashboard .section-content > div { + width:100%; + padding:1.5em; +} + +.Dashboard .section-content .settings-info { + padding-top:1em; +} + +.Dashboard .section-content .internet-status-info .settings-info { + display: flex; + justify-content: space-around; +} + +.Dashboard .section-content .internet-status-info .settings-info > div > p > i{ + padding: 0 0 0 5px; +} + +.Dashboard .section-content > div:nth-child(2) { + margin-left:20px; +} + +.Dashboard .devices-list .devices-info { + margin-bottom: 0; +} + +.Dashboard .devices-list .devices-info .tr .td{ + padding:0px 0 0 10px; +} + +.Dashboard .devices-list .devices-info .tr .td:first-child { + width: 33%; + word-break: break-all; +} + +.Dashboard .devices-list hr:nth-child(4) { + margin-top: 0; + margin-bottom: 8px; +} + +.Dashboard .router-status-lan .devices-list .table-titles .th:first-child { + width: 35%; +} + +.Dashboard .router-status-self .router-status-info .settings-info { + padding-left:27px; +} + +.Dashboard .router-status-self .router-status-info .title h3 { + margin-top:-2px; +} + +.Dashboard .router-status-info svg { + width: 70px; +} + +.Dashboard .internet-status-self .settings-info p:first-child span:first-child{ + font-size: 12px; + font-weight: 500; +} + +//.Dashboard .internet-status-self .settings-info p:first-child span:first-child, +.Dashboard .router-status-wifi .wifi-info .settings-info p:first-child span:first-child, +.Dashboard .router-status-wifi .wifi-info .settings-info p:nth-child(2) span:first-child{ + font-weight: 700; +} + +.Dashboard .settings-info p span:first-child { + width: 35%; + font-size: 12px; + text-align: right; +} + +.Dashboard .settings-info p span:nth-child(2){ + display: inline-block; + word-break: break-all; + overflow: hidden; + max-height: 16px; + position: relative; + top:2px; +} + +.Dashboard .router-status-info .settings-info p span:nth-child(2){ + max-width: 283px; +} + +.Dashboard .settings-info p span.ssid { + max-height: 18px; + top: 3px; +} + +.Dashboard .settings-info p span.encryption { + max-width: 82px; +} + +.Dashboard .router-status-wifi .wifi-info .settings-info, +.Dashboard .router-status-lan .lan-info .settings-info +{ + display: flex; + justify-content: space-around; +} + +.Dashboard .router-status-wifi .wifi-info .devices-info .tr .td { + padding: 0 10px 0 10px; +} + +.Dashboard .router-status-wifi .wifi-info .devices-info .tr .td:first-child { + width: 30%; + word-break: break-all; +} + +.Dashboard .router-status-wifi .wifi-info .devices-info .tr .td:nth-child(2) { + width: 21%; + overflow: hidden; + padding-left:0; + word-break: break-all; +} + +.Dashboard .router-status-wifi .wifi-info .settings-info{ + padding:1em 0 1em 0; +} + +.Dashboard .router-status-wifi .wifi-info .devices-info .tr .td:nth-child(3) { + width: 22%; + overflow: hidden; + position: relative; + top: -3px; +} + +.Dashboard .router-status-wifi .wifi-info .devices-info .tr .td:nth-child(5) { + width: initial; +} + +.Dashboard .router-status-wifi .wifi-info > hr:last-child { + margin-bottom:0; +} + +.Dashboard .router-status-wifi .wifi-info .devices-info .device-info .progress { + padding: 0; + width: 100%; + margin: 0; +} + +.Dashboard .wifi-info .devices-info .table-titles { + border-bottom:1px solid rgba(0,0,0,.1); +} + +.Dashboard .label-success { + background-color: green; +} + +.Dashboard .label-danger { + background-color: red; +} + +/** + * Responsive + **/ +@media screen and (min-width: 200px) and (max-width: 640px) { + + .Dashboard .cbi-section-1 > .section-content { + padding-top:10px; + } + + .Dashboard .section-content { + display:block; + } + + .Dashboard .section-content > div{ + padding: 1em; + } + + .Dashboard .section-content > div:first-child { + margin-bottom:10px; + } + + .Dashboard .section-content > div:nth-child(2) { + margin:0; + } + + .Dashboard .router-status-self .router-status-info .settings-info { + padding:0; + } + + .Dashboard .section-content .internet-status-info .settings-info { + display:block; + } + + .Dashboard .section-content .internet-status-info .settings-info > div:first-child { + margin-bottom: 10px; + border-bottom: 1px solid rgba(0,0,0,.1); + } + + .Dashboard .section-content .router-status-lan .devices-info .table-titles { + display:block; + } + + .Dashboard .router-status-wifi .wifi-info .settings-info > div{ + flex:1; + } + + .Dashboard .section-content .router-status-lan .devices-info .table-titles .th:last-child{ + padding-left: 70px; + } + + .Dashboard .section-content .router-status-lan .devices-info .td:first-child{ + flex: 2 2 31%; + } + + .Dashboard .section-content .router-status-lan .devices-info .td:nth-child(2){ + flex: 1 1 24%; + padding: 0; + } + + .Dashboard .section-content .router-status-lan .devices-info .td:last-child{ + word-wrap: normal; + } + + .Dashboard .router-status-wifi .wifi-info .settings-info > div p:nth-child(6) > span:last-child{ + display: inline-block; + overflow: hidden; + height: 14px; + width: 52%; + word-break: break-word; + line-height: 15px; + } + + .Dashboard .wifi-info .devices-info .table-titles { + padding: 0; + margin: 0; + display: flex; + border-radius: initial; + } + + .Dashboard .wifi-info .devices-info .table-titles .th { + flex: 2 2 24%; + } + + .Dashboard .wifi-info .devices-info .tr .td { + flex: 2 2 10%; + } + + .Dashboard .wifi-info hr:nth-child(4) { + margin-bottom: 0; + } +} diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/devices.svg b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/devices.svg new file mode 100644 index 000000000..2ab09176b --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/devices.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/internet.svg b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/internet.svg new file mode 100644 index 000000000..8563603c9 --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/internet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/not-internet.svg b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/not-internet.svg new file mode 100644 index 000000000..d66f8379f --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/not-internet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/router.svg b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/router.svg new file mode 100644 index 000000000..1ff29ee56 --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/router.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/wireless.svg b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/wireless.svg new file mode 100644 index 000000000..576baafe8 --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/icons/wireless.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js new file mode 100644 index 000000000..cf69d4d0e --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js @@ -0,0 +1,384 @@ +'use strict'; +'require baseclass'; +'require fs'; +'require rpc'; +'require network'; + +var callSystemBoard = rpc.declare({ + object: 'system', + method: 'board' +}); + +var callSystemInfo = rpc.declare({ + object: 'system', + method: 'info' +}); + +var callOpenMPTCProuterInfo = rpc.declare({ + object: 'openmptcprouter', + method: 'status' +}); + + +return baseclass.extend({ + + params: [], + + formatBytes: function(a,b=2){if(0===a)return"0 Bytes";const c=0>b?0:b,d=Math.floor(Math.log(a)/Math.log(1024));return parseFloat((a/Math.pow(1024,d)).toFixed(c))+" "+["Bytes","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"][d]}, + load: function() { + return Promise.all([ + network.getWANNetworks(), + network.getWAN6Networks(), + L.resolveDefault(callSystemBoard(), {}), + L.resolveDefault(callSystemInfo(), {}), + L.resolveDefault(callOpenMPTCProuterInfo(), {}) + ]); + }, + + renderHtml: function(data, type) { + + var icon = type; + var title = 'router' == type ? _('System') : _('Internet'); + var container_wapper = E('div', { 'class': type + '-status-self dashboard-bg box-s1'}); + var container_box = E('div', { 'class': type + '-status-info'}); + var container_item = E('div', { 'class': 'settings-info'}); + + if ('internet' == type) { + icon = (data.internet.v4.connected.value || data.internet.v6.connected.value) ? type : 'not-internet'; + } + + container_box.appendChild(E('div', { 'class': 'title'}, [ + E('img', { + 'src': L.resource('view/dashboard/icons/' + icon + '.svg'), + 'width': 'router' == type ? 64 : 54, + 'title': title, + 'class': 'middle' + }), + E('h3', title) + ])); + + container_box.appendChild(E('hr')); + + if ('internet' == type) { + + var container_internet_v4 = E('div'); + var container_internet_v6 = E('div'); + var container_internet_vps = E('div'); + + for(var idx in data['vps']) { + var classname = ver, + suppelements = '', + visible = data['vps'][idx].visible; + if ('title' === idx) { + container_internet_vps.appendChild( + E('p', { 'class': 'mt-2'}, [ + E('h4', {'class': ''}, [ data['vps'].title ]), + ]) + ); + continue; + } + if (visible) { + container_internet_vps.appendChild( + E('p', { 'class': 'mt-2'}, [ + E('span', {'class': ''}, [ data['vps'][idx].title + ':' ]), + E('span', {'class': ''}, [ data['vps'][idx].value ]), + suppelements + ]) + ); + } + } + + + for(var idx in data['internet']) { + + for(var ver in data['internet'][idx]) { + var classname = ver, + suppelements = '', + visible = data['internet'][idx][ver].visible; + + if('connected' === ver) { + classname = data['internet'][idx][ver].value ? 'label label-success' : 'label label-danger'; + data['internet'][idx][ver].value = data['internet'][idx][ver].value ? _('yes') : _('no'); + } + + if ('v4' === idx) { + + if ('title' === ver) { + container_internet_v4.appendChild( + E('p', { 'class': 'mt-2'}, [ + E('h4', {'class': ''}, [ data['internet'][idx].title ]), + ]) + ); + continue; + } + + if ('addrsv4' === ver) { + var addrs = data['internet'][idx][ver].value; + if(Array.isArray(addrs) && addrs.length) { + for(var ip in addrs) { + data['internet'][idx][ver].value = addrs[ip].split('/')[0]; + } + } + } + + if (visible) { + container_internet_v4.appendChild( + E('p', { 'class': 'mt-2'}, [ + E('span', {'class': ''}, [ data['internet'][idx][ver].title + ':' ]), + E('span', {'class': classname }, [ data['internet'][idx][ver].value ]), + suppelements + ]) + ); + } + + } else { + + if ('title' === ver) { + container_internet_v6.appendChild( + E('p', { 'class': 'mt-2'}, [ + E('h4', {'class': ''}, [ data['internet'][idx].title ]), + ]) + ); + continue; + } + + if (visible) { + container_internet_v6.appendChild( + E('p', {'class': 'mt-2'}, [ + E('span', {'class': ''}, [data['internet'][idx][ver].title + ':']), + E('span', {'class': classname}, [data['internet'][idx][ver].value]), + suppelements + ]) + ); + } + } + } + } + + container_item.appendChild(E('p', { 'class': 'table'}, [ + E('div', { 'class': 'tr' }, [ + E('div', { 'class': 'td' }, [ container_internet_vps ]) + ]), + E('div', { 'class': 'tr' }, [ + E('div', { 'class': 'td' }, [ + container_internet_v4 + ]), + E('div', { 'class': 'td' }, [ + container_internet_v6 + ]) + ]) + ])); + } else { + for(var idx in data) { + container_item.appendChild( + E('p', { 'class': 'mt-2'}, [ + E('span', {'class': ''}, [ data[idx].title + ':' ]), + E('span', {'class': ''}, [ data[idx].value ]) + ]) + ); + } + } + + container_box.appendChild(container_item); + container_box.appendChild(E('hr')); + container_wapper.appendChild(container_box); + return container_wapper; + }, + + renderUpdateWanData: function(data, v6) { + for (var i = 0; i < data.length; i++) { + var ifc = data[i]; + + if (v6) { + this.params.internet.v6.ipprefixv6.value = ifc.getIP6Prefix() || '-'; + this.params.internet.v6.gatewayv6.value = ifc.getGateway6Addr() || '-'; + this.params.internet.v6.protocol.value= ifc.getI18n() || E('em', _('Not connected')); + this.params.internet.v6.addrsv6.value = ifc.getIP6Addrs() || [ '-' ]; + this.params.internet.v6.dnsv6.value = ifc.getDNS6Addrs() || [ '-' ]; + this.params.internet.v6.connected.value = ifc.isUp(); + } else { + var uptime = ifc.getUptime(); + this.params.internet.v4.uptime.value = (uptime > 0) ? '%t'.format(uptime) : '-'; + this.params.internet.v4.protocol.value= ifc.getI18n() || E('em', _('Not connected')); + this.params.internet.v4.gatewayv4.value = ifc.getGatewayAddr() || '0.0.0.0'; + this.params.internet.v4.connected.value = ifc.isUp(); + this.params.internet.v4.addrsv4.value = ifc.getIPAddrs() || [ '-']; + this.params.internet.v4.dnsv4.value = ifc.getDNSAddrs() || [ '-' ]; + } + } + }, + renderUpdateOpenMPTCProuterData: function(data, v6) { + if (data.openmptcprouter != undefined) { + if (data.openmptcprouter.wan_addr != '') this.params.omrvps.internet.v4.connected.value = true; + if (data.openmptcprouter.wan_addr) this.params.omrvps.internet.v4.addrsv4.value = data.openmptcprouter.wan_addr || [ '-']; + if (data.openmptcprouter.wan_addr6) this.params.omrvps.internet.v6.addrsv6.value = data.openmptcprouter.wan_addr6 || [ '-']; + if (data.openmptcprouter.vps_kernel) this.params.omrvps.vps.version.value = data.openmptcprouter.vps_kernel + ' ' + data.openmptcprouter.vps_omr_version || [ '-']; + if (data.openmptcprouter.vps_loadavg) { + var vps_loadavg = data.openmptcprouter.vps_loadavg.split(" "); + this.params.omrvps.vps.load.value = '%s, %s, %s'.format(vps_loadavg[0],vps_loadavg[1],vps_loadavg[2]); + } + if (data.openmptcprouter.vps_uptime) this.params.omrvps.vps.uptime.value = String.format('%t', data.openmptcprouter.vps_uptime) || [ '-']; + if (data.openmptcprouter.proxy_traffic) this.params.omrvps.vps.trafficproxy.value = this.formatBytes(data.openmptcprouter.proxy_traffic) || [ '-']; + if (data.openmptcprouter.vpn_traffic) this.params.omrvps.vps.trafficvpn.value = this.formatBytes(data.openmptcprouter.vpn_traffic) || [ '-']; + if (data.openmptcprouter.total_traffic) this.params.omrvps.vps.traffictotal.value = this.formatBytes(data.openmptcprouter.total_traffic) || [ '-']; + if (data.openmptcprouter.ipv6 != 'disabled') this.params.omrvps.internet.v6.connected.value = true; + } + }, + + renderInternetBox: function(data) { + + this.params.omrvps = { + vps: { + title: _('Server'), + + version: { + title: _('Version'), + visible: true, + value: [ '-' ] + }, + + load: { + title: _('Load'), + visible: true, + value: [ '-' ] + }, + + uptime: { + title: _('Uptime'), + visible: true, + value: [ '-' ] + }, + + trafficproxy: { + title: _('Proxy traffic'), + visible: true, + value: [ '-' ] + }, + + trafficvpn: { + title: _('VPN traffic'), + visible: true, + value: [ '-' ] + }, + + traffictotal: { + title: _('Total traffic'), + visible: true, + value: [ '-' ] + } + }, + + internet: { + + v4: { + title: _('IPv4 Internet'), + + connected: { + title: _('Connected'), + visible: true, + value: false + }, + + addrsv4: { + title: _('IPv4'), + visible: true, + value: [ '-' ] + } + }, + + v6: { + title: _('IPv6 Internet'), + + connected: { + title: _('Connected'), + visible: true, + value: false + }, + + ipprefixv6 : { + title: _('IPv6 prefix'), + visible: false, + value: ' - ' + }, + + addrsv6: { + title: _('IPv6'), + visible: true, + value: [ '-' ] + } + + } + } + }; + + //this.renderUpdateWanData(data[0], false); + //this.renderUpdateWanData(data[1], true); + this.renderUpdateOpenMPTCProuterData(data[4], true); + + return this.renderHtml(this.params.omrvps, 'internet'); + }, + + renderRouterBox: function(data) { + + var boardinfo = data[2], + systeminfo = data[3]; + + var datestr = null; + + if (systeminfo.localtime) { + var date = new Date(systeminfo.localtime * 1000); + + datestr = '%04d-%02d-%02d %02d:%02d:%02d'.format( + date.getUTCFullYear(), + date.getUTCMonth() + 1, + date.getUTCDate(), + date.getUTCHours(), + date.getUTCMinutes(), + date.getUTCSeconds() + ); + } + + this.params.router = { + uptime: { + title: _('Uptime'), + value: systeminfo.uptime ? '%t'.format(systeminfo.uptime) : null, + }, + + localtime: { + title: _('Local Time'), + value: datestr + }, + + load: { + title: _('Load Average'), + value: Array.isArray(systeminfo.load) ? '%.2f, %.2f, %.2f'.format(systeminfo.load[0] / 65535.0,systeminfo.load[1] / 65535.0,systeminfo.load[2] / 65535.0) : null + }, + + kernel: { + title: _('Kernel Version'), + value: boardinfo.kernel + }, + + model: { + title: _('Model'), + value: boardinfo.model + }, + + system: { + title: _('Architecture'), + value: boardinfo.system + }, + + release: { + title: _('Firmware Version'), + value: (typeof boardinfo.release !== "undefined") ? ((typeof boardinfo.release.description !== "undefined") ? boardinfo.release.description : null) : null + } + }; + + return this.renderHtml(this.params.router, 'router'); + }, + + render: function(data) { + return [this.renderInternetBox(data), this.renderRouterBox(data)]; + } +}); diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js new file mode 100644 index 000000000..c673fa681 --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js @@ -0,0 +1,152 @@ +'use strict'; +'require baseclass'; +'require rpc'; +'require network'; + +var callLuciDHCPLeases = rpc.declare({ + object: 'luci-rpc', + method: 'getDHCPLeases', + expect: { '': {} } +}); + +return baseclass.extend({ + title: _('DHCP Devices'), + + params: {}, + + load: function() { + return Promise.all([ + callLuciDHCPLeases(), + network.getDevices() + ]); + }, + + renderHtml: function() { + + var container_wapper = E('div', { 'class': 'router-status-lan dashboard-bg box-s1' }); + var container_box = E('div', { 'class': 'lan-info devices-list' }); + var container_devices = E('table', { 'class': 'table assoclist devices-info' }, [ + E('tr', { 'class': 'tr table-titles dashboard-bg' }, [ + E('th', { 'class': 'th nowrap' }, _('Hostname')), + E('th', { 'class': 'th' }, _('IP Address')), + E('th', { 'class': 'th' }, _('MAC')), + ]) + ]); + + var container_deviceslist = E('table', { 'class': 'table assoclist devices-info' }); + + container_box.appendChild(E('div', { 'class': 'title'}, [ + E('img', { + 'src': L.resource('view/dashboard/icons/devices.svg'), + 'width': 55, + 'title': this.title, + 'class': 'middle' + }), + E('h3', this.title) + ])); + + for(var idx in this.params.lan.devices) { + var deivce = this.params.lan.devices[idx]; + + container_deviceslist.appendChild(E('tr', { 'class': 'tr cbi-rowstyle-1'}, [ + + E('td', { 'class': 'td device-info'}, [ + E('p', {}, [ + E('span', { 'class': 'd-inline-block'}, [ deivce.hostname ]), + ]), + ]), + + E('td', { 'class': 'td device-info'}, [ + E('p', {}, [ + E('span', { 'class': 'd-inline-block'}, [ deivce.ipv4 ]), + ]), + ]), + + E('td', { 'class': 'td device-info'}, [ + E('p', {}, [ + E('span', { 'class': 'd-inline-block'}, [ deivce.macaddr ]), + ]), + ]) + ])); + } + + if (this.params.lan.devices.length > 0) { + container_box.appendChild(E('hr')); + container_box.appendChild(container_devices); + container_box.appendChild(E('hr')); + container_box.appendChild(container_deviceslist); + container_wapper.appendChild(container_box); + } + + return container_wapper; + }, + + renderUpdateData: function(data, leases) { + + for(var item in data) { + if (/lan|br-lan/ig.test(data[item].ifname) && (typeof data[item].dev == 'object' && !data[item].dev.wireless)) { + var lan_device = data[item]; + var ipv4addr = lan_device.dev.ipaddrs.toString().split('/'); + + this.params.lan.ipv4 = ipv4addr[0] || '?'; + this.params.lan.ipv6 = ipv4addr[0] || '?'; + this.params.lan.macaddr = lan_device.dev.macaddr || '00:00:00:00:00:00'; + this.params.lan.rx_bytes = lan_device.dev.stats.rx_bytes ? '%.2mB'.format(lan_device.dev.stats.rx_bytes) : '-'; + this.params.lan.tx_bytes = lan_device.dev.stats.tx_bytes ? '%.2mB'.format(lan_device.dev.stats.tx_bytes) : '-'; + } + } + + var devices = []; + leases.map(function(lease) { + devices[lease.expires] = { + hostname: lease.hostname || '?', + ipv4: lease.ipaddr || '-', + macaddr: lease.macaddr || '00:00:00:00:00:00', + }; + }); + this.params.lan.devices = devices; + }, + + renderLeases: function(data) { + + var leases = Array.isArray(data[0].dhcp_leases) ? data[0].dhcp_leases : []; + + this.params.lan = { + ipv4: { + title: _('IPv4'), + value: '?' + }, + + macaddr: { + title: _('Mac'), + value: '00:00:00:00:00:00' + }, + + rx_bytes: { + title: _('Upload'), + value: '-' + }, + + tx_bytes: { + title: _('Download'), + value: '-' + }, + + devices: { + title: _('Devices'), + value: [] + } + }; + + this.renderUpdateData(data[1], leases); + + return this.renderHtml(); + }, + + render: function(data) { + if (L.hasSystemFeature('dnsmasq') || L.hasSystemFeature('odhcpd')) + return this.renderLeases(data); + + return E([]); + } +}); diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js new file mode 100644 index 000000000..fe5e843f0 --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js @@ -0,0 +1,269 @@ +'use strict'; +'require baseclass'; +'require dom'; +'require network'; +'require rpc'; + +return baseclass.extend({ + + title: _('Wireless'), + + params: [], + + load: function() { + return Promise.all([ + network.getWifiDevices(), + network.getWifiNetworks(), + network.getHostHints() + ]).then(function(radios_networks_hints) { + var tasks = []; + + for (var i = 0; i < radios_networks_hints[1].length; i++) + tasks.push(L.resolveDefault(radios_networks_hints[1][i].getAssocList(), []).then(L.bind(function(net, list) { + net.assoclist = list.sort(function(a, b) { return a.mac > b.mac }); + }, this, radios_networks_hints[1][i]))); + + return Promise.all(tasks).then(function() { + return radios_networks_hints; + }); + }); + }, + + renderHtml: function() { + + var container_wapper = E('div', { 'class': 'router-status-wifi dashboard-bg box-s1' }); + var container_box = E('div', { 'class': 'wifi-info devices-list' }); + var container_radio = E('div', { 'class': 'settings-info' }); + var container_radio_item; + + container_box.appendChild(E('div', { 'class': 'title'}, [ + E('img', { + 'src': L.resource('view/dashboard/icons/wireless.svg'), + 'width': 55, + 'title': this.title, + 'class': 'middle' + }), + E('h3', this.title) + ])); + + container_box.appendChild(E('hr')); + + for (var i =0; i < this.params.wifi.radios.length; i++) { + + container_radio_item = E('div', { 'class': 'radio-info' }) + + for(var idx in this.params.wifi.radios[i]) { + var classname = idx, + radio = this.params.wifi.radios[i]; + + if (!radio[idx].visible) { + continue; + } + + if ('actived' === idx) { + classname = radio[idx].value ? 'label label-success' : 'label label-danger'; + radio[idx].value = radio[idx].value ? _('yes') : _('no'); + } + + container_radio_item.appendChild( + E('p', {}, [ + E('span', { 'class': ''}, [ radio[idx].title + ':']), + E('span', { 'class': classname }, [ radio[idx].value ]), + ]) + ); + } + + container_radio.appendChild(container_radio_item); + } + + container_box.appendChild(container_radio); + + var container_devices = E('div', { 'class': 'table assoclist devices-info' }, [ + E('div', { 'class': 'tr table-titles dashboard-bg' }, [ + E('div', { 'class': 'th nowrap' }, _('Hostname')), + E('div', { 'class': 'th' }, _('Wireless')), + E('div', { 'class': 'th' }, _('Signal')), + E('div', { 'class': 'th' }, '%s / %s'.format( _('Up.'), _('Down.'))) + ]) + ]); + + var container_devices_item; + var container_devices_list = E('div', { 'class': 'table assoclist devices-info' }); + + for (var i =0; i < this.params.wifi.devices.length; i++) { + container_devices_item = E('div', { 'class': 'tr cbi-rowstyle-1' }); + + for(var idx in this.params.wifi.devices[i]) { + var device = this.params.wifi.devices[i]; + + if (!device[idx].visible) { + continue; + } + + var container_content; + + if ('progress' == idx) { + container_content = E('div', { 'class' : 'td device-info' }, [ + E('div', { 'class': 'progress' }, [ + E('div', { 'class': 'progress-bar ' + device[idx].value.style, role: 'progressbar', style: 'width:'+device[idx].value.qualite+'%', 'aria-valuenow': device[idx].value.qualite, 'aria-valuemin': 0, 'aria-valuemax': 100 }), + ]) + ]); + } else if ('rate' == idx) { + container_content = E('div', { 'class': 'td device-info' }, [ + E('p', {}, [ + E('span', { 'class': ''}, [ device[idx].value.rx ]), + E('br'), + E('span', { 'class': ''}, [ device[idx].value.tx ]) + ]) + ]); + } else { + container_content = E('div', { 'class': 'td device-info'}, [ + E('p', {}, [ + E('span', { 'class': ''}, [ device[idx].value ]), + ]) + ]); + } + + container_devices_item.appendChild(container_content); + } + + container_devices_list.appendChild(container_devices_item); + } + + if (this.params.wifi.devices.length > 0) { + container_devices.appendChild(container_devices_list); + container_box.appendChild(E('hr')); + container_box.appendChild(container_devices); + container_box.appendChild(container_devices_list); + container_wapper.appendChild(container_box); + } + + return container_wapper; + }, + + renderUpdateData: function(radios, networks, hosthints) { + + for (var i = 0; i < radios.sort(function(a, b) { a.getName() > b.getName() }).length; i++) { + var network_items = networks.filter(function(net) { return net.getWifiDeviceName() == radios[i].getName() }); + + for (var j = 0; j < network_items.length; j++) { + var net = network_items[j], + is_assoc = (net.getBSSID() != '00:00:00:00:00:00' && net.getChannel() && !net.isDisabled()), + chan = net.getChannel(), + freq = net.getFrequency(), + rate = net.getBitRate(); + + this.params.wifi.radios.push( + { + ssid : { + title: _('SSID'), + visible: true, + value: net.getActiveSSID() || '?' + }, + + actived : { + title: _('Active'), + visible: true, + value: !net.isDisabled() + }, + + chan : { + title: _('Channel'), + visible: true, + value: chan ? '%d (%.3f %s)'.format(chan, freq, _('GHz')) : '-' + }, + + rate : { + title: _('Bitrate'), + visible: true, + value: rate ? '%d %s'.format(rate, _('Mbit/s')) : '-' + }, + + bssid : { + title: _('BSSID'), + visible: true, + value: is_assoc ? (net.getActiveBSSID() || '-') : '-' + }, + + encryption : { + title: _('Encryption'), + visible: true, + value: is_assoc ? net.getActiveEncryption() : '-' + }, + + associations : { + title: _('Devices Connected'), + visible: true, + value: is_assoc ? (net.assoclist.length || '0') : 0 + } + } + ); + } + } + + for (var i = 0; i < networks.length; i++) { + for (var k = 0; k < networks[i].assoclist.length; k++) { + var bss = networks[i].assoclist[k], + name = hosthints.getHostnameByMACAddr(bss.mac); + + var progress_style; + var q = Math.min((bss.signal + 110) / 70 * 100, 100); + + if (q == 0 || q < 25) + progress_style = 'bg-danger'; + else if (q < 50) + progress_style = 'bg-warning'; + else if (q < 75) + progress_style = 'bg-success'; + else + progress_style = 'bg-success'; + + this.params.wifi.devices.push( + { + hostname : { + title: _('Hostname'), + visible: true, + value: name || '?' + }, + + ssid : { + title: _('SSID'), + visible: true, + value: networks[i].getActiveSSID() + }, + + progress : { + title: _('Channel'), + visible: true, + value: { + qualite: q, + style: progress_style + } + }, + + rate : { + title: _('Bitrate'), + visible: true, + value: { + rx: '%s'.format('%.2mB'.format(bss.rx.bytes)), + tx: '%s'.format('%.2mB'.format(bss.tx.bytes)), + } + } + } + ); + } + } + }, + + render: function(data) { + + this.params.wifi = { + radios: [], + devices: [] + }; + + this.renderUpdateData(data[0], data[1], data[2]); + + return this.renderHtml(); + } +}); diff --git a/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js new file mode 100644 index 000000000..c3e3b7027 --- /dev/null +++ b/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/index.js @@ -0,0 +1,110 @@ +'use strict'; +'require view'; +'require dom'; +'require poll'; +'require fs'; +'require network'; + +document.querySelector('head').appendChild(E('link', { + 'rel': 'stylesheet', + 'type': 'text/css', + 'href': L.resource('view/dashboard/css/custom.css') +})); + +function invokeIncludesLoad(includes) { + var tasks = [], has_load = false; + + for (var i = 0; i < includes.length; i++) { + if (typeof(includes[i].load) == 'function') { + tasks.push(includes[i].load().catch(L.bind(function() { + this.failed = true; + }, includes[i]))); + + has_load = true; + } + else { + tasks.push(null); + } + } + + return has_load ? Promise.all(tasks) : Promise.resolve(null); +} + +function startPolling(includes, containers) { + var step = function() { + return network.flushCache().then(function() { + return invokeIncludesLoad(includes); + }).then(function(results) { + for (var i = 0; i < includes.length; i++) { + var content = null; + + if (includes[i].failed) + continue; + + if (typeof(includes[i].render) == 'function') + content = includes[i].render(results ? results[i] : null); + else if (includes[i].content != null) + content = includes[i].content; + + if (content != null) { + + if (i > 1) { + dom.append(containers[1], content); + } else { + containers[i].parentNode.style.display = ''; + containers[i].parentNode.classList.add('fade-in'); + containers[i].parentNode.classList.add('Dashboard'); + dom.content(containers[i], content); + } + } + } + + var ssi = document.querySelector('div.includes'); + if (ssi) { + ssi.style.display = ''; + ssi.classList.add('fade-in'); + } + }); + }; + + return step().then(function() { + poll.add(step); + }); +} + +return view.extend({ + load: function() { + return L.resolveDefault(fs.list('/www' + L.resource('view/dashboard/include')), []).then(function(entries) { + return Promise.all(entries.filter(function(e) { + return (e.type == 'file' && e.name.match(/\.js$/)); + }).map(function(e) { + return 'view.dashboard.include.' + e.name.replace(/\.js$/, ''); + }).sort().map(function(n) { + return L.require(n); + })); + }); + }, + + render: function(includes) { + var rv = E([]), containers = []; + + for (var i = 0; i < includes.length - 1; i++) { + + var container = E('div', { 'class': 'section-content' }); + + rv.appendChild(E('div', { 'class': 'cbi-section-' + i, 'style': 'display:none' }, [ + container + ])); + + containers.push(container); + } + + return startPolling(includes, containers).then(function() { + return rv; + }); + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null +}); diff --git a/luci-mod-dashboard/po/fr/dashboard.po b/luci-mod-dashboard/po/fr/dashboard.po new file mode 100644 index 000000000..ee91c668b --- /dev/null +++ b/luci-mod-dashboard/po/fr/dashboard.po @@ -0,0 +1,223 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2022-02-19 07:53+0000\n" +"Last-Translator: Weblate Admin \n" +"Language-Team: French \n" +"Language: fr\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:165 +msgid "Active" +msgstr "Actif" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:368 +msgid "Architecture" +msgstr "Architecture" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:183 +msgid "BSSID" +msgstr "BSSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:177 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 +msgid "Bitrate" +msgstr "Débit" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:171 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:236 +msgid "Channel" +msgstr "Canal" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:277 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:293 +msgid "Connected" +msgstr "Connecté" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:13 +msgid "DHCP Devices" +msgstr "Périphériques DHCP" + +#: luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json:3 +msgid "Dashboard" +msgstr "Tableau de bord" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:136 +msgid "Devices" +msgstr "Périphériques" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:195 +msgid "Devices Connected" +msgstr "Périphériques connectés" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Down." +msgstr "En panne." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:131 +msgid "Download" +msgstr "Téléchargement" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:189 +msgid "Encryption" +msgstr "Chiffrement" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:373 +msgid "Firmware Version" +msgstr "Version du micrologiciel" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:173 +msgid "GHz" +msgstr "GHz" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:25 +msgid "Grant access to DHCP status display" +msgstr "Permettre l'accès à l'affichage de l'état DHCP" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:12 +msgid "Grant access to main status display" +msgstr "Permettre l'accès à l'affichage de l'état principal" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:3 +msgid "Grant access to the system route status" +msgstr "Permettre l’accès au status de routage" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:34 +msgid "Grant access to wireless status display" +msgstr "Permettre l'accès du status WIFI" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:30 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:83 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:224 +msgid "Hostname" +msgstr "Nom d'hôte" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:31 +msgid "IP Address" +msgstr "Adresse IP" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:283 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:116 +msgid "IPv4" +msgstr "IPv4" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:274 +msgid "IPv4 Internet" +msgstr "Internet IPv4" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:305 +msgid "IPv6" +msgstr "IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 +msgid "IPv6 Internet" +msgstr "Internet IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:299 +msgid "IPv6 prefix" +msgstr "Préfixe IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "Internet" +msgstr "Internet" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:358 +msgid "Kernel Version" +msgstr "Version du noyau" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:241 +msgid "Load" +msgstr "Charge" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:353 +msgid "Load Average" +msgstr "Charge moyenne" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:348 +msgid "Local Time" +msgstr "Heure locale" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:32 +msgid "MAC" +msgstr "MAC" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:121 +msgid "Mac" +msgstr "Mac" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:179 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:363 +msgid "Model" +msgstr "Modèle" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:195 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:202 +msgid "Not connected" +msgstr "Non connecté" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:253 +msgid "Proxy traffic" +msgstr "Trafic proxy" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:230 +msgid "SSID" +msgstr "SSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:232 +msgid "Server" +msgstr "Serveur" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 +msgid "Signal" +msgstr "Signal" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "System" +msgstr "Système" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:265 +msgid "Total traffic" +msgstr "Trafic total" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Up." +msgstr "En ligne." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:126 +msgid "Upload" +msgstr "Téléverser" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:247 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:343 +msgid "Uptime" +msgstr "Temps de service" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:259 +msgid "VPN traffic" +msgstr "Trafic VPN" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:235 +msgid "Version" +msgstr "Version" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:9 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 +msgid "Wireless" +msgstr "Sans-fil" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "no" +msgstr "non" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "yes" +msgstr "oui" diff --git a/luci-mod-dashboard/po/ru/dashboard.po b/luci-mod-dashboard/po/ru/dashboard.po new file mode 100644 index 000000000..466e9ab42 --- /dev/null +++ b/luci-mod-dashboard/po/ru/dashboard.po @@ -0,0 +1,224 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-16 10:51+0000\n" +"Last-Translator: Dmitry Galenko \n" +"Language-Team: Russian \n" +"Language: ru\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:165 +msgid "Active" +msgstr "Активный" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:368 +msgid "Architecture" +msgstr "Процессор" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:183 +msgid "BSSID" +msgstr "BSSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:177 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 +msgid "Bitrate" +msgstr "Скорость" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:171 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:236 +msgid "Channel" +msgstr "Канал" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:277 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:293 +msgid "Connected" +msgstr "Подключено" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:13 +msgid "DHCP Devices" +msgstr "Устройства DHCP" + +#: luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json:3 +msgid "Dashboard" +msgstr "Дашборд" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:136 +msgid "Devices" +msgstr "Устройства" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:195 +msgid "Devices Connected" +msgstr "Подключенные устройства" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Down." +msgstr "Не работает." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:131 +msgid "Download" +msgstr "Получение" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:189 +msgid "Encryption" +msgstr "Шифрование" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:373 +msgid "Firmware Version" +msgstr "Версия ПО" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:173 +msgid "GHz" +msgstr "GHz" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:25 +msgid "Grant access to DHCP status display" +msgstr "Разрешить просмотр информации о DHCP" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:12 +msgid "Grant access to main status display" +msgstr "Разрешить просмотр информации основной информации" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:3 +msgid "Grant access to the system route status" +msgstr "Разрешить просмотр информации о маршрутах" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:34 +msgid "Grant access to wireless status display" +msgstr "Разрешить просмотр информации о беспроводных сетях" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:30 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:83 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:224 +msgid "Hostname" +msgstr "Имя хоста" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:31 +msgid "IP Address" +msgstr "IP-адрес" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:283 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:116 +msgid "IPv4" +msgstr "IPv4" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:274 +msgid "IPv4 Internet" +msgstr "IPv4 Internet" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:305 +msgid "IPv6" +msgstr "IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 +msgid "IPv6 Internet" +msgstr "IPv6 Internet" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:299 +msgid "IPv6 prefix" +msgstr "Префикс IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "Internet" +msgstr "Internet" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:358 +msgid "Kernel Version" +msgstr "Версия ядра" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:241 +msgid "Load" +msgstr "Загрузка" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:353 +msgid "Load Average" +msgstr "Средняя загрузка" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:348 +msgid "Local Time" +msgstr "Время хоста" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:32 +msgid "MAC" +msgstr "MAC" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:121 +msgid "Mac" +msgstr "Mac" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:179 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:363 +msgid "Model" +msgstr "Модель" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:195 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:202 +msgid "Not connected" +msgstr "Не подключено" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:253 +msgid "Proxy traffic" +msgstr "Трафик через прокси" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:230 +msgid "SSID" +msgstr "SSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:232 +msgid "Server" +msgstr "Сервер" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 +msgid "Signal" +msgstr "Сигнал" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "System" +msgstr "Система" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:265 +msgid "Total traffic" +msgstr "Трафик всего" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Up." +msgstr "Работает." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:126 +msgid "Upload" +msgstr "Отправка" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:247 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:343 +msgid "Uptime" +msgstr "Uptime" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:259 +msgid "VPN traffic" +msgstr "Трафик VPN" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:235 +msgid "Version" +msgstr "Версия" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:9 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 +msgid "Wireless" +msgstr "Безпроводной" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "no" +msgstr "нет" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "yes" +msgstr "да" diff --git a/luci-mod-dashboard/po/templates/dashboard.pot b/luci-mod-dashboard/po/templates/dashboard.pot new file mode 100644 index 000000000..018a75101 --- /dev/null +++ b/luci-mod-dashboard/po/templates/dashboard.pot @@ -0,0 +1,214 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:165 +msgid "Active" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:368 +msgid "Architecture" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:183 +msgid "BSSID" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:177 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 +msgid "Bitrate" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:171 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:236 +msgid "Channel" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:277 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:293 +msgid "Connected" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:13 +msgid "DHCP Devices" +msgstr "" + +#: luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json:3 +msgid "Dashboard" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:136 +msgid "Devices" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:195 +msgid "Devices Connected" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Down." +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:131 +msgid "Download" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:189 +msgid "Encryption" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:373 +msgid "Firmware Version" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:173 +msgid "GHz" +msgstr "" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:25 +msgid "Grant access to DHCP status display" +msgstr "" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:12 +msgid "Grant access to main status display" +msgstr "" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:3 +msgid "Grant access to the system route status" +msgstr "" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:34 +msgid "Grant access to wireless status display" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:30 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:83 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:224 +msgid "Hostname" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:31 +msgid "IP Address" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:283 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:116 +msgid "IPv4" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:274 +msgid "IPv4 Internet" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:305 +msgid "IPv6" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 +msgid "IPv6 Internet" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:299 +msgid "IPv6 prefix" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "Internet" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:358 +msgid "Kernel Version" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:241 +msgid "Load" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:353 +msgid "Load Average" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:348 +msgid "Local Time" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:32 +msgid "MAC" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:121 +msgid "Mac" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:179 +msgid "Mbit/s" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:363 +msgid "Model" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:195 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:202 +msgid "Not connected" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:253 +msgid "Proxy traffic" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:230 +msgid "SSID" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:232 +msgid "Server" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 +msgid "Signal" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "System" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:265 +msgid "Total traffic" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Up." +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:126 +msgid "Upload" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:247 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:343 +msgid "Uptime" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:259 +msgid "VPN traffic" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:235 +msgid "Version" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:9 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 +msgid "Wireless" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "no" +msgstr "" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "yes" +msgstr "" diff --git a/luci-mod-dashboard/po/zh_Hans/dashboard.po b/luci-mod-dashboard/po/zh_Hans/dashboard.po new file mode 100644 index 000000000..4da85b2c8 --- /dev/null +++ b/luci-mod-dashboard/po/zh_Hans/dashboard.po @@ -0,0 +1,223 @@ +msgid "" +msgstr "" +"PO-Revision-Date: 2021-06-02 09:51+0000\n" +"Last-Translator: antrouter \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_Hans\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:165 +msgid "Active" +msgstr "激活" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:368 +msgid "Architecture" +msgstr "构架" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:183 +msgid "BSSID" +msgstr "BSSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:177 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:245 +msgid "Bitrate" +msgstr "比特率" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:171 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:236 +msgid "Channel" +msgstr "频道" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:277 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:293 +msgid "Connected" +msgstr "连接" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:13 +msgid "DHCP Devices" +msgstr "DHCP 设备" + +#: luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json:3 +msgid "Dashboard" +msgstr "仪表盘" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:136 +msgid "Devices" +msgstr "设备" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:195 +msgid "Devices Connected" +msgstr "连接的设备" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Down." +msgstr "下." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:131 +msgid "Download" +msgstr "下载" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:189 +msgid "Encryption" +msgstr "加密" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:373 +msgid "Firmware Version" +msgstr "固件版本" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:173 +msgid "GHz" +msgstr "Ghz" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:25 +msgid "Grant access to DHCP status display" +msgstr "授予访问 DHCP 状态显示的权限" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:12 +msgid "Grant access to main status display" +msgstr "授予访问主状态显示的权限" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:3 +msgid "Grant access to the system route status" +msgstr "授予对系统路由状态的访问权限" + +#: luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json:34 +msgid "Grant access to wireless status display" +msgstr "授予访问无线状态显示的权限" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:30 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:83 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:224 +msgid "Hostname" +msgstr "主机名" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:31 +msgid "IP Address" +msgstr "IP地址" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:283 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:116 +msgid "IPv4" +msgstr "IPv4" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:274 +msgid "IPv4 Internet" +msgstr "IPv4互联网" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:305 +msgid "IPv6" +msgstr "IPv6" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:290 +msgid "IPv6 Internet" +msgstr "IPv6互联网" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:299 +msgid "IPv6 prefix" +msgstr "IPv6前缀" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "Internet" +msgstr "互联网" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:358 +msgid "Kernel Version" +msgstr "内核版本" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:241 +msgid "Load" +msgstr "负载" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:353 +msgid "Load Average" +msgstr "平均负载" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:348 +msgid "Local Time" +msgstr "本地时间" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:32 +msgid "MAC" +msgstr "MAC地址" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:121 +msgid "Mac" +msgstr "mac地址" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:179 +msgid "Mbit/s" +msgstr "Mbit/s" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:363 +msgid "Model" +msgstr "型号" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:195 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:202 +msgid "Not connected" +msgstr "未连接" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:253 +msgid "Proxy traffic" +msgstr "代理流量" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:159 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:230 +msgid "SSID" +msgstr "SSID" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:232 +msgid "Server" +msgstr "服务器" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:85 +msgid "Signal" +msgstr "信号" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:41 +msgid "System" +msgstr "系统" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:265 +msgid "Total traffic" +msgstr "总流量" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:86 +msgid "Up." +msgstr "上." + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/20_lan.js:126 +msgid "Upload" +msgstr "上传" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:247 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:343 +msgid "Uptime" +msgstr "开机时间" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:259 +msgid "VPN traffic" +msgstr "VPN流量" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:235 +msgid "Version" +msgstr "版本" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:9 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:84 +msgid "Wireless" +msgstr "无线" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "no" +msgstr "否" + +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:101 +#: luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:65 +msgid "yes" +msgstr "是" diff --git a/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json b/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json new file mode 100644 index 000000000..88c4a4c4d --- /dev/null +++ b/luci-mod-dashboard/root/usr/share/luci/menu.d/luci-mod-dashboard.json @@ -0,0 +1,13 @@ +{ + "admin/dashboard": { + "title": "Dashboard", + "order": 5, + "action": { + "type": "view", + "path": "dashboard/index" + }, + "depends": { + "acl": [ "luci-mod-dashboard-index" ] + } + } +} diff --git a/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json b/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json new file mode 100644 index 000000000..1f331e7b4 --- /dev/null +++ b/luci-mod-dashboard/root/usr/share/rpcd/acl.d/luci-mod-dashboard.json @@ -0,0 +1,41 @@ +{ + "luci-mod-dashboard-routes": { + "description": "Grant access to the system route status", + "read": { + "ubus": { + "file": [ "exec" ] + } + } + }, + + "luci-mod-dashboard-index": { + "description": "Grant access to main status display", + "read": { + "file": { + "/www/luci-static/resources/view/status/include": [ "list" ] + }, + "ubus": { + "file": [ "list", "read" ], + "system": [ "board", "info" ] + } + } + }, + + "luci-mod-dashboard-index-dhcp": { + "description": "Grant access to DHCP status display", + "read": { + "ubus": { + "luci-rpc": [ "getDHCPLeases" ] + } + } + }, + + "luci-mod-dashboard-index-wifi": { + "description": "Grant access to wireless status display", + "read": { + "ubus": { + "iwinfo": [ "assoclist" ] + } + } + } +} diff --git a/luci-mod-network/Makefile b/luci-mod-network/Makefile new file mode 100644 index 000000000..df9682b71 --- /dev/null +++ b/luci-mod-network/Makefile @@ -0,0 +1,19 @@ +# +# Copyright (C) 2008-2014 The LuCI Team +# Copyright (C) 2020-2021 Ycarus (Yannick Chabanois) for OpenMPTCProuter +# +# This is free software, licensed under the Apache License, Version 2.0 . +# +# From https://github.com/openwrt/luci/commit/29fe3f5fdad6bc7c72799adff22847a6e257f7c0 + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI Network Administration +LUCI_DEPENDS:=+luci-base +libiwinfo-lua +rpcd-mod-iwinfo + +PKG_LICENSE:=Apache-2.0 + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature + diff --git a/luci-mod-network/htdocs/luci-static/resources/tools/network.js b/luci-mod-network/htdocs/luci-static/resources/tools/network.js new file mode 100644 index 000000000..ab0680e2f --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/tools/network.js @@ -0,0 +1,1476 @@ +'use strict'; +'require fs'; +'require ui'; +'require dom'; +'require uci'; +'require form'; +'require network'; +'require baseclass'; +'require validation'; +'require tools.widgets as widgets'; + +function validateAddr(section_id, value) { + if (value == '') + return true; + + var ipv6 = /6$/.test(this.section.formvalue(section_id, 'mode')), + addr = ipv6 ? validation.parseIPv6(value) : validation.parseIPv4(value); + + return addr ? true : (ipv6 ? _('Expecting a valid IPv6 address') : _('Expecting a valid IPv4 address')); +} + +function validateQoSMap(section_id, value) { + if (value == '') + return true; + + var m = value.match(/^(\d+):(\d+)$/); + + if (!m || +m[1] > 0xFFFFFFFF || +m[2] > 0xFFFFFFFF) + return _('Expecting two priority values separated by a colon'); + + return true; +} + +function deviceSectionExists(section_id, devname) { + var exists = false; + + uci.sections('network', 'device', function(ss) { + exists = exists || ( + ss['.name'] != section_id && + ss.name == devname + ); + }); + + return exists; +} + +function isBridgePort(dev) { + if (!dev) + return false; + + if (dev.isBridgePort()) + return true; + + var isPort = false; + + uci.sections('network', null, function(s) { + if (s['.type'] != 'interface' && s['.type'] != 'device') + return; + + if (s.type == 'bridge' && L.toArray(s.ifname).indexOf(dev.getName()) > -1) + isPort = true; + }); + + return isPort; +} + +function updateDevBadge(node, dev) { + var type = dev.getType(), + up = dev.getCarrier(); + + dom.content(node, [ + E('img', { + 'class': 'middle', + 'src': L.resource('icons/%s%s.png').format(type, up ? '' : '_disabled') + }), + '\x0a', dev.getName() + ]); + + return node; +} + +function renderDevBadge(dev) { + return updateDevBadge(E('span', { + 'class': 'ifacebadge port-status-device', + 'style': 'font-weight:normal', + 'data-device': dev.getName() + }), dev); +} + +function updatePortStatus(node, dev) { + var carrier = dev.getCarrier(), + duplex = dev.getDuplex(), + speed = dev.getSpeed(), + desc, title; + + if (carrier && speed > 0 && duplex != null) { + desc = '%d%s'.format(speed, duplex == 'full' ? 'FD' : 'HD'); + title = '%s, %d MBit/s, %s'.format(_('Connected'), speed, duplex == 'full' ? _('full-duplex') : _('half-duplex')); + } + else if (carrier) { + desc = _('Connected'); + } + else { + desc = _('no link'); + } + + dom.content(node, [ + E('img', { + 'class': 'middle', + 'src': L.resource('icons/port_%s.png').format(carrier ? 'up' : 'down') + }), + '\x0a', desc + ]); + + if (title) + node.setAttribute('data-tooltip', title); + else + node.removeAttribute('data-tooltip'); + + return node; +} + +function renderPortStatus(dev) { + return updatePortStatus(E('span', { + 'class': 'ifacebadge port-status-link', + 'data-device': dev.getName() + }), dev); +} + +function updatePlaceholders(opt, section_id) { + var dev = network.instantiateDevice(opt.getUIElement(section_id).getValue()); + + for (var i = 0, co; (co = opt.section.children[i]) != null; i++) { + if (co !== opt) { + switch (co.option) { + case 'mtu': + case 'mtu6': + co.getUIElement(section_id).setPlaceholder(dev.getMTU()); + break; + + case 'macaddr': + co.getUIElement(section_id).setPlaceholder(dev.getMAC()); + break; + + case 'txqueuelen': + co.getUIElement(section_id).setPlaceholder(dev._devstate('qlen')); + break; + } + } + } +} + +var cbiFlagTristate = form.ListValue.extend({ + __init__: function(/* ... */) { + this.super('__init__', arguments); + this.keylist = [ '', '0!', '1!' ]; + this.vallist = [ _('automatic'), _('disabled'), _('enabled') ]; + }, + + load: function(section_id) { + var invert = false, sysfs = this.sysfs; + + if (sysfs) { + if (sysfs.charAt(0) == '!') { + invert = true; + sysfs = sysfs.substring(1); + } + + return L.resolveDefault(fs.read(sysfs), '').then(L.bind(function(res) { + res = (res || '').trim(); + + if (res == '0') + this.sysfs_default = invert; + else if (res == '1') + this.sysfs_default = !invert; + + return this.super('load', [section_id]); + }, this)); + } + + return this.super('load', [section_id]); + }, + + write: function(section_id, formvalue) { + if (formvalue == '1!') + return this.super('write', [section_id, '1']); + else if (formvalue == '0!') + return this.super('write', [section_id, '0']); + else + return this.super('remove', [section_id]); + }, + + renderWidget: function(section_id, option_index, cfgvalue) { + var sysdef = this.sysfs_default; + + if (this.sysfs_default !== null) { + this.keylist[0] = sysdef ? '1' : '0'; + this.vallist[0] = sysdef ? _('automatic (enabled)') : _('automatic (disabled)'); + } + + return this.super('renderWidget', [section_id, option_index, cfgvalue ? cfgvalue + '!' : null]); + } +}); + + +var cbiTagValue = form.Value.extend({ + renderWidget: function(section_id, option_index, cfgvalue) { + var widget = new ui.Dropdown(cfgvalue || ['-'], { + '-': E([], [ + E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ '—' ]), + E('span', { 'class': 'hide-close' }, [ _('Not Member', 'VLAN port state') ]) + ]), + 'u': E([], [ + E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ 'U' ]), + E('span', { 'class': 'hide-close' }, [ _('Untagged', 'VLAN port state') ]) + ]), + 't': E([], [ + E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ 'T' ]), + E('span', { 'class': 'hide-close' }, [ _('Tagged', 'VLAN port state') ]) + ]), + '*': E([], [ + E('span', { 'class': 'hide-open', 'style': 'font-family:monospace' }, [ '*' ]), + E('span', { 'class': 'hide-close' }, [ _('Is Primary VLAN', 'VLAN port state') ]) + ]) + }, { + id: this.cbid(section_id), + sort: [ '-', 'u', 't', '*' ], + optional: false, + multiple: true + }); + + var field = this; + + widget.toggleItem = function(sb, li, force_state) { + var lis = li.parentNode.querySelectorAll('li'), + toggle = ui.Dropdown.prototype.toggleItem; + + toggle.apply(this, [sb, li, force_state]); + + if (force_state != null) + return; + + switch (li.getAttribute('data-value')) + { + case '-': + if (li.hasAttribute('selected')) { + for (var i = 0; i < lis.length; i++) { + switch (lis[i].getAttribute('data-value')) { + case '-': + break; + + case '*': + toggle.apply(this, [sb, lis[i], false]); + lis[i].setAttribute('unselectable', ''); + break; + + default: + toggle.apply(this, [sb, lis[i], false]); + } + } + } + break; + + case 't': + case 'u': + if (li.hasAttribute('selected')) { + for (var i = 0; i < lis.length; i++) { + switch (lis[i].getAttribute('data-value')) { + case li.getAttribute('data-value'): + break; + + case '*': + lis[i].removeAttribute('unselectable'); + break; + + default: + toggle.apply(this, [sb, lis[i], false]); + } + } + } + else { + toggle.apply(this, [sb, li, true]); + } + break; + + case '*': + if (li.hasAttribute('selected')) { + var section_ids = field.section.cfgsections(); + + for (var i = 0; i < section_ids.length; i++) { + var other_widget = field.getUIElement(section_ids[i]), + other_value = L.toArray(other_widget.getValue()); + + if (other_widget === this) + continue; + + var new_value = other_value.filter(function(v) { return v != '*' }); + + if (new_value.length == other_value.length) + continue; + + other_widget.setValue(new_value); + break; + } + } + } + }; + + var node = widget.render(); + + node.style.minWidth = '4em'; + + if (cfgvalue == '-') + node.querySelector('li[data-value="*"]').setAttribute('unselectable', ''); + + return E('div', { 'style': 'display:inline-block' }, node); + }, + + cfgvalue: function(section_id) { + var ports = L.toArray(uci.get('network', section_id, 'ports')); + + for (var i = 0; i < ports.length; i++) { + var s = ports[i].split(/:/); + + if (s[0] != this.port) + continue; + + var t = /t/.test(s[1] || '') ? 't' : 'u'; + + return /\x2a/.test(s[1] || '') ? [t, '*'] : [t]; + } + + return ['-']; + }, + + write: function(section_id, value) { + var ports = []; + + for (var i = 0; i < this.section.children.length; i++) { + var opt = this.section.children[i]; + + if (opt.port) { + var val = L.toArray(opt.formvalue(section_id)).join(''); + + switch (val) { + case '-': + break; + + case 'u': + ports.push(opt.port); + break; + + default: + ports.push('%s:%s'.format(opt.port, val)); + break; + } + } + } + + uci.set('network', section_id, 'ports', ports.length ? ports : null); + }, + + remove: function() {} +}); + +return baseclass.extend({ + + protocols: [ // name, proto number, description + { n: 'hopopt', i: 0, d: 'HOPOPT' }, + { n: 'icmp', i: 1, d: 'ICMP' }, + { n: 'igmp', i: 2, d: 'IGMP' }, + { n: 'ggp', i: 3, d: 'GGP' }, + { n: 'ipencap', i: 4, d: 'IP-ENCAP' }, + { n: 'st', i: 5, d: 'ST' }, + { n: 'tcp', i: 6, d: 'TCP' }, + { n: 'egp', i: 8, d: 'EGP' }, + { n: 'igp', i: 9, d: 'IGP' }, + { n: 'pup', i: 12, d: 'PUP' }, + { n: 'udp', i: 17, d: 'UDP' }, + { n: 'hmp', i: 20, d: 'HMP' }, + { n: 'xns-idp', i: 22, d: 'XNS-IDP' }, + { n: 'rdp', i: 27, d: 'RDP' }, + { n: 'iso-tp4', i: 29, d: 'ISO-TP4' }, + { n: 'dccp', i: 33, d: 'DCCP' }, + { n: 'xtp', i: 36, d: 'XTP' }, + { n: 'ddp', i: 37, d: 'DDP' }, + { n: 'idpr-cmtp', i: 38, d: 'IDPR-CMTP' }, + { n: 'ipv6', i: 41, d: 'IPv6' }, + { n: 'ipv6-route', i: 43, d: 'IPv6-Route' }, + { n: 'ipv6-frag', i: 44, d: 'IPv6-Frag' }, + { n: 'idrp', i: 45, d: 'IDRP' }, + { n: 'rsvp', i: 46, d: 'RSVP' }, + { n: 'gre', i: 47, d: 'GRE' }, + { n: 'esp', i: 50, d: 'IPSEC-ESP' }, + { n: 'ah', i: 51, d: 'IPSEC-AH' }, + { n: 'skip', i: 57, d: 'SKIP' }, + { n: 'icmpv6', i: 58, d: 'IPv6-ICMP' }, + { n: 'ipv6-nonxt', i: 59, d: 'IPv6-NoNxt' }, + { n: 'ipv6-opts', i: 60, d: 'IPv6-Opts' }, + { n: 'rspf', i: 73, d: 'CPHB' }, + { n: 'vmtp', i: 81, d: 'VMTP' }, + { n: 'eigrp', i: 88, d: 'EIGRP' }, + { n: 'ospf', i: 89, d: 'OSPFIGP' }, + { n: 'ax.25', i: 93, d: 'AX.25' }, + { n: 'ipip', i: 94, d: 'IPIP' }, + { n: 'etherip', i: 97, d: 'ETHERIP' }, + { n: 'encap', i: 98, d: 'ENCAP' }, + { n: 'pim', i: 103, d: 'PIM' }, + { n: 'ipcomp', i: 108, d: 'IPCOMP' }, + { n: 'vrrp', i: 112, d: 'VRRP' }, + { n: 'l2tp', i: 115, d: 'L2TP' }, + { n: 'isis', i: 124, d: 'ISIS' }, + { n: 'sctp', i: 132, d: 'SCTP' }, + { n: 'fc', i: 133, d: 'FC' }, + { n: 'mobility-header', i: 135, d: 'Mobility-Header' }, + { n: 'udplite', i: 136, d: 'UDPLite' }, + { n: 'mpls-in-ip', i: 137, d: 'MPLS-in-IP' }, + { n: 'manet', i: 138, d: 'MANET' }, + { n: 'hip', i: 139, d: 'HIP' }, + { n: 'shim6', i: 140, d: 'Shim6' }, + { n: 'wesp', i: 141, d: 'WESP' }, + { n: 'rohc', i: 142, d: 'ROHC' }, + ], + + replaceOption: function(s, tabName, optionClass, optionName, optionTitle, optionDescription) { + var o = s.getOption(optionName); + + if (o) { + if (o.tab) { + s.tabs[o.tab].children = s.tabs[o.tab].children.filter(function(opt) { + return opt.option != optionName; + }); + } + + s.children = s.children.filter(function(opt) { + return opt.option != optionName; + }); + } + + return s.taboption(tabName, optionClass, optionName, optionTitle, optionDescription); + }, + + addDeviceOptions: function(s, dev, isNew) { + var parent_dev = dev ? dev.getParent() : null, + devname = dev ? dev.getName() : null, + o, ss; + + s.tab('devgeneral', _('General device options')); + s.tab('devadvanced', _('Advanced device options')); + s.tab('brport', _('Bridge port specific options')); + s.tab('bridgevlan', _('Bridge VLAN filtering')); + + o = this.replaceOption(s, 'devgeneral', form.ListValue, 'type', _('Device type'), + !L.hasSystemFeature('bonding') && isNew ? ''+ + _('For bonding, install %s').format('kmod-bonding') + '' : null); + o.readonly = !isNew; + o.value('', _('Network device')); + if (L.hasSystemFeature('bonding')) { + o.value('bonding', _('Bonding/Aggregation device')); + } + o.value('bridge', _('Bridge device')); + o.value('8021q', _('VLAN (802.1q)')); + o.value('8021ad', _('VLAN (802.1ad)')); + o.value('macvlan', _('MAC VLAN')); + o.value('veth', _('Virtual Ethernet')); + o.validate = function(section_id, value) { + if (value == 'bonding' || value == 'bridge' || value == 'veth') + updatePlaceholders(this.section.getOption('name_complex'), section_id); + + return true; + }; + + o = this.replaceOption(s, 'devgeneral', widgets.DeviceSelect, 'name_simple', _('Existing device')); + o.readonly = !isNew; + o.rmempty = false; + o.noaliases = true; + o.default = (dev ? dev.getName() : ''); + o.ucioption = 'name'; + o.filter = function(section_id, value) { + var dev = network.instantiateDevice(value); + return !deviceSectionExists(section_id, value) && (dev.getType() != 'wifi' || dev.isUp()); + }; + o.validate = function(section_id, value) { + updatePlaceholders(this, section_id); + + return deviceSectionExists(section_id, value) + ? _('A configuration for the device "%s" already exists').format(value) : true; + }; + o.onchange = function(ev, section_id, values) { + updatePlaceholders(this, section_id); + }; + o.depends('type', ''); + + o = this.replaceOption(s, 'devgeneral', widgets.DeviceSelect, 'ifname_single', _('Base device')); + o.readonly = !isNew; + o.rmempty = false; + o.noaliases = true; + o.default = (dev ? dev.getName() : '').match(/^.+\.\d+$/) ? dev.getName().replace(/\.\d+$/, '') : ''; + o.ucioption = 'ifname'; + o.filter = function(section_id, value) { + var dev = network.instantiateDevice(value); + return (dev.getType() != 'wifi' || dev.isUp()); + }; + o.validate = function(section_id, value) { + updatePlaceholders(this, section_id); + + if (isNew) { + var type = this.section.formvalue(section_id, 'type'), + name = this.section.getUIElement(section_id, 'name_complex'); + + if (type == 'macvlan' && value && name && !name.isChanged()) { + var i = 0; + + while (deviceSectionExists(section_id, '%smac%d'.format(value, i))) + i++; + + name.setValue('%smac%d'.format(value, i)); + name.triggerValidation(); + } + } + + return true; + }; + o.onchange = function(ev, section_id, values) { + updatePlaceholders(this, section_id); + }; + o.depends('type', '8021q'); + o.depends('type', '8021ad'); + o.depends('type', 'macvlan'); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'vid', _('VLAN ID')); + o.readonly = !isNew; + o.datatype = 'range(1, 4094)'; + o.rmempty = false; + o.default = (dev ? dev.getName() : '').match(/^.+\.\d+$/) ? dev.getName().replace(/^.+\./, '') : ''; + o.validate = function(section_id, value) { + var base = this.section.formvalue(section_id, 'ifname_single'), + vid = this.section.formvalue(section_id, 'vid'), + name = this.section.getUIElement(section_id, 'name_complex'); + + if (base && vid && name && !name.isChanged() && isNew) { + name.setValue('%s.%d'.format(base, vid)); + name.triggerValidation(); + } + + return true; + }; + o.depends('type', '8021q'); + o.depends('type', '8021ad'); + + o = this.replaceOption(s, 'devgeneral', form.ListValue, 'mode', _('Mode')); + o.value('vepa', _('VEPA (Virtual Ethernet Port Aggregator)', 'MACVLAN mode')); + o.value('private', _('Private (Prevent communication between MAC VLANs)', 'MACVLAN mode')); + o.value('bridge', _('Bridge (Support direct communication between MAC VLANs)', 'MACVLAN mode')); + o.value('passthru', _('Pass-through (Mirror physical device to single MAC VLAN)', 'MACVLAN mode')); + o.depends('type', 'macvlan'); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'name_complex', _('Device name')); + o.rmempty = false; + o.datatype = 'maxlength(15)'; + o.readonly = !isNew; + o.ucioption = 'name'; + o.validate = function(section_id, value) { + var dev = network.instantiateDevice(value); + + if (deviceSectionExists(section_id, value) || (isNew && (dev.dev || {}).idx)) + return _('The device name "%s" is already taken').format(value); + + return true; + }; + o.depends({ type: '', '!reverse': true }); + + o = this.replaceOption(s, 'devadvanced', form.DynamicList, 'ingress_qos_mapping', _('Ingress QoS mapping'), _('Defines a mapping of VLAN header priority to the Linux internal packet priority on incoming frames')); + o.rmempty = true; + o.validate = validateQoSMap; + o.depends('type', '8021q'); + o.depends('type', '8021ad'); + + o = this.replaceOption(s, 'devadvanced', form.DynamicList, 'egress_qos_mapping', _('Egress QoS mapping'), _('Defines a mapping of Linux internal packet priority to VLAN header priority but for outgoing frames')); + o.rmempty = true; + o.validate = validateQoSMap; + o.depends('type', '8021q'); + o.depends('type', '8021ad'); + + o = this.replaceOption(s, 'devgeneral', widgets.DeviceSelect, 'ifname_multi-bond', _('Aggregation ports')); + o.size = 10; + o.rmempty = true; + o.multiple = true; + o.noaliases = true; + o.nobridges = true; + o.ucioption = 'ports'; + o.default = L.toArray(dev ? dev.getPorts() : null).filter(function(p) { return p.getType() != 'wifi' }).map(function(p) { return p.getName() }); + o.filter = function(section_id, device_name) { + var bridge_name = uci.get('network', section_id, 'name'), + choice_dev = network.instantiateDevice(device_name), + parent_dev = choice_dev.getParent(); + + /* only show wifi networks which are already present in "option ifname" */ + if (choice_dev.getType() == 'wifi') { + var ifnames = L.toArray(uci.get('network', section_id, 'ports')); + + for (var i = 0; i < ifnames.length; i++) + if (ifnames[i] == device_name) + return true; + + return false; + } + + return (!parent_dev || parent_dev.getName() != bridge_name); + }; + o.description = _('Specifies the wired ports to attach to this bonding.') + o.onchange = function(ev, section_id, values) { + ss.updatePorts(values); + + return ss.parse().then(function() { + ss.redraw(); + }); + }; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devgeneral', form.ListValue, 'policy', _('Bonding Policy')); + o.default = 'active-backup'; + o.value('active-backup', _('Active backup')); + o.value('balance-rr', _('Round robin')); + o.value('balance-xor', _('Transmit hash - balance-xor')); + o.value('broadcast', _('Broadcast')); + o.value('802.3ad', _('LACP - 802.3ad')); + o.value('balance-tlb', _('Adaptive transmit load balancing')); + o.value('balance-alb', _('Adaptive load balancing')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'active-backup': + case '0': + return 'active-backup'; + + case 'balance-rr': + case '1': + return 'balance-rr'; + + case 'balance-xor': + case '2': + return 'balance-xor'; + + case 'broadcast': + case '3': + return 'broadcast'; + + case '802.3ad': + case '4': + return '802.3ad'; + + case 'balance-tlb': + case '5': + return 'balance-tlb'; + + case 'balance-alb': + case '6': + return 'balance-alb'; + + default: + return 'active-backup'; + } + }; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devgeneral', form.Flag, 'all_ports_active', _('All ports active'), _('Allow receiving on inactive ports')); + o.default = o.disabled; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devgeneral', widgets.DeviceSelect, '_net_device_primary', _('Primary Device')); + o.ucioption = 'primary'; + o.rmempty = true; + o.noaliases = true; + o.nobridges = true; + o.optional = false; + o.depends({'type': 'bonding', 'policy': 'active-backup'}); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'xmit_hash_policy', _('Slave selection hash policy')); + o.default = ''; + o.value('', ''); + o.value('layer2', _('Layer 2')); + o.value('layer2+3', _('Layer 2+3')); + o.value('layer3+4', _('Layer 3+4')); + o.value('encap2+3', _('Encap 2+3')); + o.value('encap3+4', _('Encap 3+4')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'layer2': + case '0': + return 'layer2'; + + case 'layer2+3': + case '1': + return 'layer2+3'; + + case 'layer3+4': + case '2': + return 'layer3+4'; + + case 'encap2+3': + case '4': + return 'encap2+3'; + + case 'encap3+4': + case '5': + return 'encap3+4'; + + default: + return ''; + } + }; + o.depends({'type': 'bonding', 'policy': 'balance-xor'}); + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + o.depends({'type': 'bonding', 'policy': 'balance-tlb'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'ad_actor_system', _('MAC address for LACPDUs')); + o.description = _('This specifies the mac-address for the actor in protocol packet exchanges (LACPDUs). The value cannot be NULL or multicast.'); + o.datatype = 'macaddr'; + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'ad_actor_sys_prio', _('Priority')); + o.description = _('This specifies the AD system priority'); + o.placeholder = '65535'; + o.datatype = 'range(1, 65535)'; + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'ad_select', _('802.3ad aggregation logic')); + o.default = ''; + o.value('', ''); + o.value('stable', _('Stable')); + o.value('bandwidth', _('Bandwidth')); + o.value('count', _('Count')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'stable': + case '0': + return 'stable'; + + case 'bandwidth': + case '1': + return 'bandwidth'; + + case 'count': + case '2': + return 'count'; + + default: + return ''; + } + }; + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'lacp_rate', _('802.3ad LACPDU packet rate')); + o.default = ''; + o.value('', ''); + o.value('slow', _('Slow (every 30 seconds)')); + o.value('fast', _('Fast (every second)')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'slow': + case '0': + return 'slow'; + + case 'fast': + case '1': + return 'fast'; + + default: + return ''; + } + }; + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'min_links', _('Min Links'), _('Minimum number of active links')); + o.placeholder = '1'; + o.datatype = 'uinteger'; + o.depends({'type': 'bonding', 'policy': '802.3ad'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'packets_per_slave', _('Packets per slave')); + o.description = _('Number of packets to transmit through a slave before moving to the next one. Slave is chosen at random when 0.'); + o.placeholder = '1'; + o.datatype = 'range(1, 65535)'; + o.depends({'type': 'bonding', 'policy': 'balance-rr'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'lp_interval', _('Learning packets Interval')); + o.description = _('Number of seconds between sent learning packets'); + o.placeholder = '1'; + o.datatype = 'uinteger'; + o.depends({'type': 'bonding', 'policy': 'balance-tlb'}); + o.depends({'type': 'bonding', 'policy': 'balance-alb'}); + + o = this.replaceOption(s, 'devgeneral', form.Flag, 'dynamic_lb', _('Dynamic load balance'), _('distribute traffic according to port load')); + o.default = o.disabled; + o.depends({'type': 'bonding', 'policy': 'balance-tlb'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'resend_igmp', _('IGMP reports')); + o.description = _('Specifies the number of IGMP membership reports to be issued after a failover event'); + o.placeholder = '1'; + o.datatype = 'range(0, 255)'; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'num_peer_notif', _('Peer notifications')); + o.description = _('Specify the number of peer notifications to be issued after a failover event.'); + o.placeholder = '1'; + o.datatype = 'range(0, 255)'; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'primary_reselect', _('Primary port reselection policy')); + o.default = ''; + o.value('', ''); + o.value('always', _('Always')); + o.value('better', _('Better')); + o.value('failure', _('Failure')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'always': + case '0': + return 'always'; + + case 'better': + case '1': + return 'better'; + + case 'failure': + case '2': + return 'failure'; + + default: + return 'always'; + } + }; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'failover_mac', _('MAC address selection policy')); + o.default = ''; + o.value('none', _('none')); + o.value('active', _('Active')); + o.value('follow', _('Follow')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'none': + case '0': + return 'none'; + + case 'active': + case '1': + return 'active'; + + case 'follow': + case '2': + return 'follow'; + + default: + return 'none'; + } + }; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'monitor_mode', _('Link monitoring mode'), + !L.hasSystemFeature('mii_tool') ? ''+ + _('Install %s').format('mii-tool') + '' : null); + o.default = ''; + o.value('arp', _('ARP link monitoring')); + o.value('mii', _('MII link monitoring')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'arp': + case '1': + return 'arp'; + + case 'mii': + case '2': + return 'mii'; + + default: + return 'mii'; + } + }; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'monitor_interval', _('Monitor Interval')); + o.description = _('Specifies the link monitoring frequency in milliseconds'); + o.placeholder = '100'; + o.datatype = 'uinteger'; + o.depends('type', 'bonding'); + + o = this.replaceOption(s, 'devadvanced', form.DynamicList, 'arp_target', _('ARP monitor target IP address')); + o.datatype = 'ipaddr'; + o.depends({'type': 'bonding', 'monitor_mode': 'arp'}); + + o = this.replaceOption(s, 'devgeneral', form.Flag, 'arp_all_targets', _('All ARP Targets'), _('All ARP targets must be reachable to consider the link valid')); + o.default = o.disabled; + o.depends({'type': 'bonding', 'monitor_mode': 'arp'}); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'arp_validate', _('ARP validation policy')); + o.default = ''; + o.value('none', _('None')); + o.value('active', _('Active')); + o.value('backup', _('Backup')); + o.value('all', _('All')); + o.value('filter', _('Filter')); + o.value('filter_active', _('Filter active')); + o.value('filter_backup', _('Filter backup')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'none': + case '0': + return 'none'; + + case 'active': + case '1': + return 'active'; + + case 'backup': + case '2': + return 'backup'; + + case 'all': + case '3': + return 'all'; + + case 'filter': + case '4': + return 'filter'; + + case 'filter_active': + case '5': + return 'filter_active'; + + case 'filter_backup': + case '6': + return 'filter_backup'; + + default: + return 'none'; + } + }; + o.depends({'type': 'bonding', 'policy': 'balance-rr' , 'monitor_mode': 'arp'}); + o.depends({'type': 'bonding', 'policy': 'active-backup' , 'monitor_mode': 'arp'}); + o.depends({'type': 'bonding', 'policy': 'balance-xor' , 'monitor_mode': 'arp'}); + o.depends({'type': 'bonding', 'policy': 'broadcast' , 'monitor_mode': 'arp'}); + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'use_carrier', _('Use Carrier'), _('Use carrier status instead of MII result')); + o.default = o.disabled; + o.depends({'type': 'bonding', 'monitor_mode': 'mii'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'updelay', _('Monitor link-up delay')); + o.description = _('Delay before enabling port after MII link up event (msec)'); + o.placeholder = '0'; + o.datatype = 'uinteger'; + o.depends({'type': 'bonding', 'monitor_mode': 'mii'}); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'downdelay', _('Monitor link-down delay')); + o.description = _('Delay before enabling port after MII link down event (msec)'); + o.placeholder = '0'; + o.datatype = 'uinteger'; + o.depends({'type': 'bonding', 'monitor_mode': 'mii'}); + + o = this.replaceOption(s, 'devgeneral', widgets.DeviceSelect, 'ifname_multi-bridge', _('Bridge ports')); + o.size = 10; + o.rmempty = true; + o.multiple = true; + o.noaliases = true; + o.nobridges = true; + o.ucioption = 'ports'; + o.default = L.toArray(dev ? dev.getPorts() : null).filter(function(p) { return p.getType() != 'wifi' }).map(function(p) { return p.getName() }); + o.filter = function(section_id, device_name) { + var bridge_name = uci.get('network', section_id, 'name'), + choice_dev = network.instantiateDevice(device_name), + parent_dev = choice_dev.getParent(); + + /* only show wifi networks which are already present in "option ifname" */ + if (choice_dev.getType() == 'wifi') { + var ifnames = L.toArray(uci.get('network', section_id, 'ports')); + + for (var i = 0; i < ifnames.length; i++) + if (ifnames[i] == device_name) + return true; + + return false; + } + + return (!parent_dev || parent_dev.getName() != bridge_name); + }; + o.description = _('Specifies the wired ports to attach to this bridge. In order to attach wireless networks, choose the associated interface as network in the wireless settings.') + o.onchange = function(ev, section_id, values) { + ss.updatePorts(values); + + return ss.parse().then(function() { + ss.redraw(); + }); + }; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devgeneral', form.Flag, 'bridge_empty', _('Bring up empty bridge'), _('Bring up the bridge interface even if no ports are attached')); + o.default = o.disabled; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'priority', _('Priority')); + o.placeholder = '32767'; + o.datatype = 'range(0, 65535)'; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'ageing_time', _('Ageing time'), _('Timeout in seconds for learned MAC addresses in the forwarding database')); + o.placeholder = '30'; + o.datatype = 'uinteger'; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'stp', _('Enable STP'), _('Enables the Spanning Tree Protocol on this bridge')); + o.default = o.disabled; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'hello_time', _('Hello interval'), _('Interval in seconds for STP hello packets')); + o.placeholder = '2'; + o.datatype = 'range(1, 10)'; + o.depends({ type: 'bridge', stp: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'forward_delay', _('Forward delay'), _('Time in seconds to spend in listening and learning states')); + o.placeholder = '15'; + o.datatype = 'range(2, 30)'; + o.depends({ type: 'bridge', stp: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'max_age', _('Maximum age'), _('Timeout in seconds until topology updates on link loss')); + o.placeholder = '20'; + o.datatype = 'range(6, 40)'; + o.depends({ type: 'bridge', stp: '1' }); + + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'igmp_snooping', _('Enable IGMP snooping'), _('Enables IGMP snooping on this bridge')); + o.default = o.disabled; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'hash_max', _('Maximum snooping table size')); + o.placeholder = '512'; + o.datatype = 'uinteger'; + o.depends({ type: 'bridge', igmp_snooping: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'multicast_querier', _('Enable multicast querier')); + o.defaults = { '1': [{'igmp_snooping': '1'}], '0': [{'igmp_snooping': '0'}] }; + o.depends('type', 'bridge'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'robustness', _('Robustness'), _('The robustness value allows tuning for the expected packet loss on the network. If a network is expected to be lossy, the robustness value may be increased. IGMP is robust to (Robustness-1) packet losses')); + o.placeholder = '2'; + o.datatype = 'min(1)'; + o.depends({ type: 'bridge', multicast_querier: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'query_interval', _('Query interval'), _('Interval in centiseconds between multicast general queries. By varying the value, an administrator may tune the number of IGMP messages on the subnet; larger values cause IGMP Queries to be sent less often')); + o.placeholder = '12500'; + o.datatype = 'uinteger'; + o.depends({ type: 'bridge', multicast_querier: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'query_response_interval', _('Query response interval'), _('The max response time in centiseconds inserted into the periodic general queries. By varying the value, an administrator may tune the burstiness of IGMP messages on the subnet; larger values make the traffic less bursty, as host responses are spread out over a larger interval')); + o.placeholder = '1000'; + o.datatype = 'uinteger'; + o.validate = function(section_id, value) { + var qiopt = L.toArray(this.map.lookupOption('query_interval', section_id))[0], + qival = qiopt ? (qiopt.formvalue(section_id) || qiopt.placeholder) : ''; + + if (value != '' && qival != '' && +value >= +qival) + return _('The query response interval must be lower than the query interval value'); + + return true; + }; + o.depends({ type: 'bridge', multicast_querier: '1' }); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'last_member_interval', _('Last member interval'), _('The max response time in centiseconds inserted into group-specific queries sent in response to leave group messages. It is also the amount of time between group-specific query messages. This value may be tuned to modify the "leave latency" of the network. A reduced value results in reduced time to detect the loss of the last member of a group')); + o.placeholder = '100'; + o.datatype = 'uinteger'; + o.depends({ type: 'bridge', multicast_querier: '1' }); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'mtu', _('MTU')); + o.datatype = 'range(576, 9200)'; + o.validate = function(section_id, value) { + var parent_mtu = (dev && dev.getType() == 'vlan') ? (parent_dev ? parent_dev.getMTU() : null) : null; + + if (parent_mtu !== null && +value > parent_mtu) + return _('The MTU must not exceed the parent device MTU of %d bytes').format(parent_mtu); + + return true; + }; + + o = this.replaceOption(s, 'devgeneral', form.Value, 'macaddr', _('MAC address')); + o.datatype = 'macaddr'; + + o = this.replaceOption(s, 'devgeneral', form.Value, 'peer_name', _('Peer device name')); + o.rmempty = true; + o.datatype = 'maxlength(15)'; + o.depends('type', 'veth'); + o.load = function(section_id) { + var sections = uci.sections('network', 'device'), + idx = 0; + + for (var i = 0; i < sections.length; i++) + if (sections[i]['.name'] == section_id) + break; + else if (sections[i].type == 'veth') + idx++; + + this.placeholder = 'veth%d'.format(idx); + + return form.Value.prototype.load.apply(this, arguments); + }; + + o = this.replaceOption(s, 'devgeneral', form.Value, 'peer_macaddr', _('Peer MAC address')); + o.rmempty = true; + o.datatype = 'macaddr'; + o.depends('type', 'veth'); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'txqueuelen', _('TX queue length')); + o.placeholder = dev ? dev._devstate('qlen') : ''; + o.datatype = 'uinteger'; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'autoneg', _('Autonegociation')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'gro', _('Generic Receive Offload (GRO)')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'gso', _('Generic Segmentation Offload (GSO)')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'tso', _('TCP Segmentation Offload (TSO)')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'lro', _('Large Receive Offload (LRO)')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Flag, 'ufo', _('UDP Fragmentation Offload (UFO)')); + o.default = o.enabled; + + o = this.replaceOption(s, 'devadvanced', form.Value, 'speed', _('Speed')); + o.placeholder = dev ? dev.getSpeed() : ''; + o.default = ''; + o.rmempty = true; + o.datatype = 'uinteger'; + o.depends('autoneg', '0'); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'duplex', _('Duplex')); + o.default = ''; + o.value('', _('unknown')); + o.value('half', _('half')); + o.value('full', _('full')); + o.depends('autoneg', '0'); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'promisc', _('Enable promiscuous mode')); + o.sysfs_default = (dev && dev.dev && dev.dev.flags) ? dev.dev.flags.promisc : null; + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'rpfilter', _('Reverse path filter')); + o.default = ''; + o.value('', _('disabled')); + o.value('loose', _('Loose filtering')); + o.value('strict', _('Strict filtering')); + o.cfgvalue = function(/* ... */) { + var val = form.ListValue.prototype.cfgvalue.apply(this, arguments); + + switch (val || '') { + case 'loose': + case '1': + return 'loose'; + + case 'strict': + case '2': + return 'strict'; + + default: + return ''; + } + }; + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'acceptlocal', _('Accept local'), _('Accept packets with local source addresses')); + o.sysfs = '/proc/sys/net/ipv4/conf/%s/accept_local'.format(devname || 'default'); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'sendredirects', _('Send ICMP redirects')); + o.sysfs = '/proc/sys/net/ipv4/conf/%s/send_redirects'.format(devname || 'default'); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'arp_accept', _('Honor gratuitous ARP'), _('When enabled, new ARP table entries are added from received gratuitous ARP requests or replies, otherwise only preexisting table entries are updated, but no new hosts are learned.')); + o.sysfs = '/proc/sys/net/ipv4/conf/%s/arp_accept'.format(devname || 'default'); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'drop_gratuitous_arp', _('Drop gratuitous ARP'), _('Drop all gratuitous ARP frames, for example if there’s a known good ARP proxy on the network and such frames need not be used or in the case of 802.11, must not be used to prevent attacks.')); + o.sysfs = '/proc/sys/net/ipv4/conf/%s/drop_gratuitous_arp'.format(devname || 'default'); + + o = this.replaceOption(s, 'devadvanced', form.Value, 'neighreachabletime', _('Neighbour cache validity'), _('Time in milliseconds')); + o.placeholder = '30000'; + o.datatype = 'uinteger'; + + o = this.replaceOption(s, 'devadvanced', form.Value, 'neighgcstaletime', _('Stale neighbour cache timeout'), _('Timeout in seconds')); + o.placeholder = '60'; + o.datatype = 'uinteger'; + + o = this.replaceOption(s, 'devadvanced', form.Value, 'neighlocktime', _('Minimum ARP validity time'), _('Minimum required time in seconds before an ARP entry may be replaced. Prevents ARP cache thrashing.')); + o.placeholder = '0'; + o.datatype = 'uinteger'; + + o = this.replaceOption(s, 'devadvanced', form.Value, 'ttl', _('Force TTL'), _('Some LTE providers detect tethering by inspecting packet TTL values')); + o.placeholder = '65'; + o.datatype = 'uinteger'; + + o = this.replaceOption(s, 'devgeneral', cbiFlagTristate, 'ipv6', _('Enable IPv6')); + o.sysfs = '!/proc/sys/net/ipv6/conf/%s/disable_ipv6'.format(devname || 'default'); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'ip6segmentrouting', _('Enable IPv6 segment routing')); + o.sysfs = '/proc/sys/net/ipv6/conf/%s/seg6_enabled'.format(devname || 'default'); + o.depends('ipv6', /1/); + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'drop_unsolicited_na', _('Drop unsolicited NA'), _('Drop all unsolicited neighbor advertisements, for example if there’s a known good NA proxy on the network and such frames need not be used or in the case of 802.11, must not be used to prevent attacks.')); + o.sysfs = '/proc/sys/net/ipv6/conf/%s/drop_unsolicited_na'.format(devname || 'default'); + o.depends('ipv6', /1/); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'mtu6', _('IPv6 MTU')); + o.datatype = 'max(9200)'; + o.depends('ipv6', /1/); + + o = this.replaceOption(s, 'devgeneral', form.Value, 'dadtransmits', _('DAD transmits'), _('Amount of Duplicate Address Detection probes to send')); + o.placeholder = '1'; + o.datatype = 'uinteger'; + o.depends('ipv6', /1/); + + + o = this.replaceOption(s, 'devadvanced', cbiFlagTristate, 'multicast', _('Enable multicast support')); + o.sysfs_default = (dev && dev.dev && dev.dev.flags) ? dev.dev.flags.multicast : null; + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'igmpversion', _('Force IGMP version')); + o.value('', _('No enforcement')); + o.value('1', _('Enforce IGMPv1')); + o.value('2', _('Enforce IGMPv2')); + o.value('3', _('Enforce IGMPv3')); + o.depends('multicast', /1/); + + o = this.replaceOption(s, 'devadvanced', form.ListValue, 'mldversion', _('Force MLD version')); + o.value('', _('No enforcement')); + o.value('1', _('Enforce MLD version 1')); + o.value('2', _('Enforce MLD version 2')); + o.depends('multicast', /1/); + + if (isBridgePort(dev)) { + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'learning', _('Enable MAC address learning')); + o.sysfs = '/sys/class/net/%s/brport/learning'.format(devname || 'default'); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'unicast_flood', _('Enable unicast flooding')); + o.sysfs = '/sys/class/net/%s/brport/unicast_flood'.format(devname || 'default'); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'isolate', _('Port isolation'), _('Only allow communication with non-isolated bridge ports when enabled')); + o.sysfs = '/sys/class/net/%s/brport/isolated'.format(devname || 'default'); + + o = this.replaceOption(s, 'brport', form.ListValue, 'multicast_router', _('Multicast routing')); + o.value('', _('Never')); + o.value('1', _('Learn')); + o.value('2', _('Always')); + o.depends('multicast', /1/); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'multicast_to_unicast', _('Multicast to unicast'), _('Forward multicast packets as unicast packets on this device.')); + o.sysfs = '/sys/class/net/%s/brport/multicast_to_unicast'.format(devname || 'default'); + o.depends('multicast', /1/); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'multicast_fast_leave', _('Enable multicast fast leave')); + o.sysfs = '/sys/class/net/%s/brport/multicast_fast_leave'.format(devname || 'default'); + o.depends('multicast', /1/); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'drop_v4_unicast_in_l2_multicast', _('Drop nested IPv4 unicast'), _('Drop layer 2 multicast frames containing IPv4 unicast packets.')); + o.sysfs = '/proc/sys/net/ipv4/conf/%s/drop_unicast_in_l2_multicast'.format(devname || 'default'); + o.depends('multicast', /1/); + + o = this.replaceOption(s, 'brport', cbiFlagTristate, 'drop_v6_unicast_in_l2_multicast', _('Drop nested IPv6 unicast'), _('Drop layer 2 multicast frames containing IPv6 unicast packets.')); + o.sysfs = '/proc/sys/net/ipv6/conf/%s/drop_unicast_in_l2_multicast'.format(devname || 'default'); + o.depends('multicast', /1/); + } + + o = this.replaceOption(s, 'bridgevlan', form.Flag, 'vlan_filtering', _('Enable VLAN filtering')); + o.depends('type', 'bridge'); + o.updateDefaultValue = function(section_id) { + var device = uci.get('network', s.section, 'name'), + uielem = this.getUIElement(section_id), + has_vlans = false; + + uci.sections('network', 'bridge-vlan', function(bvs) { + has_vlans = has_vlans || (bvs.device == device); + }); + + this.default = has_vlans ? this.enabled : this.disabled; + + if (uielem && !uielem.isChanged()) + uielem.setValue(this.default); + }; + + o = this.replaceOption(s, 'bridgevlan', form.SectionValue, 'bridge-vlan', form.TableSection, 'bridge-vlan'); + o.depends('type', 'bridge'); + + ss = o.subsection; + ss.addremove = true; + ss.anonymous = true; + + ss.renderHeaderRows = function(/* ... */) { + var node = form.TableSection.prototype.renderHeaderRows.apply(this, arguments); + + node.querySelectorAll('.th').forEach(function(th) { + th.classList.add('left'); + th.classList.add('middle'); + }); + + return node; + }; + + ss.filter = function(section_id) { + var devname = uci.get('network', s.section, 'name'); + return (uci.get('network', section_id, 'device') == devname); + }; + + ss.render = function(/* ... */) { + return form.TableSection.prototype.render.apply(this, arguments).then(L.bind(function(node) { + node.style.overflow = 'auto hidden'; + node.style.paddingTop = '1em'; + + if (this.node) + this.node.parentNode.replaceChild(node, this.node); + + this.node = node; + + return node; + }, this)); + }; + + ss.redraw = function() { + return this.load().then(L.bind(this.render, this)); + }; + + ss.updatePorts = function(ports) { + var devices = ports.map(function(port) { + return network.instantiateDevice(port) + }).filter(function(dev) { + return dev.getType() != 'wifi' || dev.isUp(); + }).sort(function(a, b) { + return L.naturalCompare(a.getName(), b.getName()); + }); + + this.children = this.children.filter(function(opt) { return !opt.option.match(/^port_/) }); + + for (var i = 0; i < devices.length; i++) { + o = ss.option(cbiTagValue, 'port_%s'.format(sfh(devices[i].getName())), renderDevBadge(devices[i]), renderPortStatus(devices[i])); + o.port = devices[i].getName(); + } + + var section_ids = this.cfgsections(), + device_names = devices.reduce(function(names, dev) { names[dev.getName()] = true; return names }, {}); + + for (var i = 0; i < section_ids.length; i++) { + var old_spec = L.toArray(uci.get('network', section_ids[i], 'ports')), + new_spec = old_spec.filter(function(spec) { return device_names[spec.replace(/:[ut*]+$/, '')] }); + + if (old_spec.length != new_spec.length) + uci.set('network', section_ids[i], 'ports', new_spec.length ? new_spec : null); + } + }; + + ss.handleAdd = function(ev) { + return s.parse().then(L.bind(function() { + var device = uci.get('network', s.section, 'name'), + section_ids = this.cfgsections(), + section_id = null, + max_vlan_id = 0; + + if (!device) + return; + + for (var i = 0; i < section_ids.length; i++) { + var vid = +uci.get('network', section_ids[i], 'vlan'); + + if (vid > max_vlan_id) + max_vlan_id = vid; + } + + section_id = uci.add('network', 'bridge-vlan'); + uci.set('network', section_id, 'device', device); + uci.set('network', section_id, 'vlan', max_vlan_id + 1); + + s.children.forEach(function(opt) { + switch (opt.option) { + case 'type': + case 'name_complex': + var input = opt.map.findElement('id', 'widget.%s'.format(opt.cbid(s.section))); + if (input) + input.disabled = true; + break; + } + }); + + s.getOption('vlan_filtering').updateDefaultValue(s.section); + + s.map.addedVLANs = s.map.addedVLANs || []; + s.map.addedVLANs.push(section_id); + + return this.redraw(); + }, this)); + }; + + ss.handleRemove = function(section_id) { + this.map.data.remove('network', section_id); + s.map.addedVLANs = (s.map.addedVLANs || []).filter(function(sid) { + return sid != section_id; + }); + + return this.redraw(); + }; + + o = ss.option(form.Value, 'vlan', _('VLAN ID')); + o.datatype = 'range(1, 4094)'; + + o.renderWidget = function(/* ... */) { + var node = form.Value.prototype.renderWidget.apply(this, arguments); + + node.style.width = '5em'; + + return node; + }; + + o.validate = function(section_id, value) { + var section_ids = this.section.cfgsections(); + + for (var i = 0; i < section_ids.length; i++) { + if (section_ids[i] == section_id) + continue; + + if (uci.get('network', section_ids[i], 'vlan') == value) + return _('The VLAN ID must be unique'); + } + + return true; + }; + + o = ss.option(form.Flag, 'local', _('Local')); + o.default = o.enabled; + + var ports = []; + + var seen_ports = {}; + + L.toArray(uci.get('network', s.section, 'ports')).forEach(function(port) { + seen_ports[port] = true; + }); + + uci.sections('network', 'bridge-vlan', function(bvs) { + if (uci.get('network', s.section, 'name') != bvs.device) + return; + + L.toArray(bvs.ports).forEach(function(portspec) { + var m = portspec.match(/^([^:]+)(?::[ut*]+)?$/); + + if (m) + seen_ports[m[1]] = true; + }); + }); + + for (var port_name in seen_ports) + ports.push(port_name); + + ss.updatePorts(ports); + }, + + updateDevBadge: updateDevBadge, + updatePortStatus: updatePortStatus +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js b/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js new file mode 100644 index 000000000..dcd86585a --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js @@ -0,0 +1,1390 @@ +'use strict'; +'require view'; +'require dom'; +'require poll'; +'require rpc'; +'require uci'; +'require form'; +'require network'; +'require validation'; +'require tools.widgets as widgets'; + +var callHostHints, callDUIDHints, callDHCPLeases, CBILeaseStatus, CBILease6Status; + +callHostHints = rpc.declare({ + object: 'luci-rpc', + method: 'getHostHints', + expect: { '': {} } +}); + +callDUIDHints = rpc.declare({ + object: 'luci-rpc', + method: 'getDUIDHints', + expect: { '': {} } +}); + +callDHCPLeases = rpc.declare({ + object: 'luci-rpc', + method: 'getDHCPLeases', + expect: { '': {} } +}); + +CBILeaseStatus = form.DummyValue.extend({ + renderWidget: function(section_id, option_id, cfgvalue) { + return E([ + E('h4', _('Active DHCP Leases')), + E('table', { 'id': 'lease_status_table', 'class': 'table' }, [ + E('tr', { 'class': 'tr table-titles' }, [ + E('th', { 'class': 'th' }, _('Hostname')), + E('th', { 'class': 'th' }, _('IPv4 address')), + E('th', { 'class': 'th' }, _('MAC address')), + E('th', { 'class': 'th' }, _('Lease time remaining')) + ]), + E('tr', { 'class': 'tr placeholder' }, [ + E('td', { 'class': 'td' }, E('em', _('Collecting data...'))) + ]) + ]) + ]); + } +}); + +CBILease6Status = form.DummyValue.extend({ + renderWidget: function(section_id, option_id, cfgvalue) { + return E([ + E('h4', _('Active DHCPv6 Leases')), + E('table', { 'id': 'lease6_status_table', 'class': 'table' }, [ + E('tr', { 'class': 'tr table-titles' }, [ + E('th', { 'class': 'th' }, _('Host')), + E('th', { 'class': 'th' }, _('IPv6 address')), + E('th', { 'class': 'th' }, _('DUID')), + E('th', { 'class': 'th' }, _('Lease time remaining')) + ]), + E('tr', { 'class': 'tr placeholder' }, [ + E('td', { 'class': 'td' }, E('em', _('Collecting data...'))) + ]) + ]) + ]); + } +}); + +function calculateNetwork(addr, mask) { + addr = validation.parseIPv4(String(addr)); + + if (!isNaN(mask)) + mask = validation.parseIPv4(network.prefixToMask(+mask)); + else + mask = validation.parseIPv4(String(mask)); + + if (addr == null || mask == null) + return null; + + return [ + [ + addr[0] & (mask[0] >>> 0 & 255), + addr[1] & (mask[1] >>> 0 & 255), + addr[2] & (mask[2] >>> 0 & 255), + addr[3] & (mask[3] >>> 0 & 255) + ].join('.'), + mask.join('.') + ]; +} + +function generateDnsmasqInstanceEntry(data) { + const nameValueMap = new Map(Object.entries(data)); + let formatString = nameValueMap.get('.index') + ' (' + _('Name') + (nameValueMap.get('.anonymous') ? ': dnsmasq[' + nameValueMap.get('.index') + ']': ': ' + nameValueMap.get('.name')); + + if (data.domain) { + formatString += ', ' + _('Domain') + ': ' + data.domain; + } + if (data.local) { + formatString += ', ' + _('Local') + ': ' + data.local; + } + formatString += ')'; + + return [nameValueMap.get('.name'), formatString]; +} + +function getDHCPPools() { + return uci.load('dhcp').then(function() { + let sections = uci.sections('dhcp', 'dhcp'), + tasks = [], pools = []; + + for (var i = 0; i < sections.length; i++) { + if (sections[i].ignore == '1' || !sections[i].interface) + continue; + + tasks.push(network.getNetwork(sections[i].interface).then(L.bind(function(section_id, net) { + var cidr = net ? (net.getIPAddrs()[0] || '').split('/') : null; + + if (cidr && cidr.length == 2) { + var net_mask = calculateNetwork(cidr[0], cidr[1]); + + pools.push({ + section_id: section_id, + network: net_mask[0], + netmask: net_mask[1] + }); + } + }, null, sections[i]['.name']))); + } + + return Promise.all(tasks).then(function() { + return pools; + }); + }); +} + +function validateHostname(sid, s) { + if (s == null || s == '') + return true; + + if (s.length > 256) + return _('Expecting: %s').format(_('valid hostname')); + + var labels = s.replace(/^\*?\.?|\.$/g, '').split(/\./); + + for (var i = 0; i < labels.length; i++) + if (!labels[i].match(/^[a-z0-9_](?:[a-z0-9-]{0,61}[a-z0-9])?$/i)) + return _('Expecting: %s').format(_('valid hostname')); + + return true; +} + +function validateAddressList(sid, s) { + if (s == null || s == '') + return true; + + var m = s.match(/^\/(.+)\/$/), + names = m ? m[1].split(/\//) : [ s ]; + + for (var i = 0; i < names.length; i++) { + var res = validateHostname(sid, names[i]); + + if (res !== true) + return res; + } + + return true; +} + +function validateServerSpec(sid, s) { + if (s == null || s == '') + return true; + + var m = s.match(/^(\/.*\/)?(.*)$/); + if (!m) + return _('Expecting: %s').format(_('valid hostname')); + + if (m[1] != '//' && m[1] != '/#/') { + var res = validateAddressList(sid, m[1]); + if (res !== true) + return res; + } + + if (m[2] == '' || m[2] == '#') + return true; + + // ipaddr%scopeid#srvport@source@interface#srcport + + m = m[2].match(/^([0-9a-f:.]+)(?:%[^#@]+)?(?:#(\d+))?(?:@([0-9a-f:.]+)(?:@[^#]+)?(?:#(\d+))?)?$/); + + if (!m) + return _('Expecting: %s').format(_('valid IP address')); + + if (validation.parseIPv4(m[1])) { + if (m[3] != null && !validation.parseIPv4(m[3])) + return _('Expecting: %s').format(_('valid IPv4 address')); + } + else if (validation.parseIPv6(m[1])) { + if (m[3] != null && !validation.parseIPv6(m[3])) + return _('Expecting: %s').format(_('valid IPv6 address')); + } + else { + return _('Expecting: %s').format(_('valid IP address')); + } + + if ((m[2] != null && +m[2] > 65535) || (m[4] != null && +m[4] > 65535)) + return _('Expecting: %s').format(_('valid port value')); + + return true; +} + +function expandAndFormatMAC(macs) { + let result = []; + + macs.forEach(mac => { + if (isValidMAC(mac)) { + const expandedMac = mac.split(':').map(part => { + return (part.length === 1 && part !== '*') ? '0' + part : part; + }).join(':').toUpperCase(); + result.push(expandedMac); + } + }); + + return result.length ? result : null; +} + +function isValidMAC(sid, s) { + if (!s) + return true; + + let macaddrs = L.toArray(s); + + for (var i = 0; i < macaddrs.length; i++) + if (!macaddrs[i].match(/^(([0-9a-f]{1,2}|\*)[:-]){5}([0-9a-f]{1,2}|\*)$/i)) + return _('Expecting a valid MAC address, optionally including wildcards') + _('; invalid MAC: ') + macaddrs[i]; + + return true; +} + +function validateMACAddr(pools, sid, s) { + if (s == null || s == '') + return true; + + var leases = uci.sections('dhcp', 'host'), + this_macs = L.toArray(s).map(function(m) { return m.toUpperCase() }); + + for (var i = 0; i < pools.length; i++) { + var this_net_mask = calculateNetwork(this.section.formvalue(sid, 'ip'), pools[i].netmask); + + if (!this_net_mask) + continue; + + for (var j = 0; j < leases.length; j++) { + if (leases[j]['.name'] == sid || !leases[j].ip) + continue; + + var lease_net_mask = calculateNetwork(leases[j].ip, pools[i].netmask); + + if (!lease_net_mask || this_net_mask[0] != lease_net_mask[0]) + continue; + + var lease_macs = L.toArray(leases[j].mac).map(function(m) { return m.toUpperCase() }); + + for (var k = 0; k < lease_macs.length; k++) + for (var l = 0; l < this_macs.length; l++) + if (lease_macs[k] == this_macs[l]) + return _('The MAC address %h is already used by another static lease in the same DHCP pool').format(this_macs[l]); + } + } + + return isValidMAC(sid, s); +} + +return view.extend({ + load: function() { + return Promise.all([ + callHostHints(), + callDUIDHints(), + getDHCPPools(), + network.getNetworks(), + uci.load('firewall') + ]); + }, + + render: function(hosts_duids_pools) { + var has_dhcpv6 = L.hasSystemFeature('dnsmasq', 'dhcpv6') || L.hasSystemFeature('odhcpd'), + hosts = hosts_duids_pools[0], + duids = hosts_duids_pools[1], + pools = hosts_duids_pools[2], + networks = hosts_duids_pools[3], + m, s, o, ss, so, dnss; + + let noi18nstrings = { + etc_hosts: '/etc/hosts', + etc_ethers: '/etc/ethers', + localhost_v6: '::1', + loopback_slash_8_v4: '127.0.0.0/8', + not_found: 'Not found', + nxdomain: 'NXDOMAIN', + rfc_1918_link: 'RFC1918', + rfc_4193_link: 'RFC4193', + rfc_4291_link: 'RFC4291', + rfc_6303_link: 'RFC6303', + reverse_arpa: '*.IN-ADDR.ARPA,*.IP6.ARPA', + servers_file_entry01: 'server=1.2.3.4', + servers_file_entry02: 'server=/domain/1.2.3.4', + + }; + + const recordtypes = [ + 'ANY', + 'A', + 'AAAA', + 'ALIAS', + 'CAA', + 'CERT', + 'CNAME', + 'DS', + 'HINFO', + 'HIP', + 'HTTPS', + 'KEY', + 'LOC', + 'MX', + 'NAPTR', + 'NS', + 'OPENPGPKEY', + 'PTR', + 'RP', + 'SIG', + 'SOA', + 'SRV', + 'SSHFP', + 'SVCB', + 'TLSA', + 'TXT', + 'URI', + ] + + function customi18n(template, values) { + if (!values) + values = noi18nstrings; + return template.replace(/\{(\w+)\}/g, (match, key) => values[key] || match); + }; + + m = new form.Map('dhcp', _('DHCP and DNS'), + _('Dnsmasq is a lightweight DHCP server and DNS forwarder.')); + + s = m.section(form.TypedSection, 'dnsmasq'); + s.anonymous = false; + s.addremove = true; + s.addbtntitle = _('Add server instance', 'Dnsmasq instance'); + + s.renderContents = function(/* ... */) { + var renderTask = form.TypedSection.prototype.renderContents.apply(this, arguments), + sections = this.cfgsections(); + + return Promise.resolve(renderTask).then(function(nodes) { + if (sections.length < 2) { + nodes.querySelector('#cbi-dhcp-dnsmasq > h3').remove(); + nodes.querySelector('#cbi-dhcp-dnsmasq > .cbi-section-remove').remove(); + } + else { + nodes.querySelectorAll('#cbi-dhcp-dnsmasq > .cbi-section-remove').forEach(function(div, i) { + var section = uci.get('dhcp', sections[i]), + hline = div.nextElementSibling, + btn = div.firstElementChild; + + if (!section || section['.anonymous']) { + hline.innerText = i ? _('Unnamed instance #%d', 'Dnsmasq instance').format(i+1) : _('Default instance', 'Dnsmasq instance'); + btn.innerText = i ? _('Remove instance #%d', 'Dnsmasq instance').format(i+1) : _('Remove default instance', 'Dnsmasq instance'); + } + else { + hline.innerText = _('Instance "%q"', 'Dnsmasq instance').format(section['.name']); + btn.innerText = _('Remove instance "%q"', 'Dnsmasq instance').format(section['.name']); + } + }); + } + + nodes.querySelector('#cbi-dhcp-dnsmasq > .cbi-section-create input').placeholder = _('New instance name…', 'Dnsmasq instance'); + + return nodes; + }); + }; + + + s.tab('general', _('General')); + s.tab('cache', _('Cache')); + s.tab('devices', _('Devices & Ports')); + s.tab('dnsrecords', _('DNS Records')); + s.tab('dnssecopt', _('DNSSEC')); + s.tab('filteropts', _('Filter')); + s.tab('forward', _('Forwards')); + s.tab('limits', _('Limits')); + s.tab('logging', _('Log')); + s.tab('files', _('Resolv & Hosts Files')); + s.tab('leases', _('Static Leases')); + s.tab('ipsets', _('IP Sets')); + s.tab('relay', _('Relay')); + s.tab('pxe_tftp', _('PXE/TFTP')); + + o = s.taboption('cache', form.MultiValue, 'cache_rr', + _('Cache arbitrary RR'), _('By default, dnsmasq caches A, AAAA, CNAME and SRV DNS record types.') + '
    ' + + _('This option adds additional record types to the cache.')); + o.optional = true; + o.create = true; + o.multiple = true; + o.display_size = 5; + recordtypes.forEach(r => { + o.value(r); + }); + + s.taboption('filteropts', form.Flag, 'domainneeded', + _('Domain required'), + _('Never forward DNS queries which lack dots or domain parts.') + '
    ' + + customi18n(_('Names not in {etc_hosts} are answered {not_found}.') ) + ); + s.taboption('general', form.Flag, 'authoritative', + _('Authoritative'), + _('This is the only DHCP server in the local network.')); + + o = s.taboption('general', form.Value, 'local', + _('Resolve these locally'), + _('Never forward these matching domains or subdomains; resolve from DHCP or hosts files only.')); + o.placeholder = '/internal.example.com/private.example.com/example.org'; + + s.taboption('general', form.Value, 'domain', + _('Local domain'), + _('Local domain suffix appended to DHCP names and hosts file entries.')); + + s.taboption('general', form.Flag, 'expandhosts', + _('Expand hosts'), + _('Add local domain suffix to names served from hosts files.')); + + o = s.taboption('general', form.DynamicList, 'server', + _('DNS forwardings'), + _('List of upstream resolvers to forward queries to.')); + o.placeholder = '/example.org/10.1.2.3'; + + o = s.taboption('logging', form.Flag, 'logqueries', + _('Log queries'), + _('Write received DNS queries to syslog.') + ' ' + _('Dump cache on SIGUSR1, include requesting IP.')); + o.optional = true; + + o = s.taboption('logging', form.Flag, 'logdhcp', + _('Extra DHCP logging'), + _('Log all options sent to DHCP clients and the tags used to determine them.')); + o.optional = true; + + o = s.taboption('logging', form.Value, 'logfacility', + _('Log facility'), + _('Set log class/facility for syslog entries.')); + o.optional = true; + o.value('KERN'); + o.value('USER'); + o.value('MAIL'); + o.value('DAEMON'); + o.value('AUTH'); + o.value('LPR'); + o.value('NEWS'); + o.value('UUCP'); + o.value('CRON'); + o.value('LOCAL0'); + o.value('LOCAL1'); + o.value('LOCAL2'); + o.value('LOCAL3'); + o.value('LOCAL4'); + o.value('LOCAL5'); + o.value('LOCAL6'); + o.value('LOCAL7'); + o.value('-', _('stderr')); + + o = s.taboption('forward', form.DynamicList, 'server', + _('DNS Forwards'), + _('Forward specific domain queries to specific upstream servers.')); + o.optional = true; + o.placeholder = '/*.example.org/10.1.2.3'; + o.validate = validateServerSpec; + + o = s.taboption('general', form.DynamicList, 'address', + _('Addresses'), + _('Resolve specified FQDNs to an IP.') + '
    ' + + customi18n(_('Syntax: {code_syntax}.'), + {code_syntax: '/fqdn[/fqdn…]/[ipaddr]'}) + '
    ' + + customi18n(_('{example_nx} returns {nxdomain}.', + 'hint: /example.com/ returns NXDOMAIN.'), + {example_nx: '/example.com/', nxdomain: 'NXDOMAIN'}) + '
    ' + + customi18n(_('{any_domain} matches any domain (and returns {nxdomain}).', + 'hint: /#/ matches any domain (and returns NXDOMAIN).'), + {any_domain:'/#/', nxdomain: 'NXDOMAIN'}) + '
    ' + + customi18n( + _('{example_null} returns {null_addr} addresses ({null_ipv4}, {null_ipv6}) for {example_com} and its subdomains.', + 'hint: /example.com/# returns NULL addresses (0.0.0.0, ::) for example.com and its subdomains.'), + { example_null: '/example.com/#', + null_addr: 'NULL', + null_ipv4: '0.0.0.0', + null_ipv6: '::', + example_com: 'example.com', + } + ) + ); + o.optional = true; + o.placeholder = '/router.local/router.lan/192.168.0.1'; + + o = s.taboption('general', form.DynamicList, 'ipset', + _('IP sets'), + _('List of IP sets to populate with the IPs of DNS lookup results of the FQDNs also specified here.')); + o.filter = function(section_id, name) { + return (section_id.startsWith('omr_dscp') == false); + }; + o.optional = true; + o.placeholder = '/example.org/ipset,ipset6'; + + o = s.taboption('filteropts', form.Flag, 'rebind_protection', + _('Rebind protection'), + customi18n(_('Discard upstream responses containing {rfc_1918_link} addresses.') ) + '
    ' + + customi18n(_('Discard also upstream responses containing {rfc_4193_link}, Link-Local and private IPv4-Mapped {rfc_4291_link} IPv6 Addresses.') ) + ); + o.rmempty = false; + + o = s.taboption('filteropts', form.Flag, 'rebind_localhost', + _('Allow localhost'), + customi18n( + _('Exempt {loopback_slash_8_v4} and {localhost_v6} from rebinding checks, e.g. for RBL services.') + ) + ); + o.depends('rebind_protection', '1'); + + o = s.taboption('filteropts', form.DynamicList, 'rebind_domain', + _('Domain whitelist'), + customi18n(_('List of domains to allow {rfc_1918_link} responses for.') ) + ); + o.depends('rebind_protection', '1'); + o.optional = true; + o.placeholder = 'ihost.netflix.com'; + o.validate = validateAddressList; + + o = s.taboption('filteropts', form.Flag, 'localservice', + _('Local service only'), + _('Accept DNS queries only from hosts whose address is on a local subnet.')); + o.optional = false; + o.rmempty = false; + + o = s.taboption('devices', form.Flag, 'nonwildcard', + _('Non-wildcard'), + _('Bind only to configured interface addresses, instead of the wildcard address.')); + o.default = o.enabled; + o.optional = false; + o.rmempty = true; + + o = s.taboption('devices', widgets.NetworkSelect, 'interface', + _('Listen interfaces'), + _('Listen only on the specified interfaces, and loopback if not excluded explicitly.')); + o.multiple = true; + o.nocreate = true; + + o = s.taboption('devices', widgets.NetworkSelect, 'notinterface', + _('Exclude interfaces'), + _('Do not listen on the specified interfaces.')); + o.loopback = true; + o.multiple = true; + o.nocreate = true; + + o = s.taboption('relay', form.SectionValue, '__relays__', form.TableSection, 'relay', null, + _('Relay DHCP requests elsewhere. OK: v4↔v4, v6↔v6. Not OK: v4↔v6, v6↔v4.') + + '
    ' + _('Note: you may also need a DHCP Proxy (currently unavailable) when specifying a non-standard Relay To port(addr#port).') + + '
    ' + _('You may add multiple unique Relay To on the same Listen addr.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + ss.nodescriptions = true; + + so = ss.option(form.Value, 'local_addr', _('Relay from')); + so.rmempty = false; + so.datatype = 'ipaddr'; + + for (var family = 4; family <= 6; family += 2) { + for (var i = 0; i < networks.length; i++) { + if (networks[i].getName() != 'loopback') { + var addrs = (family == 6) ? networks[i].getIP6Addrs() : networks[i].getIPAddrs(); + for (var j = 0; j < addrs.length; j++) { + var addr = addrs[j].split('/')[0]; + so.value(addr, E([], [ + addr, ' (', + widgets.NetworkSelect.prototype.renderIfaceBadge(networks[i]), + ')' + ])); + } + } + } + } + + so = ss.option(form.Value, 'server_addr', _('Relay to address')); + so.rmempty = false; + so.optional = false; + so.placeholder = '192.168.10.1#535'; + + so.validate = function(section, value) { + var m = this.section.formvalue(section, 'local_addr'), + n = this.section.formvalue(section, 'server_addr'), + p; + + if (!m || !n) { + return _('Both "Relay from" and "Relay to address" must be specified.'); + } + else { + p = n.split('#'); + if (p.length > 1 && !/^[0-9]+$/.test(p[1])) + return _('Expected port number.'); + else + n = p[0]; + + if ((validation.parseIPv6(m) && validation.parseIPv6(n)) || + validation.parseIPv4(m) && validation.parseIPv4(n)) + return true; + else + return _('Address families of "Relay from" and "Relay to address" must match.') + } + return true; + }; + + + so = ss.option(widgets.NetworkSelect, 'interface', _('Only accept replies via')); + so.optional = true; + so.rmempty = false; + so.placeholder = 'lan'; + + s.taboption('files', form.Flag, 'readethers', + customi18n(_('Use {etc_ethers}') ), + customi18n(_('Read {etc_ethers} to configure the DHCP server.') ) + ); + + s.taboption('files', form.Value, 'leasefile', + _('Lease file'), + _('File to store DHCP lease information.')); + + o = s.taboption('files', form.Flag, 'noresolv', + _('Ignore resolv file')); + o.optional = true; + + o = s.taboption('files', form.Value, 'resolvfile', + _('Resolv file'), + _('File with upstream resolvers.')); + o.depends('noresolv', '0'); + o.placeholder = '/tmp/resolv.conf.d/resolv.conf.auto'; + o.optional = true; + + o = s.taboption('files', form.Flag, 'strictorder', + _('Strict order'), + _('Query upstream resolvers in the order they appear in the resolv file.')); + o.optional = true; + + o = s.taboption('files', form.Flag, 'ignore_hosts_dir', + _('Ignore hosts files directory'), + _('On: use instance specific hosts file only') + '
    ' + + _('Off: use all files in the directory including the instance specific hosts file') + ); + o.optional = true; + + o = s.taboption('files', form.Flag, 'nohosts', + customi18n(_('Ignore {etc_hosts} file') ) + ); + o.optional = true; + + o = s.taboption('files', form.DynamicList, 'addnhosts', + _('Additional hosts files')); + o.optional = true; + o.placeholder = '/etc/dnsmasq.hosts'; + + o = s.taboption('logging', form.Flag, 'quietdhcp', + _('Suppress logging'), + _('Suppress logging of the routine operation for the DHCP protocol.')); + o.optional = true; + o.depends('logdhcp', '0'); + + o = s.taboption('general', form.Flag, 'sequential_ip', + _('Allocate IPs sequentially'), + _('Allocate IP addresses sequentially, starting from the lowest available address.')); + o.optional = true; + + o = s.taboption('filteropts', form.Flag, 'boguspriv', + _('Filter private'), + customi18n( + _('Reject reverse lookups to {rfc_6303_link} IP ranges ({reverse_arpa}) not in {etc_hosts}.') ) + ); + o.default = o.enabled; + + s.taboption('filteropts', form.Flag, 'filterwin2k', + _('Filter SRV/SOA service discovery'), + _('Filters SRV/SOA service discovery, to avoid triggering dial-on-demand links.') + '
    ' + + _('May prevent VoIP or other services from working.')); + + o = s.taboption('filteropts', form.Flag, 'filter_aaaa', + _('Filter IPv6 AAAA records'), + _('Remove IPv6 addresses from the results and only return IPv4 addresses.') + '
    ' + + _('Can be useful if ISP has IPv6 nameservers but does not provide IPv6 routing.')); + o.optional = true; + + o = s.taboption('filteropts', form.Flag, 'filter_a', + _('Filter IPv4 A records'), + _('Remove IPv4 addresses from the results and only return IPv6 addresses.')); + o.optional = true; + + o = s.taboption('filteropts', form.MultiValue, 'filter_rr', + _('Filter arbitrary RR'), _('Removes records of the specified type(s) from answers.')); + o.optional = true; + o.create = true; + o.multiple = true; + o.display_size = 5; + recordtypes.forEach(r => { + o.value(r); + }); + + s.taboption('filteropts', form.Flag, 'localise_queries', + _('Localise queries'), + customi18n(_('Limit response records (from {etc_hosts}) to those that fall within the subnet of the querying interface.') ) + '
    ' + + _('This prevents unreachable IPs in subnets not accessible to you.') + '
    ' + + _('Note: IPv4 only.')); + + if (L.hasSystemFeature('dnsmasq', 'dnssec')) { + o = s.taboption('dnssecopt', form.Flag, 'dnssec', + _('DNSSEC'), + _('Validate DNS replies and cache DNSSEC data, requires upstream to support DNSSEC.')); + o.optional = true; + + o = s.taboption('dnssecopt', form.Flag, 'dnsseccheckunsigned', + _('DNSSEC check unsigned'), + _('Verify unsigned domain responses really come from unsigned domains.')); + o.default = o.enabled; + o.optional = true; + } + + s.taboption('filteropts', form.Flag, 'nonegcache', + _('No negative cache'), + _('Do not cache negative replies, e.g. for non-existent domains.')); + + o = s.taboption('forward', form.Value, 'serversfile', + _('Additional servers file'), + customi18n(_('File listing upstream resolvers, optionally domain-specific, e.g. {servers_file_entry01}, {servers_file_entry02}.') ) + ); + o.placeholder = '/etc/dnsmasq.servers'; + + o = s.taboption('forward', form.Value, 'addmac', + _('Add requestor MAC'), + _('Add the MAC address of the requestor to DNS queries which are forwarded upstream.') + ' ' + '
    ' + + _('%s uses the default MAC address format encoding').format('enabled') + ' ' + '
    ' + + _('%s uses an alternative encoding of the MAC as base64').format('base64') + ' ' + '
    ' + + _('%s uses a human-readable encoding of hex-and-colons').format('text')); + o.optional = true; + o.value('', _('off')); + o.value('1', _('enabled (default)')); + o.value('base64'); + o.value('text'); + + s.taboption('forward', form.Flag, 'stripmac', + _('Remove MAC address before forwarding query'), + _('Remove any MAC address information already in downstream queries before forwarding upstream.')); + + o = s.taboption('forward', form.Value, 'addsubnet', + _('Add subnet address to forwards'), + _('Add a subnet address to the DNS queries which are forwarded upstream, leaving this value empty disables the feature.') + ' ' + + _('If an address is specified in the flag, it will be used, otherwise, the address of the requestor will be used.') + ' ' + + _('The amount of the address forwarded depends on the prefix length parameter: 32 (128 for IPv6) forwards the whole address, zero forwards none of it but still marks the request so that no upstream nameserver will add client address information either.') + ' ' + '
    ' + + _('The default (%s) is zero for both IPv4 and IPv6.').format('0,0') + ' ' + '
    ' + + _('%s adds the /24 and /96 subnets of the requestor for IPv4 and IPv6 requestors, respectively.').format('24,96') + ' ' + '
    ' + + _('%s adds 1.2.3.0/24 for IPv4 requestors and ::/0 for IPv6 requestors.').format('1.2.3.4/24') + ' ' + '
    ' + + _('%s adds 1.2.3.0/24 for both IPv4 and IPv6 requestors.').format('1.2.3.4/24,1.2.3.4/24')); + o.optional = true; + + s.taboption('forward', form.Flag, 'stripsubnet', + _('Remove subnet address before forwarding query'), + _('Remove any subnet address already present in a downstream query before forwarding it upstream.')); + + o = s.taboption('general', form.Flag, 'allservers', + _('All servers'), + _('Query all available upstream resolvers.') + ' ' + _('First answer wins.')); + o.optional = true; + + o = s.taboption('filteropts', form.DynamicList, 'bogusnxdomain', + customi18n(_('IPs to override with {nxdomain}') ), + customi18n(_('Transform replies which contain the specified addresses or subnets into {nxdomain} responses.') ) + ); + o.optional = true; + o.placeholder = '64.94.110.11'; + + o = s.taboption('devices', form.Value, 'port', + _('DNS server port'), + _('Listening port for inbound DNS queries.')); + o.optional = true; + o.datatype = 'port'; + o.placeholder = 53; + + o = s.taboption('devices', form.Value, 'queryport', + _('DNS query port'), + _('Fixed source port for outbound DNS queries.')); + o.optional = true; + o.datatype = 'port'; + o.placeholder = _('any'); + + o = s.taboption('devices', form.Value, 'minport', + _('Minimum source port #'), + _('Min valid value %s.').format('1024') + ' ' + _('Useful for systems behind firewalls.')); + o.optional = true; + o.datatype = 'port'; + o.placeholder = 1024; + o.depends('queryport', ''); + + o = s.taboption('devices', form.Value, 'maxport', + _('Maximum source port #'), + _('Max valid value %s.').format('65535') + ' ' + _('Useful for systems behind firewalls.')); + o.optional = true; + o.datatype = 'port'; + o.placeholder = 50000; + o.depends('queryport', ''); + + o = s.taboption('limits', form.Value, 'dhcpleasemax', + _('Max. DHCP leases'), + _('Maximum allowed number of active DHCP leases.')); + o.optional = true; + o.datatype = 'uinteger'; + o.placeholder = 150; + + o = s.taboption('limits', form.Value, 'ednspacket_max', + _('Max. EDNS0 packet size'), + _('Maximum allowed size of EDNS0 UDP packets.')); + o.optional = true; + o.datatype = 'uinteger'; + o.placeholder = 1280; + + o = s.taboption('limits', form.Value, 'dnsforwardmax', + _('Max. concurrent queries'), + _('Maximum allowed number of concurrent DNS queries.')); + o.optional = true; + o.datatype = 'uinteger'; + o.placeholder = 150; + + o = s.taboption('limits', form.Value, 'cachesize', + _('Size of DNS query cache'), + _('Number of cached DNS entries, 10000 is maximum, 0 is no caching.')); + o.optional = true; + o.datatype = 'range(0,10000)'; + o.placeholder = 1000; + + o = s.taboption('limits', form.Value, 'min_cache_ttl', + _('Min cache TTL'), + _('Extend short TTL values to the seconds value given when caching them. Use with caution.') + + _(' (Max 1h == 3600)')); + o.optional = true; + o.placeholder = 60; + + o = s.taboption('limits', form.Value, 'max_cache_ttl', + _('Max cache TTL'), + _('Set a maximum seconds TTL value for entries in the cache.')); + o.optional = true; + o.placeholder = 3600; + + o = s.taboption('pxe_tftp', form.Flag, 'enable_tftp', + _('Enable TFTP server'), + _('Enable the built-in single-instance TFTP server.')); + o.optional = true; + + o = s.taboption('pxe_tftp', form.Value, 'tftp_root', + _('TFTP server root'), + _('Root directory for files served via TFTP. Enable TFTP server and TFTP server root turn on the TFTP server and serve files from TFTP server root.')); + o.depends('enable_tftp', '1'); + o.optional = true; + o.placeholder = '/'; + + o = s.taboption('pxe_tftp', form.Value, 'dhcp_boot', + _('Network boot image'), + _('Filename of the boot image advertised to clients.')); + o.depends('enable_tftp', '1'); + o.optional = true; + o.placeholder = 'pxelinux.0'; + + /* PXE - https://openwrt.org/docs/guide-user/base-system/dhcp#booting_options */ + o = s.taboption('pxe_tftp', form.SectionValue, '__pxe__', form.GridSection, 'boot', null, + _('Special PXE boot options for Dnsmasq.')); + ss = o.subsection; + ss.addremove = true; + ss.anonymous = true; + ss.modaltitle = _('Edit PXE/TFTP/BOOTP Host'); + ss.nodescriptions = true; + + so = ss.option(form.Value, 'filename', + _('Filename'), + _('Host requests this filename from the boot server.')); + so.optional = false; + so.placeholder = 'pxelinux.0'; + + so = ss.option(form.Value, 'servername', + _('Server name'), + _('The hostname of the boot server')); + so.optional = false; + so.placeholder = 'myNAS'; + + so = ss.option(form.Value, 'serveraddress', + _('Server address'), + _('The IP address of the boot server')); + so.optional = false; + so.placeholder = '192.168.1.2'; + + so = ss.option(form.DynamicList, 'dhcp_option', + _('DHCP Options'), + _('Additional options to send to the below match tags.') + '
    ' + + _('%s means "the address of the system running dnsmasq".').format('0.0.0.0')); + so.optional = true; + so.placeholder = 'option:root-path,192.168.1.2:/data/netboot/root'; + + so = ss.option(form.Value, 'networkid', + _('Match this Tag'), + _('Only DHCP Clients with this tag are sent this boot option.')); + so.optional = true; + so.noaliases = true; + + so = ss.option(form.Flag, 'force', + _('Force'), + _('Always send the chosen DHCP options. Sometimes needed, with e.g. PXELinux.')); + so.optional = true; + + so = ss.option(form.Value, 'instance', + _('Instance'), + _('Dnsmasq instance to which this boot section is bound. If unspecified, the section is valid for all dnsmasq instances.')); + so.optional = true; + + Object.values(L.uci.sections('dhcp', 'dnsmasq')).forEach(function(val, index) { + var [name, display_str] = generateDnsmasqInstanceEntry(val); + so.value(name, display_str); + }); + + o = s.taboption('dnsrecords', form.SectionValue, '__dnsrecords__', form.TypedSection, '__dnsrecords__'); + + dnss = o.subsection; + + dnss.anonymous = true; + dnss.cfgsections = function() { return [ '__dnsrecords__' ] }; + + dnss.tab('hosts', _('Hostnames')); + dnss.tab('srvhosts', _('SRV')); + dnss.tab('mxhosts', _('MX')); + dnss.tab('cnamehosts', _('CNAME')); + dnss.tab('dnsrr', _('DNS-RR')); + + o = dnss.taboption('srvhosts', form.SectionValue, '__srvhosts__', form.TableSection, 'srvhost', null, + _('Bind service records to a domain name: specify the location of services. See RFC2782.').format('https://datatracker.ietf.org/doc/html/rfc2782') + + '
    ' + _('_service: _sip, _ldap, _imap, _stun, _xmpp-client, … . (Note: while _http is possible, no browsers support SRV records.)') + + '
    ' + _('_proto: _tcp, _udp, _sctp, _quic, … .') + + '
    ' + _('You may add multiple records for the same Target.') + + '
    ' + _('Larger weights (of the same prio) are given a proportionately higher probability of being selected.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + + so = ss.option(form.Value, 'srv', _('SRV'), _('Syntax:') + ' ' + '_service._proto.example.com.'); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = '_sip._tcp.example.com.'; + + so = ss.option(form.Value, 'target', _('Target'), _('CNAME or fqdn')); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = 'sip.example.com.'; + + so = ss.option(form.Value, 'port', _('Port')); + so.rmempty = false; + so.datatype = 'port'; + so.placeholder = '5060'; + + so = ss.option(form.Value, 'class', _('Priority'), _('Ordinal: lower comes first.')); + so.rmempty = true; + so.datatype = 'range(0,65535)'; + so.placeholder = '10'; + + so = ss.option(form.Value, 'weight', _('Weight')); + so.rmempty = true; + so.datatype = 'range(0,65535)'; + so.placeholder = '50'; + + o = dnss.taboption('mxhosts', form.SectionValue, '__mxhosts__', form.TableSection, 'mxhost', null, + _('Bind service records to a domain name: specify the location of services.') + + '
    ' + _('You may add multiple records for the same domain.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + ss.nodescriptions = true; + + so = ss.option(form.Value, 'domain', _('Domain')); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = 'example.com.'; + + so = ss.option(form.Value, 'relay', _('Relay')); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = 'relay.example.com.'; + + so = ss.option(form.Value, 'pref', _('Priority'), _('Ordinal: lower comes first.')); + so.rmempty = true; + so.datatype = 'range(0,65535)'; + so.placeholder = '0'; + + o = dnss.taboption('cnamehosts', form.SectionValue, '__cname__', form.TableSection, 'cname', null, + _('Set an alias for a hostname.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + ss.nodescriptions = true; + + so = ss.option(form.Value, 'cname', _('Domain')); + so.rmempty = false; + so.validate = validateHostname; + so.placeholder = 'www.example.com.'; + + so = ss.option(form.Value, 'target', _('Target')); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = 'example.com.'; + + o = dnss.taboption('hosts', form.SectionValue, '__hosts__', form.GridSection, 'domain', null, + _('Hostnames are used to bind a domain name to an IP address. This setting is redundant for hostnames already configured with static leases, but it can be useful to rebind an FQDN.')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + + so = ss.option(form.Value, 'name', _('Hostname')); + so.rmempty = false; + so.datatype = 'hostname'; + + so = ss.option(form.Value, 'ip', _('IP address')); + so.rmempty = false; + so.datatype = 'ipaddr("nomask")'; + + var ipaddrs = {}; + + Object.keys(hosts).forEach(function(mac) { + var addrs = L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4); + + for (var i = 0; i < addrs.length; i++) + ipaddrs[addrs[i]] = hosts[mac].name || mac; + }); + + L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) { + so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4])); + }); + + o = dnss.taboption('dnsrr', form.SectionValue, '__dnsrr__', form.TableSection, 'dnsrr', null, + _('Set an arbitrary resource record (RR) type.') + '
    ' + + _('Hexdata is automatically en/decoded on save and load')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + ss.nodescriptions = true; + + function hexdecodeload(section_id) { + let value = uci.get('dhcp', section_id, this.option) || ''; + // Remove any spaces or colons from the hex string - they're allowed + value = value.replace(/[\s:]/g, ''); + // Hex-decode the string before displaying + let decodedString = ''; + for (let i = 0; i < value.length; i += 2) { + decodedString += String.fromCharCode(parseInt(value.substr(i, 2), 16)); + } + return decodedString; + } + + function hexencodesave(section, value) { + if (!value || value.length === 0) { + uci.unset('dhcp', section, 'hexdata'); + return; + } + // Hex-encode the string before saving + const encodedArr = value.split('').map(c => c.charCodeAt(0).toString(16).padStart(2, '0')).join(''); + uci.set('dhcp', section, this.option, encodedArr); + } + + so = ss.option(form.Value, 'dnsrr', _('Resource Record Name')); + so.rmempty = false; + so.datatype = 'hostname'; + so.placeholder = 'svcb.example.com.'; + + so = ss.option(form.Value, 'rrnumber', _('Resource Record Number')); + so.rmempty = false; + so.datatype = 'uinteger'; + so.placeholder = '64'; + + so = ss.option(form.Value, 'hexdata', _('Raw Data')); + so.rmempty = true; + so.datatype = 'string'; + so.placeholder = 'free-form string'; + so.load = hexdecodeload; + so.write = hexencodesave; + + so = ss.option(form.DummyValue, '_hexdata', _('Hex Data')); + so.width = '10%'; + so.rawhtml = true; + so.load = function(section_id) { + let hexdata = uci.get('dhcp', section_id, 'hexdata') || ''; + hexdata = hexdata.replace(/[:]/g, ''); + if (hexdata) { + return hexdata.replace(/(.{20})/g, '$1
    '); // Inserts
    after every 2 characters (hex pair) + } else { + return ''; + } + } + + o = s.taboption('ipsets', form.SectionValue, '__ipsets__', form.GridSection, 'ipset', null, + _('List of IP sets to populate with the IPs of DNS lookup results of the FQDNs also specified here.') + '
    ' + + _('The netfilter components below are only regarded when running fw4.')); + + ss = o.subsection; + ss.filter = function(section_id, name) { + return (section_id.startsWith('omr_') == false); + }; + + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.rowcolors = true; + ss.nodescriptions = true; + ss.modaltitle = _('Edit IP set'); + + so = ss.option(form.DynamicList, 'name', _('Name of the set')); + uci.sections('firewall', 'ipset', function(s) { + if (typeof(s.name) == 'string') + so.value(s.name, s.comment ? '%s (%s)'.format(s.name, s.comment) : s.name); + }); + so.rmempty = false; + so.editable = false; + so.datatype = 'string'; + + so = ss.option(form.DynamicList, 'domain', _('FQDN')); + so.rmempty = false; + so.editable = false; + so.datatype = 'hostname'; + + so = ss.option(form.Value, 'table', _('Netfilter table name'), _('Defaults to fw4.')); + so.editable = false; + so.placeholder = 'fw4'; + so.rmempty = true; + + so = ss.option(form.ListValue, 'table_family', _('Table IP family'), _('Defaults to IPv4+6.') + ' ' + _('Can be hinted by adding 4 or 6 to the name.') + '
    ' + + _('Adding an IPv6 to an IPv4 set and vice-versa silently fails.')); + so.editable = false; + so.rmempty = true; + so.value('inet', _('IPv4+6')); + so.value('ip', _('IPv4')); + so.value('ip6', _('IPv6')); + + o = s.taboption('leases', form.SectionValue, '__leases__', form.GridSection, 'host', null, + _('Static leases are used to assign fixed IP addresses and symbolic hostnames to DHCP clients. They are also required for non-dynamic interface configurations where only hosts with a corresponding lease are served.') + '

    ' + + _('Use the Add Button to add a new lease entry. The MAC address identifies the host, the IPv4 address specifies the fixed address to use, and the Hostname is assigned as a symbolic name to the requesting host. The optional Lease time can be used to set non-standard host-specific lease time, e.g. 12h, 3d or infinite.') + '

    ' + + _('The tag construct filters which host directives are used; more than one tag can be provided, in this case the request must match all of them. Tagged directives are used in preference to untagged ones. Note that one of mac, duid or hostname still needs to be specified (can be a wildcard).')); + + ss = o.subsection; + + ss.addremove = true; + ss.anonymous = true; + ss.sortable = true; + ss.nodescriptions = true; + ss.max_cols = 8; + ss.modaltitle = _('Edit static lease'); + + so = ss.option(form.Value, 'name', + _('Hostname'), + _('Optional hostname to assign')); + so.validate = validateHostname; + so.rmempty = true; + so.write = function(section, value) { + uci.set('dhcp', section, 'name', value); + uci.set('dhcp', section, 'dns', '1'); + }; + so.remove = function(section) { + uci.unset('dhcp', section, 'name'); + uci.unset('dhcp', section, 'dns'); + }; + + //this can be a .DynamicList or a .Value with a widget and dnsmasq handles multimac OK. + so = ss.option(form.DynamicList, 'mac', + _('MAC address(es)'), + _('The hardware address(es) of this entry/host.') + '

    ' + + _('In DHCPv4, it is possible to include more than one mac address. This allows an IP address to be associated with multiple macaddrs, and dnsmasq abandons a DHCP lease to one of the macaddrs when another asks for a lease. It only works reliably if only one of the macaddrs is active at any time.')); + //As a special case, in DHCPv4, it is possible to include more than one hardware address. eg: --dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2 This allows an IP address to be associated with multiple hardware addresses, and gives dnsmasq permission to abandon a DHCP lease to one of the hardware addresses when another one asks for a lease + so.rmempty = true; + so.cfgvalue = function(section) { + var macs = uci.get('dhcp', section, 'mac'); + if(!Array.isArray(macs)){ + return expandAndFormatMAC(L.toArray(macs)); + } else { + return expandAndFormatMAC(macs); + } + }; + //removed jows renderwidget function which hindered multi-mac entry + so.validate = validateMACAddr.bind(so, pools); + Object.keys(hosts).forEach(function(mac) { + var hint = hosts[mac].name || L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4)[0]; + so.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac); + }); + + so = ss.option(form.Value, 'ip', _('IPv4 address'), _('The IP address to be used for this host, or ignore to ignore any DHCP request from this host.')); + so.value('ignore', _('Ignore')); + so.datatype = 'or(ip4addr,"ignore")'; + so.validate = function(section, value) { + var m = this.section.formvalue(section, 'mac'), + n = this.section.formvalue(section, 'name'); + + if ((m && !m.length > 0) && !n) + return _('One of hostname or MAC address must be specified!'); + + if (!value || value == 'ignore') + return true; + + var leases = uci.sections('dhcp', 'host'); + + for (var i = 0; i < leases.length; i++) + if (leases[i]['.name'] != section && leases[i].ip == value) + return _('The IP address %h is already used by another static lease').format(value); + + for (var i = 0; i < pools.length; i++) { + var net_mask = calculateNetwork(value, pools[i].netmask); + + if (net_mask && net_mask[0] == pools[i].network) + return true; + } + + return _('The IP address is outside of any DHCP pool address range'); + }; + + L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) { + so.value(ipv4, ipaddrs[ipv4] ? '%s (%s)'.format(ipv4, ipaddrs[ipv4]) : ipv4); + }); + + so = ss.option(form.Value, 'leasetime', + _('Lease time'), + _('Host-specific lease time, e.g. 5m, 3h, 7d.')); + so.rmempty = true; + so.value('5m', _('5m (5 minutes)')); + so.value('3h', _('3h (3 hours)')); + so.value('12h', _('12h (12 hours - default)')); + so.value('7d', _('7d (7 days)')); + so.value('infinite', _('infinite (lease does not expire)')); + + so = ss.option(form.Value, 'duid', + _('DUID'), + _('The DHCPv6-DUID (DHCP unique identifier) of this host.')); + so.datatype = 'and(rangelength(20,36),hexstring)'; + Object.keys(duids).forEach(function(duid) { + so.value(duid, '%s (%s)'.format(duid, duids[duid].hostname || duids[duid].macaddr || duids[duid].ip6addr || '?')); + }); + + so = ss.option(form.Value, 'hostid', + _('IPv6-Suffix (hex)'), + _('The IPv6 interface identifier (address suffix) as hexadecimal number (max. 16 chars).')); + so.datatype = 'and(rangelength(0,16),hexstring)'; + + so = ss.option(form.DynamicList, 'tag', + _('Tag'), + _('Assign new, freeform tags to this entry.')); + + so = ss.option(form.DynamicList, 'match_tag', + _('Match Tag'), + _('When a host matches an entry then the special tag %s is set. Use %s to match all known hosts.').format('known', 'known') + '

    ' + + _('Ignore requests from unknown machines using %s.').format('!known') + '

    ' + + _('If a host matches an entry which cannot be used because it specifies an address on a different subnet, the tag %s is set.').format('known-othernet')); + so.value('known', _('known')); + so.value('!known', _('!known (not known)')); + so.value('known-othernet', _('known-othernet (on different subnet)')); + so.optional = true; + + so = ss.option(form.Value, 'instance', + _('Instance'), + _('Dnsmasq instance to which this DHCP host section is bound. If unspecified, the section is valid for all dnsmasq instances.')); + so.optional = true; + + Object.values(L.uci.sections('dhcp', 'dnsmasq')).forEach(function(val, index) { + var [name, display_str] = generateDnsmasqInstanceEntry(val); + so.value(name, display_str); + }); + + + so = ss.option(form.Flag, 'broadcast', + _('Broadcast'), + _('Force broadcast DHCP response.')); + + so = ss.option(form.Flag, 'dns', + _('Forward/reverse DNS'), + _('Add static forward and reverse DNS entries for this host.')); + + o = s.taboption('leases', CBILeaseStatus, '__status__'); + + if (has_dhcpv6) + o = s.taboption('leases', CBILease6Status, '__status6__'); + + return m.render().then(function(mapEl) { + poll.add(function() { + return callDHCPLeases().then(function(leaseinfo) { + var leases = Array.isArray(leaseinfo.dhcp_leases) ? leaseinfo.dhcp_leases : [], + leases6 = Array.isArray(leaseinfo.dhcp6_leases) ? leaseinfo.dhcp6_leases : []; + + cbi_update_table(mapEl.querySelector('#lease_status_table'), + leases.map(function(lease) { + var exp; + + if (lease.expires === false) + exp = E('em', _('unlimited')); + else if (lease.expires <= 0) + exp = E('em', _('expired')); + else + exp = '%t'.format(lease.expires); + + var hint = lease.macaddr ? hosts[lease.macaddr] : null, + name = hint ? hint.name : null, + host = null; + + if (name && lease.hostname && lease.hostname != name) + host = '%s (%s)'.format(lease.hostname, name); + else if (lease.hostname) + host = lease.hostname; + + return [ + host || '-', + lease.ipaddr, + lease.macaddr, + exp + ]; + }), + E('em', _('There are no active leases'))); + + if (has_dhcpv6) { + cbi_update_table(mapEl.querySelector('#lease6_status_table'), + leases6.map(function(lease) { + var exp; + + if (lease.expires === false) + exp = E('em', _('unlimited')); + else if (lease.expires <= 0) + exp = E('em', _('expired')); + else + exp = '%t'.format(lease.expires); + + var hint = lease.macaddr ? hosts[lease.macaddr] : null, + name = hint ? (hint.name || L.toArray(hint.ipaddrs || hint.ipv4)[0] || L.toArray(hint.ip6addrs || hint.ipv6)[0]) : null, + host = null; + + if (name && lease.hostname && lease.hostname != name && lease.ip6addr != name) + host = '%s (%s)'.format(lease.hostname, name); + else if (lease.hostname) + host = lease.hostname; + else if (name) + host = name; + + return [ + host || '-', + lease.ip6addrs ? lease.ip6addrs.join('
    ') : lease.ip6addr, + lease.duid, + exp + ]; + }), + E('em', _('There are no active leases'))); + } + }); + }); + + return mapEl; + }); + } +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js b/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js new file mode 100644 index 000000000..1bfa95501 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/diagnostics.js @@ -0,0 +1,181 @@ +'use strict'; +'require view'; +'require dom'; +'require fs'; +'require ui'; +'require uci'; +'require network'; + +return view.extend({ + handleCommand: function(exec, args) { + var buttons = document.querySelectorAll('.diag-action > .cbi-button'); + + for (var i = 0; i < buttons.length; i++) + buttons[i].setAttribute('disabled', 'true'); + + return fs.exec(exec, args).then(function(res) { + var out = document.querySelector('textarea'); + + dom.content(out, [ res.stdout || '', res.stderr || '' ]); + }).catch(function(err) { + ui.addNotification(null, E('p', [ err ])) + }).finally(function() { + for (var i = 0; i < buttons.length; i++) + buttons[i].removeAttribute('disabled'); + }); + }, + + handlePing: function(ev, cmd) { + var exec = cmd || 'ping', + addr = ev.currentTarget.parentNode.previousSibling.value, + args = (exec == 'ping') ? [ '-4', '-c', '5', '-W', '1', addr ] : [ '-6', '-c', '5', addr ]; + + return this.handleCommand(exec, args); + }, + + handleTraceroute: function(ev, cmd) { + var exec = cmd || 'traceroute', + addr = ev.currentTarget.parentNode.previousSibling.value, + args = (exec == 'traceroute') ? [ '-4', '-q', '1', '-w', '1', '-n', '-m', String(L.env.rpctimeout || 20), addr ] : [ '-q', '1', '-w', '2', '-n', addr ]; + + return this.handleCommand(exec, args); + }, + + handleNslookup: function(ev, cmd) { + var addr = ev.currentTarget.parentNode.previousSibling.value; + + return this.handleCommand('nslookup', [ addr ]); + }, + + handleArpScan: function(ev, cmd) { + var addr = ev.currentTarget.parentNode.previousSibling.value; + + return this.handleCommand('arp-scan', [ '-l', '-I', addr ]); + }, + + load: function() { + return Promise.all([ + L.resolveDefault(fs.stat('/bin/ping6'), {}), + L.resolveDefault(fs.stat('/usr/bin/ping6'), {}), + L.resolveDefault(fs.stat('/bin/traceroute6'), {}), + L.resolveDefault(fs.stat('/usr/bin/traceroute6'), {}), + L.resolveDefault(fs.stat('/usr/bin/arp-scan'), {}), + network.getDevices(), + uci.load('luci') + ]); + }, + + render: function(res) { + var has_ping6 = res[0].path || res[1].path, + has_traceroute6 = res[2].path || res[3].path, + has_arpscan = res[4].path, + devices = res[5], + dns_host = uci.get('luci', 'diag', 'dns') || 'openwrt.org', + ping_host = uci.get('luci', 'diag', 'ping') || 'openwrt.org', + route_host = uci.get('luci', 'diag', 'route') || 'openwrt.org'; + + var table = E('table', { 'class': 'table' }, [ + E('tr', { 'class': 'tr' }, [ + E('td', { 'class': 'td left', 'style': 'overflow:initial' }, [ + E('input', { + 'style': 'margin:5px 0', + 'type': 'text', + 'value': ping_host + }), + E('span', { 'class': 'diag-action' }, [ + has_ping6 ? new ui.ComboButton('ping', { + 'ping': '%s %s'.format(_('IPv4'), _('Ping')), + 'ping6': '%s %s'.format(_('IPv6'), _('Ping')), + }, { + 'click': ui.createHandlerFn(this, 'handlePing'), + 'classes': { + 'ping': 'btn cbi-button cbi-button-action', + 'ping6': 'btn cbi-button cbi-button-action' + } + }).render() : E('button', { + 'class': 'cbi-button cbi-button-action', + 'click': ui.createHandlerFn(this, 'handlePing') + }, [ _('Ping') ]) + ]) + ]), + + E('td', { 'class': 'td left', 'style': 'overflow:initial' }, [ + E('input', { + 'style': 'margin:5px 0', + 'type': 'text', + 'value': route_host + }), + E('span', { 'class': 'diag-action' }, [ + has_traceroute6 ? new ui.ComboButton('traceroute', { + 'traceroute': '%s %s'.format(_('IPv4'), _('Traceroute')), + 'traceroute6': '%s %s'.format(_('IPv6'), _('Traceroute')), + }, { + 'click': ui.createHandlerFn(this, 'handleTraceroute'), + 'classes': { + 'traceroute': 'btn cbi-button cbi-button-action', + 'traceroute6': 'btn cbi-button cbi-button-action' + } + }).render() : E('button', { + 'class': 'cbi-button cbi-button-action', + 'click': ui.createHandlerFn(this, 'handleTraceroute') + }, [ _('Traceroute') ]) + ]) + ]), + + E('td', { 'class': 'td left' }, [ + E('input', { + 'style': 'margin:5px 0', + 'type': 'text', + 'value': dns_host + }), + E('span', { 'class': 'diag-action' }, [ + E('button', { + 'class': 'cbi-button cbi-button-action', + 'click': ui.createHandlerFn(this, 'handleNslookup') + }, [ _('Nslookup') ]) + ]) + ]), + + has_arpscan ? E('td', { 'class': 'td left' }, [ + E('select', { + 'style': 'margin:5px 0' + }, devices.map(function(device) { + if (!device.isUp()) + return E([]); + + return E('option', { 'value': device.getName() }, [ device.getI18n() ]); + })), + E('span', { 'class': 'diag-action' }, [ + E('button', { + 'class': 'cbi-button cbi-button-action', + 'click': ui.createHandlerFn(this, 'handleArpScan') + }, [ _('Arp-scan') ]) + ]) + ]) : E([]), + ]) + ]); + + var view = E('div', { 'class': 'cbi-map'}, [ + E('h2', {}, [ _('Diagnostics') ]), + E('div', { 'class': 'cbi-map-descr'}, _('Execution of various network commands to check the connection and name resolution to other systems.')), + table, + E('div', {'class': 'cbi-section'}, [ + E('div', { 'id' : 'command-output'}, + E('textarea', { + 'id': 'widget.command-output', + 'style': 'width: 100%; font-family:monospace; white-space:pre', + 'readonly': true, + 'wrap': 'off', + 'rows': '20' + }) + ) + ]) + ]); + + return view; + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js b/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js new file mode 100644 index 000000000..1f63de5c4 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js @@ -0,0 +1,1751 @@ +'use strict'; +'require view'; +'require dom'; +'require poll'; +'require fs'; +'require ui'; +'require uci'; +'require form'; +'require network'; +'require firewall'; +'require tools.widgets as widgets'; +'require tools.network as nettools'; + +var isReadonlyView = !L.hasViewPermission() || null; + +function count_changes(section_id) { + var changes = ui.changes.changes, n = 0; + + if (!L.isObject(changes)) + return n; + + if (Array.isArray(changes.network)) + for (var i = 0; i < changes.network.length; i++) + n += (changes.network[i][1] == section_id); + + if (Array.isArray(changes.dhcp)) + for (var i = 0; i < changes.dhcp.length; i++) + n += (changes.dhcp[i][1] == section_id); + + return n; +} + +function render_iface(dev, alias) { + var type = dev ? dev.getType() : 'ethernet', + up = dev ? dev.isUp() : false; + + return E('span', { class: 'cbi-tooltip-container' }, [ + E('img', { 'class' : 'middle', 'src': L.resource('icons/%s%s.png').format( + alias ? 'alias' : type, + up ? '' : '_disabled') }), + E('span', { 'class': 'cbi-tooltip ifacebadge large' }, [ + E('img', { 'src': L.resource('icons/%s%s.png').format( + type, up ? '' : '_disabled') }), + L.itemlist(E('span', { 'class': 'left' }), [ + _('Type'), dev ? dev.getTypeI18n() : null, + _('Device'), dev ? dev.getName() : _('Not present'), + _('Connected'), up ? _('yes') : _('no'), + _('MAC'), dev ? dev.getMAC() : null, + _('RX'), dev ? '%.2mB (%d %s)'.format(dev.getRXBytes(), dev.getRXPackets(), _('Pkts.')) : null, + _('TX'), dev ? '%.2mB (%d %s)'.format(dev.getTXBytes(), dev.getTXPackets(), _('Pkts.')) : null + ]) + ]) + ]); +} + +function render_status(node, ifc, with_device) { + var desc = null, c = []; + + if (ifc.isDynamic()) + desc = _('Virtual dynamic interface'); + else if (ifc.isAlias()) + desc = _('Alias Interface'); + else if (!uci.get('network', ifc.getName())) + return L.itemlist(node, [ + null, E('em', _('Interface is marked for deletion')) + ]); + + desc = desc ? '%s (%s)'.format(desc, ifc.getI18n()) : ifc.getI18n(); + + const changecount = with_device ? 0 : count_changes(ifc.getName()); + const maindev = ifc.getL3Device() || ifc.getDevice(); + const macaddr = maindev ? maindev.getMAC() : null; + const cond00 = !changecount && !ifc.isDynamic() && !ifc.isAlias(); + const cond01 = cond00 && macaddr; + const cond02 = cond00 && maindev; + + function addEntries(label, array) { + return Array.isArray(array) ? array.flatMap((item) => [label, item]) : [label, null]; + } + + return L.itemlist(node, [ + _('Protocol'), with_device ? null : (desc || '?'), + _('Device'), with_device ? (maindev ? maindev.getShortName() : E('em', _('Not present'))) : null, + _('Uptime'), (!changecount && ifc.isUp()) ? '%t'.format(ifc.getUptime()) : null, + _('MAC'), (cond01) ? macaddr : null, + _('RX'), (cond02) ? '%.2mB (%d %s)'.format(maindev.getRXBytes(), maindev.getRXPackets(), _('Pkts.')) : null, + _('TX'), (cond02) ? '%.2mB (%d %s)'.format(maindev.getTXBytes(), maindev.getTXPackets(), _('Pkts.')) : null, + ...addEntries(_('IPv4'), changecount ? [] : ifc.getIPAddrs()), + ...addEntries(_('IPv6'), changecount ? [] : ifc.getIP6Addrs()), + ...addEntries(_('IPv6-PD'), changecount ? null : ifc.getIP6Prefixes?.()), + _('Information'), with_device ? null : (ifc.get('disabled') != '1' ? null : _('Interface disabled')), + _('Information'), with_device ? null : (ifc.get('auto') != '0' ? null : _('Not started on boot')), + ...addEntries(_('Error'), ifc.getErrors()), + null, changecount ? E('a', { + href: '#', + click: L.bind(ui.changes.displayChanges, ui.changes) + }, _('Interface has %d pending changes').format(changecount)) : null + ]); +} + +function render_modal_status(node, ifc) { + var dev = ifc ? (ifc.getDevice() || ifc.getL3Device() || ifc.getL3Device()) : null; + + dom.content(node, [ + E('img', { + 'src': L.resource('icons/%s%s.png').format(dev ? dev.getType() : 'ethernet', (dev && dev.isUp()) ? '' : '_disabled'), + 'title': dev ? dev.getTypeI18n() : _('Not present') + }), + ifc ? render_status(E('span'), ifc, true) : E('em', _('Interface not present or not connected yet.')) + ]); + + return node; +} + +function render_ifacebox_status(node, ifc) { + var dev = ifc.getL3Device() || ifc.getDevice(), + subdevs = dev ? dev.getPorts() : null, + c = [ render_iface(dev, ifc.isAlias()) ]; + + if (subdevs && subdevs.length) { + var sifs = [ ' (' ]; + + for (var j = 0; j < subdevs.length; j++) + sifs.push(render_iface(subdevs[j])); + + sifs.push(')'); + + c.push(E('span', {}, sifs)); + } + + c.push(E('br')); + c.push(E('small', {}, ifc.isAlias() ? _('Alias of "%s"').format(ifc.isAlias()) + : (dev ? dev.getName() : E('em', _('Not present'))))); + + dom.content(node, c); + + return firewall.getZoneByNetwork(ifc.getName()).then(L.bind(function(zone) { + this.style.backgroundColor = zone ? zone.getColor() : '#EEEEEE'; + this.title = zone ? _('Part of zone %q').format(zone.getName()) : _('No zone assigned'); + }, node.previousElementSibling)); +} + +function iface_updown(up, id, ev, force) { + var row = document.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(id)), + dsc = row.querySelector('[data-name="_ifacestat"] > div'), + btns = row.querySelectorAll('.cbi-section-actions .reconnect, .cbi-section-actions .down'); + + btns[+!up].blur(); + btns[+!up].classList.add('spinning'); + + btns[0].disabled = true; + btns[1].disabled = true; + + if (!up) { + L.resolveDefault(fs.exec_direct('/usr/libexec/luci-peeraddr')).then(function(res) { + var info = null; try { info = JSON.parse(res); } catch(e) {} + + if (L.isObject(info) && + Array.isArray(info.inbound_interfaces) && + info.inbound_interfaces.filter(function(i) { return i == id })[0]) { + + ui.showModal(_('Confirm disconnect'), [ + E('p', _('You appear to be currently connected to the device via the "%h" interface. Do you really want to shut down the interface?').format(id)), + E('div', { 'class': 'button-row' }, [ + E('button', { + 'class': 'btn cbi-button cbi-button-neutral', + 'click': function(ev) { + btns[1].classList.remove('spinning'); + btns[1].disabled = false; + btns[0].disabled = false; + + ui.hideModal(); + } + }, _('Cancel')), + ' ', + E('button', { + 'class': 'btn cbi-button cbi-button-negative important', + 'click': function(ev) { + dsc.setAttribute('disconnect', ''); + dom.content(dsc, E('em', _('Interface is shutting down...'))); + + ui.hideModal(); + } + }, _('Disconnect')) + ]) + ]); + } + else { + dsc.setAttribute('disconnect', ''); + dom.content(dsc, E('em', _('Interface is shutting down...'))); + } + }); + } + else { + dsc.setAttribute(up ? 'reconnect' : 'disconnect', force ? 'force' : ''); + dom.content(dsc, E('em', up ? _('Interface is reconnecting...') : _('Interface is shutting down...'))); + } +} + +function get_netmask(s, use_cfgvalue) { + var readfn = use_cfgvalue ? 'cfgvalue' : 'formvalue', + addrs = L.toArray(s[readfn](s.section, 'ipaddr')), + mask = s[readfn](s.section, 'netmask'), + firstsubnet = mask ? addrs[0] + '/' + mask : addrs.filter(function(a) { return a.indexOf('/') > 0 })[0]; + + if (firstsubnet == null) + return null; + + var subnetmask = firstsubnet.split('/')[1]; + + if (!isNaN(subnetmask)) + subnetmask = network.prefixToMask(+subnetmask); + + return subnetmask; +} + +function has_peerdns(proto) { + switch (proto) { + case 'dhcp': + case 'dhcpv6': + case 'qmi': + case 'ppp': + case 'pppoe': + case 'pppoa': + case 'pptp': + case 'openvpn': + case 'sstp': + return true; + } + + return false; +} + +function has_sourcefilter(proto) { + switch (proto) { + case '3g': + case 'dhcpv6': + case 'directip': + case 'mbim': + case 'modemmanager': + case 'ncm': + case 'ppp': + case 'pppoa': + case 'pppoe': + case 'pptp': + case 'qmi': + return true; + } + + return false; +} + +return view.extend({ + poll_status: function(map, networks) { + var resolveZone = null; + + for (var i = 0; i < networks.length; i++) { + var ifc = networks[i], + row = map.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(ifc.getName())); + + if (row == null) + continue; + + var dsc = row.querySelector('[data-name="_ifacestat"] > div'), + box = row.querySelector('[data-name="_ifacebox"] .ifacebox-body'), + btn1 = row.querySelector('.cbi-section-actions .reconnect'), + btn2 = row.querySelector('.cbi-section-actions .down'), + stat = document.querySelector('[id="%s-ifc-status"]'.format(ifc.getName())), + resolveZone = render_ifacebox_status(box, ifc), + disabled = ifc ? !ifc.isUp() : true, + dynamic = ifc ? ifc.isDynamic() : false; + + if (dsc.hasAttribute('reconnect')) { + dom.content(dsc, E('em', _('Interface is starting...'))); + } + else if (dsc.hasAttribute('disconnect')) { + dom.content(dsc, E('em', _('Interface is stopping...'))); + } + else if (ifc.getProtocol() || uci.get('network', ifc.getName()) == null) { + render_status(dsc, ifc, false); + } + else if (!ifc.getProtocol()) { + var e = map.querySelector('[id="cbi-network-%s"] .cbi-button-edit'.format(ifc.getName())); + if (e) e.disabled = true; + + var link = L.url('admin/system/package-manager') + '?query=luci-proto'; + dom.content(dsc, [ + E('em', _('Unsupported protocol type.')), E('br'), + E('a', { href: link }, _('Install protocol extensions...')) + ]); + } + else { + dom.content(dsc, E('em', _('Interface not present or not connected yet.'))); + } + + if (stat) { + var dev = ifc.getDevice(); + dom.content(stat, [ + E('img', { + 'src': L.resource('icons/%s%s.png').format(dev ? dev.getType() : 'ethernet', (dev && dev.isUp()) ? '' : '_disabled'), + 'title': dev ? dev.getTypeI18n() : _('Not present') + }), + render_status(E('span'), ifc, true) + ]); + } + + btn1.disabled = isReadonlyView || btn1.classList.contains('spinning') || btn2.classList.contains('spinning') || dynamic; + btn2.disabled = isReadonlyView || btn1.classList.contains('spinning') || btn2.classList.contains('spinning') || dynamic || disabled; + } + + document.querySelectorAll('.port-status-device[data-device]').forEach(function(node) { + nettools.updateDevBadge(node, network.instantiateDevice(node.getAttribute('data-device'))); + }); + + document.querySelectorAll('.port-status-link[data-device]').forEach(function(node) { + nettools.updatePortStatus(node, network.instantiateDevice(node.getAttribute('data-device'))); + }); + + return Promise.all([ resolveZone, network.flushCache() ]); + }, + + load: function() { + return Promise.all([ + network.getDSLModemType(), + network.getDevices(), + fs.lines('/etc/iproute2/rt_tables'), + uci.changes() + ]); + }, + + interfaceBridgeWithIfnameSections: function() { + return uci.sections('network', 'interface').filter(function(ns) { + return ns.type == 'bridge' && !ns.ports && ns.ifname; + }); + }, + + deviceWithIfnameSections: function() { + return uci.sections('network', 'device').filter(function(ns) { + return ns.type == 'bridge' && !ns.ports && ns.ifname; + }); + }, + + interfaceWithIfnameSections: function() { + return uci.sections('network', 'interface').filter(function(ns) { + return !ns.device && ns.ifname; + }); + }, + + handleBridgeMigration: function(ev) { + var tasks = []; + + this.interfaceBridgeWithIfnameSections().forEach(function(ns) { + var device_name = 'br-' + ns['.name']; + + tasks.push(uci.callAdd('network', 'device', null, { + 'name': device_name, + 'type': 'bridge', + 'ports': L.toArray(ns.ifname), + 'mtu': ns.mtu, + 'macaddr': ns.macaddr, + 'igmp_snooping': ns.igmp_snooping + })); + + tasks.push(uci.callSet('network', ns['.name'], { + 'type': '', + 'ifname': '', + 'mtu': '', + 'macaddr': '', + 'igmp_snooping': '', + 'device': device_name + })); + }); + + return Promise.all(tasks) + .then(L.bind(ui.changes.init, ui.changes)) + .then(L.bind(ui.changes.apply, ui.changes)); + }, + + renderBridgeMigration: function() { + ui.showModal(_('Network bridge configuration migration'), [ + E('p', _('The existing network configuration needs to be changed for LuCI to function properly.')), + E('p', _('Upon pressing "Continue", bridges configuration will be updated and the network will be restarted to apply the updated configuration.')), + E('div', { 'class': 'right' }, + E('button', { + 'class': 'btn cbi-button-action important', + 'click': ui.createHandlerFn(this, 'handleBridgeMigration') + }, _('Continue'))) + ]); + }, + + handleIfnameMigration: function(ev) { + var tasks = []; + + this.deviceWithIfnameSections().forEach(function(ds) { + tasks.push(uci.callSet('network', ds['.name'], { + 'ifname': '', + 'ports': L.toArray(ds.ifname) + })); + }); + + this.interfaceWithIfnameSections().forEach(function(ns) { + tasks.push(uci.callSet('network', ns['.name'], { + 'ifname': '', + 'device': ns.ifname + })); + }); + + return Promise.all(tasks) + .then(L.bind(ui.changes.init, ui.changes)) + .then(L.bind(ui.changes.apply, ui.changes)); + }, + + renderIfnameMigration: function() { + ui.showModal(_('Network ifname configuration migration'), [ + E('p', _('The existing network configuration needs to be changed for LuCI to function properly.')), + E('p', _('Upon pressing "Continue", ifname options will get renamed and the network will be restarted to apply the updated configuration.')), + E('div', { 'class': 'right' }, + E('button', { + 'class': 'btn cbi-button-action important', + 'click': ui.createHandlerFn(this, 'handleIfnameMigration') + }, _('Continue'))) + ]); + }, + + render: function(data) { + + if (this.interfaceBridgeWithIfnameSections().length) + return this.renderBridgeMigration(); + else if (this.deviceWithIfnameSections().length || this.interfaceWithIfnameSections().length) + return this.renderIfnameMigration(); + + var dslModemType = data[0], + netDevs = data[1], + m, s, o; + + var rtTables = data[2].map(function(l) { + var m = l.trim().match(/^(\d+)\s+(\S+)$/); + return m ? [ +m[1], m[2] ] : null; + }).filter(function(e) { + return e && e[0] > 0; + }); + + m = new form.Map('network'); + m.tabbed = true; + m.chain('dhcp'); + + s = m.section(form.GridSection, 'interface', _('Interfaces')); + s.anonymous = true; + s.addremove = true; + s.addbtntitle = _('Add new interface...'); + + s.load = function() { + return Promise.all([ + network.getNetworks(), + firewall.getZones(), + uci.load('system') + ]).then(L.bind(function(data) { + this.networks = data[0]; + this.zones = data[1]; + }, this)); + }; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + s.tab('physical', _('Physical Settings')); + s.tab('brport', _('Bridge port specific options')); + s.tab('bridgevlan', _('Bridge VLAN filtering')); + s.tab('firewall', _('Firewall Settings')); + s.tab('dhcp', _('DHCP Server')); + + s.cfgsections = function() { + return this.networks.map(function(n) { return n.getName() }) + .filter(function(n) { return n != 'loopback' }); + }; + + s.modaltitle = function(section_id) { + return _('Interfaces') + ' » ' + section_id; + }; + + s.renderRowActions = function(section_id) { + var tdEl = this.super('renderRowActions', [ section_id, _('Edit') ]), + net = this.networks.filter(function(n) { return n.getName() == section_id })[0], + disabled = net ? !net.isUp() : true, + dynamic = net ? net.isDynamic() : false; + + dom.content(tdEl.lastChild, [ + E('button', { + 'class': 'cbi-button cbi-button-neutral reconnect', + 'click': iface_updown.bind(this, true, section_id), + 'title': _('Reconnect this interface'), + 'disabled': dynamic ? 'disabled' : null + }, _('Restart')), + E('button', { + 'class': 'cbi-button cbi-button-neutral down', + 'click': iface_updown.bind(this, false, section_id), + 'title': _('Shutdown this interface'), + 'disabled': (dynamic || disabled) ? 'disabled' : null + }, _('Stop')), + tdEl.lastChild.firstChild, + tdEl.lastChild.lastChild + ]); + + if (!dynamic && net && !uci.get('network', net.getName())) { + tdEl.lastChild.childNodes[0].disabled = true; + tdEl.lastChild.childNodes[2].disabled = true; + tdEl.lastChild.childNodes[3].disabled = true; + } + + if (dynamic) { + //disable the 'Edit' button on dynamic interfaces + tdEl.lastChild.childNodes[2].disabled = true; + } + + return tdEl; + }; + + s.addModalOptions = function(s) { + var protoval = uci.get('network', s.section, 'proto') || 'none', + o, proto_select, proto_switch, type, stp, igmp, ss, so; + + return network.getNetwork(s.section).then(L.bind(function(ifc) { + var protocols = network.getProtocols(); + + protocols.sort(function(a, b) { + return L.naturalCompare(a.getProtocol(), b.getProtocol()); + }); + + o = s.taboption('general', form.DummyValue, '_ifacestat_modal', _('Status')); + o.modalonly = true; + o.cfgvalue = L.bind(function(section_id) { + var net = this.networks.filter(function(n) { return n.getName() == section_id })[0]; + + return render_modal_status(E('div', { + 'id': '%s-ifc-status'.format(section_id), + 'class': 'ifacebadge large' + }), net); + }, this); + o.write = function() {}; + + + proto_select = s.taboption('general', form.ListValue, 'proto', _('Protocol')); + proto_select.modalonly = true; + proto_select.default = 'none'; + + proto_switch = s.taboption('general', form.Button, '_switch_proto'); + proto_switch.modalonly = true; + proto_switch.title = _('Really switch protocol?'); + proto_switch.inputtitle = _('Switch protocol'); + proto_switch.inputstyle = 'apply'; + proto_switch.onclick = L.bind(function(ev) { + s.map.save() + .then(L.bind(m.load, m)) + .then(L.bind(m.render, m)) + .then(L.bind(this.renderMoreOptionsModal, this, s.section)); + }, this); + + o = s.taboption('general', widgets.DeviceSelect, '_net_device', _('Device')); + o.ucioption = 'device'; + o.nobridges = false; + o.optional = false; + o.network = ifc.getName(); + o.exclude = '@' + ifc.getName(); + + o = s.taboption('general', form.Flag, 'disabled', _('Disable this interface')); + o.modalonly = true; + + o = s.taboption('general', form.Flag, 'auto', _('Bring up on boot')); + o.modalonly = true; + o.default = o.enabled; + + if (L.hasSystemFeature('firewall')) { + o = s.taboption('firewall', widgets.ZoneSelect, '_zone', _('Create / Assign firewall-zone'), _('Choose the firewall zone you want to assign to this interface. Select unspecified to remove the interface from the associated zone or fill out the custom field to define a new zone and attach the interface to it.')); + o.network = ifc.getName(); + o.optional = true; + + o.cfgvalue = function(section_id) { + return firewall.getZoneByNetwork(ifc.getName()).then(function(zone) { + return (zone != null ? zone.getName() : null); + }); + }; + + o.write = o.remove = function(section_id, value) { + return Promise.all([ + firewall.getZoneByNetwork(ifc.getName()), + (value != null) ? firewall.getZone(value) : null + ]).then(function(data) { + var old_zone = data[0], + new_zone = data[1]; + + if (old_zone == null && new_zone == null && (value == null || value == '')) + return; + + if (old_zone != null && new_zone != null && old_zone.getName() == new_zone.getName()) + return; + + if (old_zone != null) + old_zone.deleteNetwork(ifc.getName()); + + if (new_zone != null) + new_zone.addNetwork(ifc.getName()); + else if (value != null) + return firewall.addZone(value).then(function(new_zone) { + new_zone.addNetwork(ifc.getName()); + }); + }); + }; + } + + for (var i = 0; i < protocols.length; i++) { + proto_select.value(protocols[i].getProtocol(), protocols[i].getI18n()); + + if (protocols[i].getProtocol() != protoval) + proto_switch.depends('proto', protocols[i].getProtocol()); + } + + if (L.hasSystemFeature('dnsmasq') || L.hasSystemFeature('odhcpd')) { + o = s.taboption('dhcp', form.SectionValue, '_dhcp', form.TypedSection, 'dhcp'); + + ss = o.subsection; + ss.uciconfig = 'dhcp'; + ss.addremove = false; + ss.anonymous = true; + + ss.tab('general', _('General Setup')); + ss.tab('advanced', _('Advanced Settings')); + ss.tab('ipv6', _('IPv6 Settings')); + ss.tab('ipv6-ra', _('IPv6 RA Settings')); + + ss.filter = function(section_id) { + return (uci.get('dhcp', section_id, 'interface') == ifc.getName()); + }; + + ss.renderSectionPlaceholder = function() { + return E('div', { 'class': 'cbi-section-create' }, [ + E('p', _('No DHCP Server configured for this interface') + '   '), + E('button', { + 'class': 'cbi-button cbi-button-add', + 'title': _('Set up DHCP Server'), + 'click': ui.createHandlerFn(this, function(section_id, ev) { + this.map.save(function() { + uci.add('dhcp', 'dhcp', section_id); + uci.set('dhcp', section_id, 'interface', section_id); + + if (protoval == 'static') { + uci.set('dhcp', section_id, 'start', 100); + uci.set('dhcp', section_id, 'limit', 150); + uci.set('dhcp', section_id, 'leasetime', '12h'); + } + else { + uci.set('dhcp', section_id, 'ignore', 1); + } + }); + }, ifc.getName()) + }, _('Set up DHCP Server')) + ]); + }; + + ss.taboption('general', form.Flag, 'ignore', _('Ignore interface'), _('Disable DHCP for this interface.')); + + if (protoval == 'static') { + so = ss.taboption('general', form.Value, 'start', _('Start', 'DHCP IP range start address'), _('Lowest leased address as offset from the network address.')); + so.optional = true; + so.datatype = 'or(uinteger,ip4addr("nomask"))'; + so.default = '100'; + + so = ss.taboption('general', form.Value, 'limit', _('Limit'), _('Maximum number of leased addresses.')); + so.optional = true; + so.datatype = 'uinteger'; + so.default = '150'; + + so = ss.taboption('general', form.Value, 'leasetime', _('Lease time'), _('Expiry time of leased addresses, minimum is 2 minutes (2m).')); + so.optional = true; + so.default = '12h'; + so.validate = function (section_id, value) { + if (value === "infinite" || value === "deprecated") { + return true; + } + + const regex = new RegExp("^[0-9]+[smhdw]?$", "i"); + if (regex.test(value)) { + return true; + } + return _("Invalid DHCP lease time format. Use integer values optionally followed by s, m, h, d, or w."); + } + + so = ss.taboption('advanced', form.Flag, 'dynamicdhcp', _('Dynamic DHCP'), _('Dynamically allocate DHCP addresses for clients. If disabled, only clients having static leases will be served.')); + so.default = so.enabled; + + ss.taboption('advanced', form.Flag, 'force', _('Force'), _('Force DHCP on this network even if another server is detected.')); + + // XXX: is this actually useful? + //ss.taboption('advanced', form.Value, 'name', _('Name'), _('Define a name for this network.')); + + so = ss.taboption('advanced', form.Value, 'netmask', _('IPv4-Netmask'), _('Override the netmask sent to clients. Normally it is calculated from the subnet that is served.')); + so.optional = true; + so.datatype = 'ip4addr'; + + so.render = function(option_index, section_id, in_table) { + this.placeholder = get_netmask(s, true); + return form.Value.prototype.render.apply(this, [ option_index, section_id, in_table ]); + }; + + so.validate = function(section_id, value) { + var uielem = this.getUIElement(section_id); + if (uielem) + uielem.setPlaceholder(get_netmask(s, false)); + return form.Value.prototype.validate.apply(this, [ section_id, value ]); + }; + + ss.taboption('advanced', form.DynamicList, 'dhcp_option', _('DHCP-Options'), _('Define additional DHCP options, for example "6,192.168.2.1,192.168.2.2" which advertises different DNS servers to clients.')); + } + + + var has_other_master = uci.sections('dhcp', 'dhcp').filter(function(s) { + return (s.interface != ifc.getName() && s.master == '1'); + })[0]; + + so = ss.taboption('ipv6', form.Flag , 'master', _('Designated master')); + so.readonly = has_other_master ? true : false; + so.description = has_other_master + ? _('Interface "%h" is already marked as designated master.').format(has_other_master.interface || has_other_master['.name']) + : _('Set this interface as master for RA and DHCPv6 relaying as well as NDP proxying.') + ; + + so.validate = function(section_id, value) { + var hybrid_downstream_desc = _('Operate in relay mode if a designated master interface is configured and active, otherwise fall back to server mode.'), + ndp_downstream_desc = _('Operate in relay mode if a designated master interface is configured and active, otherwise disable NDP proxying.'), + hybrid_master_desc = _('Operate in relay mode if an upstream IPv6 prefix is present, otherwise disable service.'), + ra_server_allowed = true, + checked = this.formvalue(section_id), + dhcpv6 = this.section.getOption('dhcpv6').getUIElement(section_id), + ndp = this.section.getOption('ndp').getUIElement(section_id), + ra = this.section.getOption('ra').getUIElement(section_id); + + /* Assume that serving RAs by default is fine, but disallow it for certain + interface protocols such as DHCP, DHCPv6 or the various PPP flavors. + The intent is only to allow RA serving for interface protocols doing + some kind of static IP config over something resembling a layer 2 + Ethernet device. */ + switch (protoval) { + case 'dhcp': + case 'dhcpv6': + case '3g': + case 'l2tp': + case 'ppp': + case 'pppoa': + case 'pppoe': + case 'pptp': + case 'pppossh': + case 'ipip': + case 'gre': + case 'grev6': + ra_server_allowed = false; + break; + } + + if (checked == '1' || !ra_server_allowed) { + dhcpv6.node.querySelector('li[data-value="server"]').setAttribute('unselectable', ''); + + if (dhcpv6.getValue() == 'server') + dhcpv6.setValue('hybrid'); + + ra.node.querySelector('li[data-value="server"]').setAttribute('unselectable', ''); + + if (ra.getValue() == 'server') + ra.setValue('hybrid'); + } + + if (checked == '1') { + dhcpv6.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = hybrid_master_desc; + ra.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = hybrid_master_desc; + ndp.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = hybrid_master_desc; + } + else { + if (ra_server_allowed) { + dhcpv6.node.querySelector('li[data-value="server"]').removeAttribute('unselectable'); + ra.node.querySelector('li[data-value="server"]').removeAttribute('unselectable'); + } + + dhcpv6.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = hybrid_downstream_desc; + ra.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = hybrid_downstream_desc; + ndp.node.querySelector('li[data-value="hybrid"] > div > span').innerHTML = ndp_downstream_desc ; + } + + return true; + }; + + + so = ss.taboption('ipv6', form.RichListValue, 'ra', _('RA-Service'), + _('Configures the operation mode of the RA service on this interface.')); + so.optional = true; + so.value('', _('disabled'), + _('Do not send any RA messages on this interface.')); + so.value('server', _('server mode'), + _('Send RA messages advertising this device as IPv6 router.')); + so.value('relay', _('relay mode'), + _('Forward RA messages received on the designated master interface to downstream interfaces.')); + so.value('hybrid', _('hybrid mode'), ' '); + + + so = ss.taboption('ipv6-ra', form.RichListValue, 'ra_default', _('Default router'), + _('Configures the default router advertisement in RA messages.')); + so.optional = true; + so.value('', _('automatic'), + _('Announce this device as default router if a local IPv6 default route is present.')); + so.value('1', _('on available prefix'), + _('Announce this device as default router if a public IPv6 prefix is available, regardless of local default route availability.')); + so.value('2', _('forced'), + _('Announce this device as default router regardless of whether a prefix or default route is present.')); + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.Flag, 'ra_slaac', _('Enable SLAAC'), + _('Set the autonomous address-configuration flag in the prefix information options of sent RA messages. When enabled, clients will perform stateless IPv6 address autoconfiguration.')); + so.default = so.enabled; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.RichListValue, 'ra_flags', _('RA Flags'), + _('Specifies the flags sent in RA messages, for example to instruct clients to request further information via stateful DHCPv6.')); + so.optional = true; + so.value('managed-config', _('managed config (M)'), + _('The Managed address configuration (M) flag indicates that IPv6 addresses are available via DHCPv6.')); + so.value('other-config', _('other config (O)'), + _('The Other configuration (O) flag indicates that other information, such as DNS servers, is available via DHCPv6.')); + so.value('home-agent', _('mobile home agent (H)'), + _('The Mobile IPv6 Home Agent (H) flag indicates that the device is also acting as Mobile IPv6 home agent on this link.')); + so.multiple = true; + so.select_placeholder = _('none'); + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + so.cfgvalue = function(section_id) { + var flags = L.toArray(uci.get('dhcp', section_id, 'ra_flags')); + return flags.length ? flags : [ 'other-config' ]; + }; + so.remove = function(section_id) { + var existing = L.toArray(uci.get('dhcp', section_id, 'ra_flags')); + if (this.isActive(section_id)) { + if (existing.length != 1 || existing[0] != 'none') + uci.set('dhcp', section_id, 'ra_flags', [ 'none' ]); + } + else if (existing.length) { + uci.unset('dhcp', section_id, 'ra_flags'); + } + }; + + so = ss.taboption('ipv6-ra', form.Value, 'ra_pref64', _('NAT64 prefix'), _('Announce NAT64 prefix in RA messages.')); + so.optional = true; + so.datatype = 'cidr6'; + so.placeholder = '64:ff9b::/96'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.Value, 'ra_maxinterval', _('Max RA interval'), _('Maximum time allowed between sending unsolicited RA. Default is 600 seconds.')); + so.optional = true; + so.datatype = 'uinteger'; + so.placeholder = '600'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.Value, 'ra_mininterval', _('Min RA interval'), _('Minimum time allowed between sending unsolicited RA. Default is 200 seconds.')); + so.optional = true; + so.datatype = 'uinteger'; + so.placeholder = '200'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.Value, 'ra_lifetime', _('RA Lifetime'), _('Router Lifetime published in RA messages. Maximum is 9000 seconds.')); + so.optional = true; + so.datatype = 'range(0, 9000)'; + so.placeholder = '1800'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6-ra', form.Value, 'ra_mtu', _('RA MTU'), _('The MTU to be published in RA messages. Minimum is 1280 bytes.')); + so.optional = true; + so.datatype = 'range(1280, 65535)'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + so.load = function(section_id) { + var dev = ifc.getL3Device(), + path = dev ? "/proc/sys/net/ipv6/conf/%s/mtu".format(dev.getName()) : null; + + return Promise.all([ + dev ? L.resolveDefault(fs.read(path), dev.getMTU()) : null, + this.super('load', [section_id]) + ]).then(L.bind(function(res) { + this.placeholder = +res[0]; + + return res[1]; + }, this)); + }; + + so = ss.taboption('ipv6-ra', form.Value, 'ra_hoplimit', _('RA Hop Limit'), _('The maximum hops to be published in RA messages. Maximum is 255 hops.')); + so.optional = true; + so.datatype = 'range(0, 255)'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + so.load = function(section_id) { + var dev = ifc.getL3Device(), + path = dev ? "/proc/sys/net/ipv6/conf/%s/hop_limit".format(dev.getName()) : null; + + return Promise.all([ + dev ? L.resolveDefault(fs.read(path), 64) : null, + this.super('load', [section_id]) + ]).then(L.bind(function(res) { + this.placeholder = +res[0]; + + return res[1]; + }, this)); + }; + + + so = ss.taboption('ipv6', form.RichListValue, 'dhcpv6', _('DHCPv6-Service'), + _('Configures the operation mode of the DHCPv6 service on this interface.')); + so.optional = true; + so.value('', _('disabled'), + _('Do not offer DHCPv6 service on this interface.')); + so.value('server', _('server mode'), + _('Provide a DHCPv6 server on this interface and reply to DHCPv6 solicitations and requests.')); + so.value('relay', _('relay mode'), + _('Forward DHCPv6 messages between the designated master interface and downstream interfaces.')); + so.value('hybrid', _('hybrid mode'), ' '); + + so = ss.taboption('ipv6', form.Value, 'dhcpv6_pd_min_len', _('PD minimum length'), + _('Configures the minimum delegated prefix length assigned to a requesting downstream router, potentially overriding a requested prefix length. If left unspecified, the device will assign the smallest available prefix greater than or equal to the requested prefix.')); + so.datatype = 'range(1,62)'; + so.depends('dhcpv6', 'server'); + + so = ss.taboption('ipv6', form.DynamicList, 'dns', _('Announced IPv6 DNS servers'), + _('Specifies a fixed list of IPv6 DNS server addresses to announce via DHCPv6. If left unspecified, the device will announce itself as IPv6 DNS server unless the Local IPv6 DNS server option is disabled.')); + so.datatype = 'ip6addr("nomask")'; /* restrict to IPv6 only for now since dnsmasq (DHCPv4) does not honour this option */ + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + so.depends('dhcpv6', 'server'); + so.depends({ dhcpv6: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6', form.Flag, 'dns_service', _('Local IPv6 DNS server'), + _('Announce this device as IPv6 DNS server.')); + so.default = so.enabled; + so.depends({ ra: 'server', dns: /^$/ }); + so.depends({ ra: 'hybrid', dns: /^$/, master: '0' }); + so.depends({ dhcpv6: 'server', dns: /^$/ }); + so.depends({ dhcpv6: 'hybrid', dns: /^$/, master: '0' }); + + so = ss.taboption('ipv6', form.DynamicList, 'domain', _('Announced DNS domains'), + _('Specifies a fixed list of DNS search domains to announce via DHCPv6. If left unspecified, the local device DNS search domain will be announced.')); + so.datatype = 'hostname'; + so.depends('ra', 'server'); + so.depends({ ra: 'hybrid', master: '0' }); + so.depends('dhcpv6', 'server'); + so.depends({ dhcpv6: 'hybrid', master: '0' }); + + //This is a DHCPv6 specific odhcpd setting + so = ss.taboption('ipv6', form.DynamicList, 'ntp', _('NTP Servers'), + _('DHCPv6 option 56. %s.', 'DHCPv6 option 56. RFC5908 link').format('RFC5908').format('https://www.rfc-editor.org/rfc/rfc5908#section-4')); + so.datatype = 'host(0)'; + for(var x of uci.get('system', 'ntp', 'server') || '') { + so.value(x); + } + var local_nets = this.networks.filter(function(n) { return n.getName() != 'loopback' }); + if(local_nets) { + // If ntpd is set up, suggest our IP(v6) also + if(uci.get('system', 'ntp', 'enable_server')) { + local_nets.forEach(function(n){ + n.getIPAddrs().forEach(function(i4) { + so.value(i4.split('/')[0]); + }); + n.getIP6Addrs().forEach(function(i6) { + so.value(i6.split('/')[0]); + }); + }); + } + } + so.optional = true; + so.rmempty = true; + so.depends('dhcpv6', 'server'); + so.depends({ dhcpv6: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6', form.RichListValue, 'ndp', _('NDP-Proxy'), + _('Configures the operation mode of the NDP proxy service on this interface.')); + so.optional = true; + so.value('', _('disabled'), + _('Do not proxy any NDP packets.')); + so.value('relay', _('relay mode'), + _('Forward NDP NS and NA messages between the designated master interface and downstream interfaces.')); + so.value('hybrid', _('hybrid mode'), ' '); + + + so = ss.taboption('ipv6', form.Flag, 'ndproxy_routing', _('Learn routes'), _('Set up routes for proxied IPv6 neighbours.')); + so.default = so.enabled; + so.depends('ndp', 'relay'); + so.depends('ndp', 'hybrid'); + + so = ss.taboption('ipv6', form.Flag, 'ndproxy_slave', _('NDP-Proxy slave'), _('Set interface as NDP-Proxy external slave. Default is off.')); + so.depends({ ndp: 'relay', master: '0' }); + so.depends({ ndp: 'hybrid', master: '0' }); + + so = ss.taboption('ipv6', form.Value, 'preferred_lifetime', _('IPv6 Prefix Lifetime'), _('Preferred lifetime for a prefix.')); + so.optional = true; + so.placeholder = '12h'; + so.value('5m', _('5m (5 minutes)')); + so.value('3h', _('3h (3 hours)')); + so.value('12h', _('12h (12 hours - default)')); + so.value('7d', _('7d (7 days)')); + + //This is a ra_* setting, but its placement is more logical/findable under IPv6 settings. + so = ss.taboption('ipv6', form.Flag, 'ra_useleasetime', _('Follow IPv4 Lifetime'), _('DHCPv4 leasetime is used as limit and preferred lifetime of the IPv6 prefix.')); + so.optional = true; + } + + ifc.renderFormOptions(s); + + // Common interface options + o = nettools.replaceOption(s, 'advanced', form.Flag, 'defaultroute', _('Use default gateway'), _('If unchecked, no default route is configured')); + o.default = o.enabled; + + if (has_peerdns(protoval)) { + o = nettools.replaceOption(s, 'advanced', form.Flag, 'peerdns', _('Use DNS servers advertised by peer'), _('If unchecked, the advertised DNS server addresses are ignored')); + o.default = o.enabled; + } + + o = nettools.replaceOption(s, 'advanced', form.DynamicList, 'dns', _('Use custom DNS servers')); + if (has_peerdns(protoval)) + o.depends('peerdns', '0'); + o.datatype = 'ipaddr'; + + o = nettools.replaceOption(s, 'advanced', form.DynamicList, 'dns_search', _('DNS search domains')); + if (protoval != 'static') + o.depends('peerdns', '0'); + o.datatype = 'hostname'; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'dns_metric', _('DNS weight'), _('The DNS server entries in the local resolv.conf are primarily sorted by the weight specified here')); + o.datatype = 'uinteger'; + o.placeholder = '0'; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'metric', _('Use gateway metric'), + _('Metric is an ordinal, where a gateway with 1 is chosen 1st, 2 is chosen 2nd, 3 is chosen 3rd, etc')); + o.datatype = 'uinteger'; + o.placeholder = '0'; + + o = nettools.replaceOption(s,'advanced', form.ListValue, 'multipath', _('Multipath setting'), _('Only one interface must be set as Master.')); + o.value('on',_('Enabled')); + o.value('off',_('Disabled')); + o.value('master',_('Master')); + o.value('backup',_('Backup')); + o.default = 'off'; + + o = nettools.replaceOption(s,'advanced', form.Value, 'addlatency', _('Additional latency')); + o.datatype = 'uinteger'; + o.default = '0'; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip4table', _('Override IPv4 routing table')); + o.datatype = 'or(uinteger, string)'; + for (var i = 0; i < rtTables.length; i++) + o.value(rtTables[i][1], '%s (%d)'.format(rtTables[i][1], rtTables[i][0])); + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip6table', _('Override IPv6 routing table')); + o.datatype = 'or(uinteger, string)'; + for (var i = 0; i < rtTables.length; i++) + o.value(rtTables[i][1], '%s (%d)'.format(rtTables[i][1], rtTables[i][0])); + + if (has_sourcefilter(protoval)) { + o = nettools.replaceOption(s, 'advanced', form.Flag, 'sourcefilter', _('IPv6 source routing'), _('Automatically handle multiple uplink interfaces using source-based policy routing.')); + o.default = o.enabled; + } + + o = nettools.replaceOption(s, 'advanced', form.Flag, 'delegate', _('Delegate IPv6 prefixes'), _('Enable downstream delegation of IPv6 prefixes available on this interface')); + o.default = o.enabled; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip6assign', _('IPv6 assignment length'), _('Assign a part of given length of every public IPv6-prefix to this interface')); + o.value('', _('disabled')); + o.value('64'); + o.datatype = 'max(128)'; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip6hint', _('IPv6 assignment hint'), _('Assign prefix parts using this hexadecimal subprefix ID for this interface.')); + o.placeholder = '0'; + o.validate = function(section_id, value) { + if (value == null || value == '') + return true; + + var n = parseInt(value, 16); + + if (!/^(0x)?[0-9a-fA-F]+$/.test(value) || isNaN(n) || n >= 0xffffffff) + return _('Expecting a hexadecimal assignment hint'); + + return true; + }; + for (var i = 33; i <= 64; i++) + o.depends('ip6assign', String(i)); + + + o = nettools.replaceOption(s, 'advanced', form.DynamicList, 'ip6class', _('IPv6 prefix filter'), _('If set, downstream subnets are only allocated from the given IPv6 prefix classes.')); + o.value('local', 'local (%s)'.format(_('Local ULA'))); + + var prefixClasses = {}; + + this.networks.forEach(function(net) { + var prefixes = net._ubus('ipv6-prefix'); + if (Array.isArray(prefixes)) { + prefixes.forEach(function(pfx) { + if (L.isObject(pfx) && typeof(pfx['class']) == 'string') { + prefixClasses[pfx['class']] = prefixClasses[pfx['class']] || {}; + prefixClasses[pfx['class']][net.getName()] = true; + } + }); + } + }); + + Object.keys(prefixClasses).sort().forEach(function(c) { + var networks = Object.keys(prefixClasses[c]).sort().join(', '); + o.value(c, (c != networks) ? '%s (%s)'.format(c, networks) : c); + }); + + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip6ifaceid', _('IPv6 suffix'), _("Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or '::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') for the interface.")); + o.datatype = 'ip6hostid'; + o.placeholder = '::1'; + + o = nettools.replaceOption(s, 'advanced', form.Value, 'ip6weight', _('IPv6 preference'), _('When delegating prefixes to multiple downstreams, interfaces with a higher preference value are considered first when allocating subnets.')); + o.datatype = 'uinteger'; + o.placeholder = '0'; + + for (var i = 0; i < s.children.length; i++) { + o = s.children[i]; + + switch (o.option) { + case 'proto': + case 'auto': + case '_dhcp': + case '_zone': + case '_switch_proto': + case '_ifacestat_modal': + continue; + + case 'igmp_snooping': + case 'stp': + case 'type': + case '_net_device': + var deps = []; + for (var j = 0; j < protocols.length; j++) { + if (!protocols[j].isVirtual()) { + if (o.deps.length) + for (var k = 0; k < o.deps.length; k++) + deps.push(Object.assign({ proto: protocols[j].getProtocol() }, o.deps[k])); + else + deps.push({ proto: protocols[j].getProtocol() }); + } + } + o.deps = deps; + break; + + default: + if (o.deps.length) + for (var j = 0; j < o.deps.length; j++) + o.deps[j].proto = protoval; + else + o.depends('proto', protoval); + } + } + + this.activeSection = s.section; + }, this)); + }; + + s.handleModalCancel = function(/* ... */) { + var type = uci.get('network', this.activeSection || this.addedSection, 'type'), + device = (type == 'bridge') ? 'br-%s'.format(this.activeSection || this.addedSection) : null; + + uci.sections('network', 'bridge-vlan', function(bvs) { + if (device != null && bvs.device == device) + uci.remove('network', bvs['.name']); + }); + + return form.GridSection.prototype.handleModalCancel.apply(this, arguments); + }; + + s.handleAdd = function(ev) { + var m2 = new form.Map('network'), + s2 = m2.section(form.NamedSection, '_new_'), + protocols = network.getProtocols(), + proto, name, device; + + protocols.sort(function(a, b) { + return L.naturalCompare(a.getProtocol(), b.getProtocol()); + }); + + s2.render = function() { + return Promise.all([ + {}, + this.renderUCISection('_new_') + ]).then(this.renderContents.bind(this)); + }; + + name = s2.option(form.Value, 'name', _('Name')); + name.rmempty = false; + name.datatype = 'uciname'; + name.placeholder = _('New interface name…'); + name.validate = function(section_id, value) { + if (uci.get('network', value) != null) + return _('The interface name is already used'); + + var pr = network.getProtocol(proto.formvalue(section_id), value), + ifname = pr.isVirtual() ? '%s-%s'.format(pr.getProtocol(), value) : 'br-%s'.format(value); + + if (value.length > 15) + return _('The interface name is too long'); + + return true; + }; + + proto = s2.option(form.ListValue, 'proto', _('Protocol')); + proto.onchange = function(ev, section_id, value) { + var elem = name.getUIElement(section_id); + elem.triggerValidation(); + }; + + device = s2.option(widgets.DeviceSelect, 'device', _('Device')); + device.noaliases = false; + device.optional = false; + + for (var i = 0; i < protocols.length; i++) { + proto.value(protocols[i].getProtocol(), protocols[i].getI18n()); + + if (!protocols[i].isVirtual()) + device.depends('proto', protocols[i].getProtocol()); + } + + m2.render().then(L.bind(function(nodes) { + ui.showModal(_('Add new interface...'), [ + nodes, + E('div', { 'class': 'right' }, [ + E('button', { + 'class': 'btn', + 'click': ui.hideModal + }, _('Cancel')), ' ', + E('button', { + 'class': 'cbi-button cbi-button-positive important', + 'click': ui.createHandlerFn(this, function(ev) { + var nameval = name.isValid('_new_') ? name.formvalue('_new_') : null, + protoval = proto.isValid('_new_') ? proto.formvalue('_new_') : null, + protoclass = protoval ? network.getProtocol(protoval, nameval) : null; + + if (nameval == null || protoval == null || nameval == '' || protoval == '') + return; + + return protoclass.isCreateable(nameval).then(function(checkval) { + if (checkval != null) { + ui.addNotification(null, + E('p', _('New interface for "%s" can not be created: %s').format(protoclass.getI18n(), checkval))); + ui.hideModal(); + return; + } + + return m.save(function() { + var section_id = uci.add('network', 'interface', nameval); + + protoclass.set('proto', protoval); + protoclass.addDevice(device.formvalue('_new_')); + + m.children[0].addedSection = section_id; + + ui.hideModal(); + ui.showModal(null, E('p', { 'class': 'spinning' }, [ _('Loading data…') ])); + }).then(L.bind(m.children[0].renderMoreOptionsModal, m.children[0], nameval)); + }); + }) + }, _('Create interface')) + ]) + ], 'cbi-modal'); + + nodes.querySelector('[id="%s"] input[type="text"]'.format(name.cbid('_new_'))).focus(); + }, this)); + }; + + s.handleRemove = function(section_id, ev) { + return network.deleteNetwork(section_id).then(L.bind(function(section_id, ev) { + return form.GridSection.prototype.handleRemove.apply(this, [section_id, ev]); + }, this, section_id, ev)); + }; + + o = s.option(form.DummyValue, '_ifacebox'); + o.modalonly = false; + o.textvalue = function(section_id) { + var net = this.section.networks.filter(function(n) { return n.getName() == section_id })[0], + zone = net ? this.section.zones.filter(function(z) { return !!z.getNetworks().filter(function(n) { return n == section_id })[0] })[0] : null; + + if (!net) + return; + + var node = E('div', { 'class': 'ifacebox' }, [ + E('div', { + 'class': 'ifacebox-head', + 'style': firewall.getZoneColorStyle(zone), + 'title': zone ? _('Part of zone %q').format(zone.getName()) : _('No zone assigned') + }, E('strong', net.getName())), + E('div', { + 'class': 'ifacebox-body', + 'id': '%s-ifc-devices'.format(section_id), + 'data-network': section_id + }, [ + E('img', { + 'src': L.resource('icons/ethernet_disabled.png'), + 'style': 'width:16px; height:16px' + }), + E('br'), E('small', '?') + ]) + ]); + + render_ifacebox_status(node.childNodes[1], net); + + return node; + }; + + o = s.option(form.DummyValue, '_ifacestat'); + o.modalonly = false; + o.textvalue = function(section_id) { + var net = this.section.networks.filter(function(n) { return n.getName() == section_id })[0]; + + if (!net) + return; + + var node = E('div', { 'id': '%s-ifc-description'.format(section_id) }); + + render_status(node, net, false); + + return node; + }; + + o = s.taboption('advanced', form.Flag, 'delegate', _('Use builtin IPv6-management')); + o.modalonly = true; + o.default = o.enabled; + + o = s.taboption('advanced', form.Flag, 'force_link', _('Force link'), _('Set interface properties regardless of the link carrier (If set, carrier sense events do not invoke hotplug handlers).')); + o.modalonly = true; + o.defaults = { + '1': [{ proto: 'static' }], + '0': [] + }; + + + // Device configuration + s = m.section(form.GridSection, 'device', _('Devices')); + s.addremove = true; + s.anonymous = true; + s.addbtntitle = _('Add device configuration…'); + + s.cfgsections = function() { + var sections = uci.sections('network', 'device'), + section_ids = sections.sort(function(a, b) { return L.naturalCompare(a.name, b.name) }).map(function(s) { return s['.name'] }); + + for (var i = 0; i < netDevs.length; i++) { + if (sections.filter(function(s) { return s.name == netDevs[i].getName() }).length) + continue; + + if (netDevs[i].getType() == 'wifi' && !netDevs[i].isUp()) + continue; + + /* Unless http://lists.openwrt.org/pipermail/openwrt-devel/2020-July/030397.html is implemented, + we cannot properly redefine bridges as devices, so filter them away for now... */ + + var m = netDevs[i].isBridge() ? netDevs[i].getName().match(/^br-([A-Za-z0-9_]+)$/) : null, + s = m ? uci.get('network', m[1]) : null; + + if (s && s['.type'] == 'interface' && s.type == 'bridge') + continue; + + section_ids.push('dev:%s'.format(netDevs[i].getName())); + } + + return section_ids; + }; + + s.renderMoreOptionsModal = function(section_id, ev) { + var m = section_id.match(/^dev:(.+)$/); + + if (m) { + var devtype = getDevType(section_id); + + section_id = uci.add('network', 'device'); + + uci.set('network', section_id, 'name', m[1]); + uci.set('network', section_id, 'type', (devtype != 'ethernet') ? devtype : null); + + this.addedSection = section_id; + } + + return this.super('renderMoreOptionsModal', [section_id, ev]); + }; + + s.renderRowActions = function(section_id) { + var trEl = this.super('renderRowActions', [ section_id, _('Configure…') ]), + deleteBtn = trEl.querySelector('button:last-child'); + + deleteBtn.firstChild.data = _('Unconfigure'); + deleteBtn.setAttribute('title', _('Remove related device settings from the configuration')); + deleteBtn.disabled = section_id.match(/^dev:/) ? true : null; + + return trEl; + }; + + s.modaltitle = function(section_id) { + var m = section_id.match(/^dev:(.+)$/), + name = m ? m[1] : uci.get('network', section_id, 'name'); + + return name ? '%s: %q'.format(getDevTypeDesc(section_id), name) : _('Add device configuration'); + }; + + s.addModalOptions = function(s) { + var isNew = (uci.get('network', s.section, 'name') == null), + dev = getDevice(s.section); + + nettools.addDeviceOptions(s, dev, isNew); + }; + + s.handleModalCancel = function(map /*, ... */) { + var name = uci.get('network', this.addedSection, 'name') + + uci.sections('network', 'bridge-vlan', function(bvs) { + if (name != null && bvs.device == name) + uci.remove('network', bvs['.name']); + }); + + if (map.addedVLANs) + for (var i = 0; i < map.addedVLANs.length; i++) + uci.remove('network', map.addedVLANs[i]); + + if (this.addedSection) + uci.remove('network', this.addedSection); + + return form.GridSection.prototype.handleModalCancel.apply(this, arguments); + }; + + s.handleRemove = function(section_id /*, ... */) { + var name = uci.get('network', section_id, 'name'), + type = uci.get('network', section_id, 'type'); + + if (name != null && type == 'bridge') { + uci.sections('network', 'bridge-vlan', function(bvs) { + if (bvs.device == name) + uci.remove('network', bvs['.name']); + }); + } + + return form.GridSection.prototype.handleRemove.apply(this, arguments); + }; + + function getDevice(section_id) { + var m = section_id.match(/^dev:(.+)$/), + name = m ? m[1] : uci.get('network', section_id, 'name'); + + return netDevs.filter(function(d) { return d.getName() == name })[0]; + } + + function getDevType(section_id) { + var dev = getDevice(section_id), + cfg = uci.get('network', section_id), + type = cfg ? (uci.get('network', section_id, 'type') || 'ethernet') : (dev ? dev.getType() : ''); + + switch (type) { + case '': + return null; + + case 'vlan': + case '8021q': + return '8021q'; + + case '8021ad': + return '8021ad'; + + case 'bonding': + return 'bonding'; + + case 'bridge': + return 'bridge'; + + case 'tunnel': + return 'tunnel'; + + case 'macvlan': + return 'macvlan'; + + case 'veth': + return 'veth'; + + case 'wifi': + case 'alias': + case 'switch': + case 'ethernet': + default: + return 'ethernet'; + } + } + + function getDevTypeDesc(section_id) { + switch (getDevType(section_id) || '') { + case '': + return E('em', [ _('Device not present') ]); + + case '8021q': + return _('VLAN (802.1q)'); + + case '8021ad': + return _('VLAN (802.1ad)'); + + case 'bonding': + return _('Aggregation device'); + + case 'bridge': + return _('Bridge device'); + + case 'tunnel': + return _('Tunnel device'); + + case 'macvlan': + return _('MAC VLAN'); + + case 'veth': + return _('Virtual Ethernet'); + + default: + return _('Network device'); + } + } + + o = s.option(form.DummyValue, 'name', _('Device')); + o.modalonly = false; + o.textvalue = function(section_id) { + var dev = getDevice(section_id), + ext = section_id.match(/^dev:/), + icon = render_iface(dev); + + if (ext) + icon.querySelector('img').style.opacity = '.5'; + + return E('span', { 'class': 'ifacebadge' }, [ + icon, + E('span', { 'style': ext ? 'opacity:.5' : null }, [ + dev ? dev.getName() : (uci.get('network', section_id, 'name') || '?') + ]) + ]); + }; + + o = s.option(form.DummyValue, 'type', _('Type')); + o.textvalue = getDevTypeDesc; + o.modalonly = false; + + o = s.option(form.DummyValue, 'macaddr', _('MAC Address')); + o.modalonly = false; + o.textvalue = function(section_id) { + var dev = getDevice(section_id), + val = uci.get('network', section_id, 'macaddr'), + mac = dev ? dev.getMAC() : null; + + return val ? E('strong', { + 'data-tooltip': _('The value is overridden by configuration.') + }, [ val.toUpperCase() ]) : (mac || '-'); + }; + + o = s.option(form.DummyValue, 'mtu', _('MTU')); + o.modalonly = false; + o.textvalue = function(section_id) { + var dev = getDevice(section_id), + val = uci.get('network', section_id, 'mtu'), + mtu = dev ? dev.getMTU() : null; + + return val ? E('strong', { + 'data-tooltip': _('The value is overridden by configuration.') + }, [ val ]) : (mtu || '-').toString(); + }; + + s = m.section(form.TypedSection, 'globals', _('Global network options')); + s.addremove = false; + s.anonymous = true; + + o = s.option(form.Value, 'ula_prefix', _('IPv6 ULA-Prefix'), + _('Unique Local Address (%s) - prefix fd00::/8 (the L bit is always 1).').format('RFC4193').format('https://datatracker.ietf.org/doc/html/rfc4193#section-3') + ' ' + + _('ULA for IPv6 is analogous to IPv4 private network addressing.') + ' ' + + _('This prefix is randomly generated at first install.')); + o.datatype = 'cidr6'; + + o = s.option(form.ListValue, 'packet_steering', _('Packet Steering'), _('Enable packet steering across CPUs. May help or hinder network speed.')); + o.value('0', _('Disabled')); + o.value('1',_('Enabled')); + o.value('2',_('Enabled (all CPUs)')); + o.default = '1'; + o.optional = true; + + var steer_flow = uci.get('network', 'globals', 'steering_flows'); + + o = s.option(form.Value, 'steering_flows', _('Steering flows (RPS)'), + _('Directs packet flows to specific CPUs where the local socket owner listens (the local service).') + ' ' + + _('Note: this setting is for local services on the device only (not for forwarding).')); + o.value('', _('Standard: none')); + o.value('128', _('Suggested: 128')); + o.value('256', _('256')); + o.depends('packet_steering', '1'); + o.depends('packet_steering', '2'); + o.datatype = 'uinteger'; + o.default = steer_flow; + + if (dslModemType != null) { + s = m.section(form.TypedSection, 'dsl', _('DSL')); + s.anonymous = true; + + o = s.option(form.ListValue, 'annex', _('Annex')); + if (dslModemType == 'vdsl') { + o.value('a', _('ADSL (all variants) Annex A/L/M + VDSL2 Annex A/B/C')); + o.value('b', _('ADSL (all variants) Annex B + VDSL2 Annex A/B/C')); + o.value('j', _('ADSL (all variants) Annex B/J + VDSL2 Annex A/B/C')); + } else { + o.value('a', _('ADSL (all variants) Annex A/L/M')); + o.value('b', _('ADSL (all variants) Annex B')); + o.value('j', _('ADSL (all variants) Annex B/J')); + } + o.value('m', _('ADSL (all variants) Annex M')); + o.value('at1', _('ANSI T1.413')); + o.value('admt', _('ADSL (G.992.1) Annex A')); + o.value('bdmt', _('ADSL (G.992.1) Annex B')); + o.value('alite', _('Splitterless ADSL (G.992.2) Annex A')); + o.value('a2', _('ADSL2 (G.992.3) Annex A')); + o.value('b2', _('ADSL2 (G.992.3) Annex B')); + o.value('l', _('ADSL2 (G.992.3) Annex L')); + o.value('m2', _('ADSL2 (G.992.3) Annex M')); + o.value('a2p', _('ADSL2+ (G.992.5) Annex A')); + o.value('b2p', _('ADSL2+ (G.992.5) Annex B')); + o.value('m2p', _('ADSL2+ (G.992.5) Annex M')); + + o = s.option(form.ListValue, 'tone', _('Tone')); + o.value('', _('auto')); + o.value('a', _('A43C + J43 + A43')); + o.value('av', _('A43C + J43 + A43 + V43')); + o.value('b', _('B43 + B43C')); + o.value('bv', _('B43 + B43C + V43')); + + if (dslModemType == 'vdsl') { + o = s.option(form.ListValue, 'xfer_mode', _('Encapsulation mode')); + o.value('', _('auto')); + o.value('atm', _('ATM (Asynchronous Transfer Mode)')); + o.value('ptm', _('PTM/EFM (Packet Transfer Mode)')); + + o = s.option(form.ListValue, 'line_mode', _('DSL line mode')); + o.value('', _('auto')); + o.value('adsl', _('ADSL')); + o.value('vdsl', _('VDSL')); + + o = s.option(form.ListValue, 'ds_snr_offset', _('Downstream SNR offset')); + o.default = '0'; + + for (var i = -100; i <= 100; i += 5) + o.value(i, _('%.1f dB').format(i / 10)); + } + + s.option(form.Value, 'firmware', _('Firmware File')); + } + + + // Show ATM bridge section if we have the capabilities + if (L.hasSystemFeature('br2684ctl')) { + s = m.section(form.TypedSection, 'atm-bridge', _('ATM Bridges'), _('ATM bridges expose encapsulated ethernet in AAL5 connections as virtual Linux network interfaces which can be used in conjunction with DHCP or PPP to dial into the provider network.')); + + s.addremove = true; + s.anonymous = true; + s.addbtntitle = _('Add ATM Bridge'); + + s.handleAdd = function(ev) { + var sections = uci.sections('network', 'atm-bridge'), + max_unit = -1; + + for (var i = 0; i < sections.length; i++) { + var unit = +sections[i].unit; + + if (!isNaN(unit) && unit > max_unit) + max_unit = unit; + } + + return this.map.save(function() { + var sid = uci.add('network', 'atm-bridge'); + + uci.set('network', sid, 'unit', max_unit + 1); + uci.set('network', sid, 'atmdev', 0); + uci.set('network', sid, 'encaps', 'llc'); + uci.set('network', sid, 'payload', 'bridged'); + uci.set('network', sid, 'vci', 35); + uci.set('network', sid, 'vpi', 8); + }); + }; + + s.tab('general', _('General Setup')); + s.tab('advanced', _('Advanced Settings')); + + o = s.taboption('general', form.Value, 'vci', _('ATM Virtual Channel Identifier (VCI)')); + s.taboption('general', form.Value, 'vpi', _('ATM Virtual Path Identifier (VPI)')); + + o = s.taboption('general', form.ListValue, 'encaps', _('Encapsulation mode')); + o.value('llc', _('LLC')); + o.value('vc', _('VC-Mux')); + + s.taboption('advanced', form.Value, 'atmdev', _('ATM device number')); + s.taboption('advanced', form.Value, 'unit', _('Bridge unit number')); + + o = s.taboption('advanced', form.ListValue, 'payload', _('Forwarding mode')); + o.value('bridged', _('bridged')); + o.value('routed', _('routed')); + } + + + return m.render().then(L.bind(function(m, nodes) { + poll.add(L.bind(function() { + var section_ids = m.children[0].cfgsections(), + tasks = []; + + for (var i = 0; i < section_ids.length; i++) { + var row = nodes.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(section_ids[i])), + dsc = row.querySelector('[data-name="_ifacestat"] > div'), + btn1 = row.querySelector('.cbi-section-actions .reconnect'), + btn2 = row.querySelector('.cbi-section-actions .down'); + + if (dsc.getAttribute('reconnect') == '') { + dsc.setAttribute('reconnect', '1'); + tasks.push(fs.exec('/sbin/ifup', [section_ids[i]]).catch(function(e) { + ui.addNotification(null, E('p', e.message)); + })); + } + else if (dsc.getAttribute('disconnect') == '') { + dsc.setAttribute('disconnect', '1'); + tasks.push(fs.exec('/sbin/ifdown', [section_ids[i]]).catch(function(e) { + ui.addNotification(null, E('p', e.message)); + })); + } + else if (dsc.getAttribute('reconnect') == '1') { + dsc.removeAttribute('reconnect'); + btn1.classList.remove('spinning'); + btn1.disabled = false; + } + else if (dsc.getAttribute('disconnect') == '1') { + dsc.removeAttribute('disconnect'); + btn2.classList.remove('spinning'); + btn2.disabled = false; + } + } + + return Promise.all(tasks) + .then(L.bind(network.getNetworks, network)) + .then(L.bind(this.poll_status, this, nodes)); + }, this), 5); + + return nodes; + }, this, m)); + } +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js b/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js new file mode 100644 index 000000000..312b53007 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js @@ -0,0 +1,226 @@ +'use strict'; +'require view'; +'require fs'; +'require uci'; +'require form'; +'require network'; +'require tools.widgets as widgets'; +'require tools.network as tn'; + +return view.extend({ + load: function() { + return Promise.all([ + network.getDevices(), + fs.lines('/etc/iproute2/rt_tables') + ]); + }, + + render: function(data) { + var netDevs = data[0], + m, s, o; + + var rtTables = data[1].map(function(l) { + var m = l.trim().match(/^(\d+)\s+(\S+)$/); + return m ? [ +m[1], m[2] ] : null; + }).filter(function(e) { + return e && e[0] > 0; + }); + + m = new form.Map('network', _('Routing'), _('Routing defines over which interface and gateway a certain host or network can be reached.') + + '
    ' + _('Routes go in routing tables and define the specific path to reach destinations.') + + '
    ' + _('Rules determine which routing table to use, based on conditions like source address or interface.')); + m.tabbed = true; + + for (var family = 4; family <= 6; family += 2) { + s = m.section(form.GridSection, (family == 6) ? 'route6' : 'route', (family == 6) ? _('Static IPv6 Routes') : _('Static IPv4 Routes')); + s.anonymous = true; + s.addremove = true; + s.sortable = true; + s.cloneable = true; + s.nodescriptions = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + + o = s.taboption('general', widgets.NetworkSelect, 'interface', _('Interface'), _('Specifies the logical interface name of the parent (or master) interface this route belongs to')); + o.loopback = true; + o.nocreate = true; + o.rmempty = true; + + o = s.taboption('general', form.ListValue, 'type', _('Route type'), _('Specifies the route type to be created')); + o.modalonly = true; + o.value('', 'unicast'); + o.value('local'); + o.value('broadcast'); + o.value('multicast'); + o.value('unreachable'); + o.value('prohibit'); + o.value('blackhole'); + o.value('anycast'); + o.value('throw'); + + o = s.taboption('general', form.Value, 'target', _('Target'), _('Network address')); + o.rmempty = false; + o.datatype = (family == 6) ? 'cidr6' : 'cidr4'; + o.placeholder = (family == 6) ? '::/0' : '0.0.0.0/0'; + o.cfgvalue = function(section_id) { + var section_type = uci.get('network', section_id, '.type'), + target = uci.get('network', section_id, 'target'), + mask = uci.get('network', section_id, 'netmask'), + v6 = (section_type == 'route6') ? true : false, + bits = mask ? network.maskToPrefix(mask, v6) : (v6 ? 128 : 32); + if (target) { + return target.split('/')[1] ? target : target + '/' + bits; + } + } + o.write = function(section_id, formvalue) { + uci.set('network', section_id, 'target', formvalue); + uci.unset('network', section_id, 'netmask'); + } + + o = s.taboption('general', form.Value, 'gateway', _('Gateway'), _('Specifies the network gateway. If omitted, the gateway from the parent interface is taken if any, otherwise creates a link scope route. If set to 0.0.0.0 no gateway will be specified for the route')); + o.datatype = (family == 6) ? 'ip6addr("nomask")' : 'ip4addr("nomask")'; + o.placeholder = (family == 6) ? 'fe80::1' : '192.168.0.1'; + + o = s.taboption('advanced', form.Value, 'metric', _('Metric'), _('Ordinal: routes with the lowest metric match first')); + o.datatype = 'uinteger'; + o.placeholder = 0; + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || E('em', _('auto')); + }; + + o = s.taboption('advanced', form.Value, 'mtu', _('MTU'), _('Packets exceeding this value may be fragmented')); + o.modalonly = true; + o.datatype = 'and(uinteger,range(64,9000))'; + o.placeholder = 1500; + + o = s.taboption('advanced', form.Value, 'table', _('Table'), _('Routing table into which to insert this rule.') + '
    ' + + _('A numeric table index, or symbol alias declared in %s. Special aliases local (255), main (254) and default (253) are also valid').format('/etc/iproute2/rt_tables') + + '
    ' + _('Only interfaces using this table (via override) will use this route.')); + o.datatype = 'or(uinteger, string)'; + for (var i = 0; i < rtTables.length; i++) + o.value(rtTables[i][1], '%s (%d)'.format(rtTables[i][1], rtTables[i][0])); + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || E('em', _('auto')); + }; + + o = s.taboption('advanced', form.Value, 'source', _('Source'), _('Specifies the preferred source address when sending to destinations covered by the target') + + '
    ' + _('This is only used if no default route matches the destination gateway')); + o.modalonly = true; + o.datatype = (family == 6) ? 'ip6addr' : 'ip4addr'; + for (var i = 0; i < netDevs.length; i++) { + var addrs = (family == 6) ? netDevs[i].getIP6Addrs() : netDevs[i].getIPAddrs(); + for (var j = 0; j < addrs.length; j++) + o.value(addrs[j].split('/')[0]); + } + + o = s.taboption('advanced', form.Flag, 'onlink', _('On-link'), _('When enabled, gateway is on-link even if the gateway does not match any interface prefix')); + o.modalonly = true; + o.default = o.disabled; + + o = s.taboption('advanced', form.Flag, 'disabled', _('Disable')); + o.modalonly = false; + o.editable = true; + o.default = o.disabled; + } + + for (var family = 4; family <= 6; family += 2) { + s = m.section(form.GridSection, (family == 6) ? 'rule6' : 'rule', (family == 6) ? _('IPv6 Rules') : _('IPv4 Rules')); + s.anonymous = true; + s.addremove = true; + s.sortable = true; + s.cloneable = true; + s.nodescriptions = true; + + s.tab('general', _('General Settings')); + s.tab('advanced', _('Advanced Settings')); + + o = s.taboption('general', form.Value, 'priority', _('Priority'), _('Execution order of this IP rule: lower numbers go first')); + o.datatype = 'uinteger'; + o.placeholder = 30000; + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || E('em', _('auto')); + }; + + o = s.taboption('general', form.ListValue, 'action', _('Rule type'), _('Specifies the rule target routing action')); + o.modalonly = true; + o.value('', 'unicast'); + o.value('unreachable'); + o.value('prohibit'); + o.value('blackhole'); + o.value('throw'); + + o = s.taboption('general', widgets.NetworkSelect, 'in', _('Incoming interface'), _('Match traffic from this interface')); + o.loopback = true; + o.nocreate = true; + + o = s.taboption('general', form.Value, 'src', _('Source'), _('Match traffic from this source subnet (CIDR notation)')); + o.datatype = (family == 6) ? 'cidr6' : 'cidr4'; + o.placeholder = (family == 6) ? '::/0' : '0.0.0.0/0'; + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || E('em', _('any')); + }; + + o = s.taboption('general', form.Value, 'ipproto', _('IP Protocol'), _('Match traffic IP protocol type')); + o.datatype = 'range(0,255)'; + tn.protocols.forEach(function(p) { + o.value(p.i, p.d); + }); + + o = s.taboption('general', widgets.NetworkSelect, 'out', _('Outgoing interface'), _('Match traffic destined to this interface')); + o.loopback = true; + o.nocreate = true; + + o = s.taboption('general', form.Value, 'dest', _('Destination'), _('Match traffic destined to this subnet (CIDR notation)')); + o.datatype = (family == 6) ? 'cidr6' : 'cidr4'; + o.placeholder = (family == 6) ? '::/0' : '0.0.0.0/0'; + o.textvalue = function(section_id) { + return this.cfgvalue(section_id) || E('em', _('any')); + }; + + o = s.taboption('advanced', form.Value, 'lookup', _('Table'), _('Routing table to use for traffic matching this rule.') + '
    ' + + _('A numeric table index, or symbol alias declared in %s. Special aliases local (255), main (254) and default (253) are also valid').format('/etc/iproute2/rt_tables') + + '
    ' + _('Matched traffic re-targets to an interface using this table.')); + o.datatype = 'or(uinteger, string)'; + for (var i = 0; i < rtTables.length; i++) + o.value(rtTables[i][1], '%s (%d)'.format(rtTables[i][1], rtTables[i][0])); + + o = s.taboption('advanced', form.Value, 'goto', _('Jump to rule'), _('Jumps to another rule specified by its priority value')); + o.modalonly = true; + o.datatype = 'uinteger'; + o.placeholder = 80000; + + o = s.taboption('advanced', form.Value, 'mark', _('Firewall mark'), _('Specifies the fwmark and optionally its mask to match, e.g. 0xFF to match mark 255 or 0x0/0x1 to match any even mark value')); + o.modalonly = true; + o.datatype = 'string'; + o.placeholder = '0x1/0xf'; + + o = s.taboption('advanced', form.Value, 'tos', _('Type of service'), _('Specifies the TOS value to match in IP headers')); + o.modalonly = true; + o.datatype = 'uinteger'; + o.placeholder = 10; + + o = s.taboption('advanced', form.Value, 'uidrange', _('User identifier'), _('Specifies an individual UID or range of UIDs to match, e.g. 1000 to match corresponding UID or 1000-1005 to inclusively match all UIDs within the corresponding range')); + o.modalonly = true; + o.datatype = 'string'; + o.placeholder = '1000-1005'; + + o = s.taboption('advanced', form.Value, 'suppress_prefixlength', _('Prefix suppressor'), _('Reject routing decisions that have a prefix length less than or equal to the specified value') + + '
    ' + _('Prevents overly broad routes being considered. Setting 16 would consider /17, /24, /28 or more specific routes yet ignore /16, /8, /0 (default) routes')); + o.modalonly = true; + o.datatype = (family == 6) ? 'ip6prefix' : 'ip4prefix'; + o.placeholder = (family == 6) ? 64 : 24; + + o = s.taboption('advanced', form.Flag, 'invert', _('Invert match'), _('If set, the meaning of the match options is inverted')); + o.modalonly = true; + o.default = o.disabled; + + o = s.taboption('advanced', form.Flag, 'disabled', _('Disable')); + o.modalonly = false; + o.editable = true; + o.default = o.disabled; + } + + return m.render(); + } +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js b/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js new file mode 100644 index 000000000..535a133e7 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js @@ -0,0 +1,377 @@ +'use strict'; +'require view'; +'require dom'; +'require poll'; +'require ui'; +'require rpc'; +'require uci'; +'require form'; +'require network'; + +function parse_portvalue(section_id) { + var ports = L.toArray(uci.get('network', section_id, 'ports')); + + for (var i = 0; i < ports.length; i++) { + var m = ports[i].match(/^(\d+)([tu]?)/); + + if (m && m[1] == this.option) + return m[2] || 'u'; + } + + return ''; +} + +function validate_portvalue(section_id, value) { + if (value != 'u') + return true; + + var sections = this.section.cfgsections(); + + for (var i = 0; i < sections.length; i++) { + if (sections[i] == section_id) + continue; + + if (this.formvalue(sections[i]) == 'u') + return _('%s is untagged in multiple VLANs!').format(this.title); + } + + return true; +} + +function update_interfaces(old_ifname, new_ifname) { + var interfaces = uci.sections('network', 'interface'); + + for (var i = 0; i < interfaces.length; i++) { + var old_ifnames = L.toArray(interfaces[i].ifname), + new_ifnames = [], + changed = false; + + for (var j = 0; j < old_ifnames.length; j++) { + if (old_ifnames[j] == old_ifname) { + new_ifnames.push(new_ifname); + changed = true; + } + else { + new_ifnames.push(old_ifnames[j]); + } + } + + if (changed) { + uci.set('network', interfaces[i]['.name'], 'ifname', new_ifnames.join(' ')); + + ui.addNotification(null, E('p', _('Interface %q device auto-migrated from %q to %q.') + .replace(/%q/g, '"%s"').format(interfaces[i]['.name'], old_ifname, new_ifname))); + } + } +} + +function render_port_status(node, portstate) { + if (!node) + return null; + + if (!portstate || !portstate.link) + dom.content(node, [ + E('img', { src: L.resource('icons/port_down.png') }), + E('br'), + _('no link') + ]); + else + dom.content(node, [ + E('img', { src: L.resource('icons/port_up.png') }), + E('br'), + '%d'.format(portstate.speed) + _('baseT'), + E('br'), + portstate.duplex ? _('full-duplex') : _('half-duplex') + ]); + + return node; +} + +function update_port_status(topologies) { + var tasks = []; + + for (var switch_name in topologies) + tasks.push(callSwconfigPortState(switch_name).then(L.bind(function(switch_name, ports) { + for (var i = 0; i < ports.length; i++) { + var node = document.querySelector('[data-switch="%s"][data-port="%d"]'.format(switch_name, ports[i].port)); + render_port_status(node, ports[i]); + } + }, topologies[switch_name], switch_name))); + + return Promise.all(tasks); +} + +var callSwconfigFeatures = rpc.declare({ + object: 'luci', + method: 'getSwconfigFeatures', + params: [ 'switch' ], + expect: { '': {} } +}); + +var callSwconfigPortState = rpc.declare({ + object: 'luci', + method: 'getSwconfigPortState', + params: [ 'switch' ], + expect: { result: [] } +}); + +return view.extend({ + load: function() { + return network.getSwitchTopologies().then(function(topologies) { + var tasks = []; + + for (var switch_name in topologies) { + tasks.push(callSwconfigFeatures(switch_name).then(L.bind(function(features) { + this.features = features; + }, topologies[switch_name]))); + tasks.push(callSwconfigPortState(switch_name).then(L.bind(function(ports) { + this.portstate = ports; + }, topologies[switch_name]))); + } + + return Promise.all(tasks).then(function() { return topologies }); + }); + }, + + render: function(topologies) { + var m, s, o; + + m = new form.Map('network', _('Switch'), _('The network ports on this device can be combined to several VLANs in which computers can communicate directly with each other. VLANs are often used to separate different network segments. Often there is by default one Uplink port for a connection to the next greater network like the internet and other ports for a local network.')); + + var switchSections = uci.sections('network', 'switch'); + + for (var i = 0; i < switchSections.length; i++) { + var switchSection = switchSections[i], + sid = switchSection['.name'], + switch_name = switchSection.name || sid, + topology = topologies[switch_name]; + + if (!topology) { + ui.addNotification(null, _('Switch %q has an unknown topology - the VLAN settings might not be accurate.').replace(/%q/, switch_name)); + + topologies[switch_name] = topology = { + features: {}, + netdevs: { + 5: 'eth0' + }, + ports: [ + { num: 0, label: 'Port 1' }, + { num: 1, label: 'Port 2' }, + { num: 2, label: 'Port 3' }, + { num: 3, label: 'Port 4' }, + { num: 4, label: 'Port 5' }, + { num: 5, label: 'CPU (eth0)', device: 'eth0', need_tag: false } + ] + }; + } + + var feat = topology.features, + min_vid = feat.min_vid || 0, + max_vid = feat.max_vid || 16, + num_vlans = feat.num_vlans || 16, + switch_title = _('Switch %q').replace(/%q/, '"%s"'.format(switch_name)), + vlan_title = _('VLANs on %q').replace(/%q/, '"%s"'.format(switch_name)); + + if (feat.switch_title) { + switch_title += ' (%s)'.format(feat.switch_title); + vlan_title += ' (%s)'.format(feat.switch_title); + } + + s = m.section(form.NamedSection, sid, 'switch', switch_title); + s.addremove = false; + + if (feat.vlan_option) { + o = s.option(form.Flag, feat.vlan_option, _('Enable VLAN functionality')); + o.rmempty = false; + } + + if (feat.learning_option) { + o = s.option(form.Flag, feat.learning_option, _('Enable learning and aging')); + o.default = o.enabled; + } + + if (feat.jumbo_option) { + o = s.option(form.Flag, feat.jumbo_option, _('Enable Jumbo Frame passthrough')); + o.enabled = '3'; + o.rmempty = true; + } + + if (feat.mirror_option) { + s.option(form.Flag, 'enable_mirror_rx', _('Enable mirroring of incoming packets')); + s.option(form.Flag, 'enable_mirror_tx', _('Enable mirroring of outgoing packets')); + + var sp = s.option(form.ListValue, 'mirror_source_port', _('Mirror source port')), + mp = s.option(form.ListValue, 'mirror_monitor_port', _('Mirror monitor port')); + + sp.depends('enable_mirror_rx', '1'); + sp.depends('enable_mirror_tx', '1'); + + mp.depends('enable_mirror_rx', '1'); + mp.depends('enable_mirror_tx', '1'); + + for (var j = 0; j < topology.ports.length; j++) { + sp.value(topology.ports[j].num, topology.ports[j].label); + mp.value(topology.ports[j].num, topology.ports[j].label); + } + } + + s = m.section(form.TableSection, 'switch_vlan', vlan_title); + s.anonymous = true; + s.addremove = true; + s.addbtntitle = _('Add VLAN'); + s.topology = topology; + s.device = switch_name; + + s.filter = function(section_id) { + var device = uci.get('network', section_id, 'device'); + return (device == this.device); + }; + + s.cfgsections = function() { + var sections = form.TableSection.prototype.cfgsections.apply(this); + + return sections.sort(function(a, b) { + var vidA = feat.vid_option ? uci.get('network', a, feat.vid_option) : null, + vidB = feat.vid_option ? uci.get('network', b, feat.vid_option) : null; + + vidA = +(vidA != null ? vidA : uci.get('network', a, 'vlan') || 9999); + vidB = +(vidB != null ? vidB : uci.get('network', b, 'vlan') || 9999); + + return (vidA - vidB); + }); + }; + + s.handleAdd = function(ev) { + var sections = uci.sections('network', 'switch_vlan'), + section_id = uci.add('network', 'switch_vlan'), + max_vlan = 0, + max_vid = 0; + + for (var j = 0; j < sections.length; j++) { + if (sections[j].device != this.device) + continue; + + var vlan = +sections[j].vlan, + vid = feat.vid_option ? +sections[j][feat.vid_option] : null; + + if (vlan > max_vlan) + max_vlan = vlan; + + if (vid > max_vid) + max_vid = vid; + } + + uci.set('network', section_id, 'device', this.device); + uci.set('network', section_id, 'vlan', max_vlan + 1); + + if (feat.vid_option) + uci.set('network', section_id, feat.vid_option, max_vid + 1); + + return this.map.save(null, true); + }; + + o = s.option(form.Value, feat.vid_option || 'vlan', 'VLAN ID'); + o.rmempty = false; + o.forcewrite = true; + o.vlan_used = {}; + o.datatype = 'range(%u,%u)'.format(min_vid, feat.vid_option ? 4094 : num_vlans - 1); + o.description = _('Port status:'); + + o.validate = function(section_id, value) { + var v = +value, + m = feat.vid_option ? 4094 : num_vlans - 1; + + if (isNaN(v) || v < min_vid || v > m) + return _('Invalid VLAN ID given! Only IDs between %d and %d are allowed.').format(min_vid, m); + + var sections = this.section.cfgsections(); + + for (var i = 0; i < sections.length; i++) { + if (sections[i] == section_id) + continue; + + if (this.formvalue(sections[i]) == v) + return _('Invalid VLAN ID given! Only unique IDs are allowed'); + } + + return true; + }; + + var port_opts = o.port_opts = []; + + o.write = function(section_id, value) { + var topology = this.section.topology, + values = []; + + for (var i = 0; i < this.port_opts.length; i++) { + var tagging = this.port_opts[i].formvalue(section_id), + portspec = Array.isArray(topology.ports) ? topology.ports[i] : null; + + if (tagging == 't') + values.push(this.port_opts[i].option + tagging); + else if (tagging == 'u') + values.push(this.port_opts[i].option); + + if (portspec && portspec.device) { + var old_tag = this.port_opts[i].cfgvalue(section_id), + old_vid = this.cfgvalue(section_id); + + if (old_tag != tagging || old_vid != value) { + var old_ifname = portspec.device + (old_tag != 'u' ? '.' + old_vid : ''), + new_ifname = portspec.device + (tagging != 'u' ? '.' + value : ''); + + if (old_ifname != new_ifname) + update_interfaces(old_ifname, new_ifname); + } + } + } + + if (feat.vlan4k_option) + uci.set('network', sid, feat.vlan4k_option, '1'); + + uci.set('network', section_id, 'ports', values.join(' ')); + + return form.Value.prototype.write.apply(this, [section_id, value]); + }; + + o.cfgvalue = function(section_id) { + var value = feat.vid_option ? uci.get('network', section_id, feat.vid_option) : null; + return (value || uci.get('network', section_id, 'vlan')); + }; + + s.option(form.Value, 'description', _('Description')); + + for (var j = 0; Array.isArray(topology.ports) && j < topology.ports.length; j++) { + var portspec = topology.ports[j], + portstate = Array.isArray(topology.portstate) ? topology.portstate[portspec.num] : null; + + o = s.option(form.ListValue, String(portspec.num), portspec.label); + o.value('', _('off')); + + if (!portspec.need_tag) + o.value('u', _('untagged')); + + o.value('t', _('tagged')); + + o.cfgvalue = parse_portvalue; + o.validate = validate_portvalue; + o.write = function() {}; + + o.description = render_port_status(E('small', { + 'data-switch': switch_name, + 'data-port': portspec.num + }), portstate); + + port_opts.push(o); + } + + port_opts.sort(function(a, b) { + return a.option > b.option; + }); + } + + poll.add(L.bind(update_port_status, m, topologies)); + + return m.render(); + } +}); diff --git a/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js b/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js new file mode 100644 index 000000000..e76b2b711 --- /dev/null +++ b/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js @@ -0,0 +1,2451 @@ +'use strict'; +'require view'; +'require dom'; +'require poll'; +'require fs'; +'require ui'; +'require rpc'; +'require uci'; +'require form'; +'require network'; +'require firewall'; +'require tools.widgets as widgets'; + +var isReadonlyView = !L.hasViewPermission(); + +function count_changes(section_id) { + var changes = ui.changes.changes, n = 0; + + if (!L.isObject(changes)) + return n; + + if (Array.isArray(changes.wireless)) + for (var i = 0; i < changes.wireless.length; i++) + n += (changes.wireless[i][1] == section_id); + + return n; +} + +function render_radio_badge(radioDev) { + return E('span', { 'class': 'ifacebadge' }, [ + E('img', { 'src': L.resource('icons/wifi%s.png').format(radioDev.isUp() ? '' : '_disabled') }), + ' ', + radioDev.getName() + ]); +} + +function render_signal_badge(signalPercent, signalValue, noiseValue, wrap, mode) { + var icon, title, value; + + if (signalPercent < 0) + icon = L.resource('icons/signal-none.png'); + else if (signalPercent == 0) + icon = L.resource('icons/signal-0.png'); + else if (signalPercent < 25) + icon = L.resource('icons/signal-0-25.png'); + else if (signalPercent < 50) + icon = L.resource('icons/signal-25-50.png'); + else if (signalPercent < 75) + icon = L.resource('icons/signal-50-75.png'); + else + icon = L.resource('icons/signal-75-100.png'); + + if (signalValue != null && signalValue != 0) { + if (noiseValue != null && noiseValue != 0) { + value = '%d/%d\xa0%s'.format(signalValue, noiseValue, _('dBm')); + title = '%s: %d %s / %s: %d %s / %s %d'.format( + _('Signal'), signalValue, _('dBm'), + _('Noise'), noiseValue, _('dBm'), + _('SNR'), signalValue - noiseValue); + } + else { + value = '%d\xa0%s'.format(signalValue, _('dBm')); + title = '%s: %d %s'.format(_('Signal'), signalValue, _('dBm')); + } + } + else if (signalPercent > -1) { + switch (mode) { + case 'ap': + title = _('No client associated'); + break; + + case 'sta': + case 'adhoc': + case 'mesh': + title = _('Not associated'); + break; + + default: + title = _('No RX signal'); + } + + if (noiseValue != null && noiseValue != 0) { + value = '---/%d\xa0%s'.format(noiseValue, _('dBm')); + title = '%s / %s: %d %s'.format(title, _('Noise'), noiseValue, _('dBm')); + } + else { + value = '---\xa0%s'.format(_('dBm')); + } + } + else { + value = E('em', {}, E('small', {}, [ _('disabled') ])); + title = _('Interface is disabled'); + } + + return E('div', { + 'class': wrap ? 'center' : 'ifacebadge', + 'title': title, + 'data-signal': signalValue, + 'data-noise': noiseValue + }, [ + E('img', { 'src': icon }), + E('span', {}, [ + wrap ? E('br') : ' ', + value + ]) + ]); +} + +function render_network_badge(radioNet) { + return render_signal_badge( + radioNet.isUp() ? radioNet.getSignalPercent() : -1, + radioNet.getSignal(), radioNet.getNoise(), false, radioNet.getMode()); +} + +function render_radio_status(radioDev, wifiNets) { + var name = radioDev.getI18n().replace(/ Wireless Controller .+$/, ''), + node = E('div', [ E('big', {}, E('strong', {}, name)), E('div') ]), + channel, frequency, bitrate; + + for (var i = 0; i < wifiNets.length; i++) { + channel = channel || wifiNets[i].getChannel(); + frequency = frequency || wifiNets[i].getFrequency(); + bitrate = bitrate || wifiNets[i].getBitRate(); + } + + if (radioDev.isUp()) + L.itemlist(node.lastElementChild, [ + _('Channel'), '%s (%s %s)'.format(channel || '?', frequency || '?', _('GHz')), + _('Bitrate'), '%s %s'.format(bitrate || '?', _('Mbit/s')) + ], ' | '); + else + node.lastElementChild.appendChild(E('em', _('Device is not active'))); + + return node; +} + +function render_network_status(radioNet) { + var mode = radioNet.getActiveMode(), + bssid = radioNet.getActiveBSSID(), + channel = radioNet.getChannel(), + disabled = (radioNet.get('disabled') == '1' || uci.get('wireless', radioNet.getWifiDeviceName(), 'disabled') == '1'), + is_assoc = (bssid && bssid != '00:00:00:00:00:00' && channel && mode != 'Unknown' && !disabled), + is_mesh = (radioNet.getMode() == 'mesh'), + changecount = count_changes(radioNet.getName()), + status_text = null; + + if (changecount) + status_text = E('a', { + href: '#', + click: L.bind(ui.changes.displayChanges, ui.changes) + }, _('Interface has %d pending changes').format(changecount)); + else if (!is_assoc) + status_text = E('em', disabled ? _('Wireless is disabled') : _('Wireless is not associated')); + + return L.itemlist(E('div'), [ + is_mesh ? _('Mesh ID') : _('SSID'), (is_mesh ? radioNet.getMeshID() : radioNet.getSSID()) || '?', + _('Mode'), mode, + _('BSSID'), (!changecount && is_assoc) ? bssid : null, + _('Encryption'), (!changecount && is_assoc) ? radioNet.getActiveEncryption() || _('None') : null, + null, status_text + ], [ ' | ', E('br') ]); +} + +function render_modal_status(node, radioNet) { + var mode = radioNet.getActiveMode(), + noise = radioNet.getNoise(), + bssid = radioNet.getActiveBSSID(), + channel = radioNet.getChannel(), + disabled = (radioNet.get('disabled') == '1'), + is_assoc = (bssid && bssid != '00:00:00:00:00:00' && channel && mode != 'Unknown' && !disabled); + + if (node == null) + node = E('span', { 'class': 'ifacebadge large', 'data-network': radioNet.getName() }, [ E('small'), E('span') ]); + + dom.content(node.firstElementChild, render_signal_badge( + disabled ? -1 : radioNet.getSignalPercent(), + radioNet.getSignal(), noise, true, radioNet.getMode())); + + L.itemlist(node.lastElementChild, [ + _('Mode'), mode, + _('SSID'), radioNet.getSSID() || '?', + _('BSSID'), is_assoc ? bssid : null, + _('Encryption'), is_assoc ? radioNet.getActiveEncryption() || _('None') : null, + _('Channel'), is_assoc ? '%d (%.3f %s)'.format(radioNet.getChannel(), radioNet.getFrequency() || 0, _('GHz')) : null, + _('Tx-Power'), is_assoc ? '%d %s'.format(radioNet.getTXPower(), _('dBm')) : null, + _('Signal'), is_assoc ? '%d %s'.format(radioNet.getSignal(), _('dBm')) : null, + _('Noise'), (is_assoc && noise != null) ? '%d %s'.format(noise, _('dBm')) : null, + _('Bitrate'), is_assoc ? '%.1f %s'.format(radioNet.getBitRate() || 0, _('Mbit/s')) : null, + _('Country'), is_assoc ? radioNet.getCountryCode() : null + ], [ ' | ', E('br'), E('br'), E('br'), E('br'), E('br'), ' | ', E('br'), ' | ' ]); + + if (!is_assoc) + dom.append(node.lastElementChild, E('em', disabled ? _('Wireless is disabled') : _('Wireless is not associated'))); + + return node; +} + +function format_wifirate(rate) { + var s = '%.1f\xa0%s, %d\xa0%s'.format(rate.rate / 1000, _('Mbit/s'), rate.mhz, _('MHz')), + ht = rate.ht, vht = rate.vht, + mhz = rate.mhz, nss = rate.nss, + mcs = rate.mcs, sgi = rate.short_gi, + he = rate.he, he_gi = rate.he_gi, + he_dcm = rate.he_dcm, + eht = rate?.eht ?? false, eht_gi = rate?.eht_gi ?? 0, + eht_dcm = rate?.eht_dcm ?? 0; + + if (ht || vht) { + if (vht) s += ', VHT-MCS\xa0%d'.format(mcs); + if (nss) s += ', VHT-NSS\xa0%d'.format(nss); + if (ht) s += ', MCS\xa0%s'.format(mcs); + if (sgi) s += ', ' + _('Short GI').replace(/ /g, '\xa0'); + } + + if (he) { + s += ', HE-MCS\xa0%d'.format(mcs); + if (nss) s += ', HE-NSS\xa0%d'.format(nss); + if (he_gi) s += ', HE-GI\xa0%d'.format(he_gi); + if (he_dcm) s += ', HE-DCM\xa0%d'.format(he_dcm); + } + + if (eht) { + s += ', EHT-MCS\xa0%d'.format(mcs); + if (nss) s += ', EHT-NSS\xa0%d'.format(nss); + if (eht_gi) s += ', EHT-GI\xa0%d'.format(eht_gi); + if (eht_dcm) s += ', EHT-DCM\xa0%d'.format(eht_dcm); + } + + return s; +} + +function radio_restart(id, ev) { + var row = document.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(id)), + dsc = row.querySelector('[data-name="_stat"] > div'), + btn = row.querySelector('.cbi-section-actions button'); + + btn.blur(); + btn.classList.add('spinning'); + btn.disabled = true; + + dsc.setAttribute('restart', ''); + dom.content(dsc, E('em', _('Device is restarting…'))); +} + +function network_updown(id, map, ev) { + var radio = uci.get('wireless', id, 'device'), + disabled = (uci.get('wireless', id, 'disabled') == '1') || + (uci.get('wireless', radio, 'disabled') == '1'); + + if (disabled) { + uci.unset('wireless', id, 'disabled'); + uci.unset('wireless', radio, 'disabled'); + } + else { + uci.set('wireless', id, 'disabled', '1'); + + var all_networks_disabled = true, + wifi_ifaces = uci.sections('wireless', 'wifi-iface'); + + for (var i = 0; i < wifi_ifaces.length; i++) { + if (wifi_ifaces[i].device == radio && wifi_ifaces[i].disabled != '1') { + all_networks_disabled = false; + break; + } + } + + if (all_networks_disabled) + uci.set('wireless', radio, 'disabled', '1'); + } + + return map.save().then(function() { + ui.changes.apply() + }); +} + +function next_free_sid(offset) { + var sid = 'wifinet' + offset; + + while (uci.get('wireless', sid)) + sid = 'wifinet' + (++offset); + + return sid; +} + +function add_dependency_permutations(o, deps) { + var res = null; + + for (var key in deps) { + if (!deps.hasOwnProperty(key) || !Array.isArray(deps[key])) + continue; + + var list = deps[key], + tmp = []; + + for (var j = 0; j < list.length; j++) { + for (var k = 0; k < (res ? res.length : 1); k++) { + var item = (res ? Object.assign({}, res[k]) : {}); + item[key] = list[j]; + tmp.push(item); + } + } + + res = tmp; + } + + for (var i = 0; i < (res ? res.length : 0); i++) + o.depends(res[i]); +} + +// Define a class CBIWifiFrequencyValue that extends form.Value +var CBIWifiFrequencyValue = form.Value.extend({ + // Declare an RPC method to get the frequency list for a given device + callFrequencyList: rpc.declare({ + object: 'iwinfo', + method: 'freqlist', + params: [ 'device' ], + expect: { results: [] } + }), + + // Load method to fetch WiFi device details and frequency list + load: function(section_id) { + return Promise.all([ + network.getWifiDevice(section_id), + this.callFrequencyList(section_id) + ]).then(L.bind(function(data) { + this.channels = { + '2g': L.hasSystemFeature('hostapd', 'acs') ? [ 'auto', 'auto', { available: true } ] : [], + '5g': L.hasSystemFeature('hostapd', 'acs') ? [ 'auto', 'auto', { available: true } ] : [], + '6g': L.hasSystemFeature('hostapd', 'acs') ? [ 'auto', 'auto', { available: true } ] : [], + '60g': [] + }; + + for (var i = 0; i < data[1].length; i++) { + if (!data[1][i].band) + continue; + + var band = '%dg'.format(data[1][i].band), + available = true; + + + if (data[1][i].restricted && data[1][i].no_ir) + available = false; + + this.channels[band].push( + data[1][i].channel, + '%d (%d Mhz)'.format(data[1][i].channel, data[1][i].mhz), + { + available: available, + no_outdoor: data[1][i].no_outdoor + } + + ); + } + + var hwmodelist = L.toArray(data[0] ? data[0].getHWModes() : null) + .reduce(function(o, v) { o[v] = true; return o }, {}); + + // Define supported modes + this.modes = [ + '', 'Legacy', { available: hwmodelist.a || hwmodelist.b || hwmodelist.g }, + 'n', 'N', { available: hwmodelist.n }, + 'ac', 'AC', { available: L.hasSystemFeature('hostapd', '11ac') && hwmodelist.ac }, + 'ax', 'AX', { available: L.hasSystemFeature('hostapd', '11ax') && hwmodelist.ax }, + 'be', 'BE', { available: L.hasSystemFeature('hostapd', '11be') && hwmodelist.be } + ]; + + // Create a list of HT modes based on device capabilities + var htmodelist = L.toArray(data[0] ? data[0].getHTModes() : null) + .reduce(function(o, v) { o[v] = true; return o }, {}); + + this.htmodes = { + '': [ '', '-', { available: true } ], + 'n': [ + 'HT20', '20 MHz', { available: htmodelist.HT20 }, + 'HT40', '40 MHz', { available: htmodelist.HT40 } + ], + 'ac': [ + 'VHT20', '20 MHz', { available: htmodelist.VHT20 }, + 'VHT40', '40 MHz', { available: htmodelist.VHT40 }, + 'VHT80', '80 MHz', { available: htmodelist.VHT80 }, + 'VHT160', '160 MHz', { available: htmodelist.VHT160 } + ], + 'ax': [ + 'HE20', '20 MHz', { available: htmodelist.HE20 }, + 'HE40', '40 MHz', { available: htmodelist.HE40 }, + 'HE80', '80 MHz', { available: htmodelist.HE80 }, + 'HE160', '160 MHz', { available: htmodelist.HE160 } + ], + 'be': [ + 'EHT20', '20 MHz', { available: htmodelist.EHT20 }, + 'EHT40', '40 MHz', { available: htmodelist.EHT40 }, + 'EHT80', '80 MHz', { available: htmodelist.EHT80 }, + 'EHT160', '160 MHz', { available: htmodelist.EHT160 }, + 'EHT320', '320 MHz', { available: htmodelist.EHT320 } + ] + }; + + // Define available bands for widget selection based on channel availability + // AX and BE are available on 2/5/6G bands + this.bands = { + '': [ + '2g', '2.4 GHz', { available: this.channels['2g'].length > 3 }, + '5g', '5 GHz', { available: this.channels['5g'].length > 3 }, + '60g', '60 GHz', { available: this.channels['60g'].length > 0 } + ], + 'n': [ + '2g', '2.4 GHz', { available: this.channels['2g'].length > 3 }, + '5g', '5 GHz', { available: this.channels['5g'].length > 3 } + ], + 'ac': [ + '5g', '5 GHz', { available: true } + ], + 'ax': [ + '2g', '2.4 GHz', { available: this.channels['2g'].length > 3 }, + '5g', '5 GHz', { available: this.channels['5g'].length > 3 }, + '6g', '6 GHz', { available: this.channels['6g'].length > 3 } + ], + 'be': [ + '2g', '2.4 GHz', { available: this.channels['2g'].length > 3 }, + '5g', '5 GHz', { available: this.channels['5g'].length > 3 }, + '6g', '6 GHz', { available: this.channels['6g'].length > 3 } + ] + }; + }, this)); + }, + + // Set values in the select element + setValues: function(sel, vals) { + if (sel.vals) + sel.vals.selected = sel.selectedIndex; + + while (sel.options[0]) + sel.remove(0); + + for (var i = 0; vals && i < vals.length; i += 3) + if (vals[i+2] && vals[i+2].available) + sel.add(E('option', { value: vals[i+0] }, [ vals[i+1] ])); + + if (vals && !isNaN(vals.selected)) + sel.selectedIndex = vals.selected; + + sel.parentNode.style.display = (sel.options.length <= 1) ? 'none' : ''; + sel.vals = vals; + }, + + toggleWifiMode: function(elem) { + this.toggleWifiHTMode(elem); + this.toggleWifiBand(elem); + }, + + toggleWifiHTMode: function(elem) { + var mode = elem.querySelector('.mode'); + var bwdt = elem.querySelector('.htmode'); + + this.setValues(bwdt, this.htmodes[mode.value]); + }, + + toggleWifiBand: function(elem) { + var mode = elem.querySelector('.mode'); + var band = elem.querySelector('.band'); + + this.setValues(band, this.bands[mode.value]); + this.toggleWifiChannel(elem); + + this.map.checkDepends(); + }, + + checkWifiChannelRestriction: function(elem) { + var band = elem.querySelector('.band'), + chan = elem.querySelector('.channel'), + restricted_chan = elem.querySelector('.restricted_channel'), + channels = this.channels[band.value], + no_outdoor; + + if (chan.selectedIndex < 0) + return; + + no_outdoor = channels[(chan.selectedIndex*3)+2].no_outdoor; + if (no_outdoor) + restricted_chan.style.display = ''; + else + restricted_chan.style.display = 'none'; + }, + + toggleWifiChannel: function(elem) { + var band = elem.querySelector('.band'); + var chan = elem.querySelector('.channel'); + + this.setValues(chan, this.channels[band.value]); + + this.map.checkDepends(); + this.checkWifiChannelRestriction(elem); + }, + + setInitialValues: function(section_id, elem) { + var mode = elem.querySelector('.mode'), + band = elem.querySelector('.band'), + chan = elem.querySelector('.channel'), + bwdt = elem.querySelector('.htmode'), + htval = uci.get('wireless', section_id, 'htmode'), + hwval = uci.get('wireless', section_id, 'hwmode'), + chval = uci.get('wireless', section_id, 'channel'), + bandval = uci.get('wireless', section_id, 'band'); + + this.setValues(mode, this.modes); + + // Determine mode based on htmode value + if (/EHT20|EHT40|EHT80|EHT160|EHT320/.test(htval)) + mode.value = 'be'; + else if (/HE20|HE40|HE80|HE160/.test(htval)) + mode.value = 'ax'; + else if (/VHT20|VHT40|VHT80|VHT160/.test(htval)) + mode.value = 'ac'; + else if (/HT20|HT40/.test(htval)) + mode.value = 'n'; + else + mode.value = ''; + + this.toggleWifiMode(elem); + + if (hwval != null) { + this.useBandOption = false; + + if (/a/.test(hwval)) + band.value = '5g'; + else + band.value = '2g'; + } + else { + this.useBandOption = true; + + band.value = bandval; + } + + this.toggleWifiBand(elem); + + bwdt.value = htval; + chan.value = chval || (chan.options[0] ? chan.options[0].value : 'auto'); + + this.checkWifiChannelRestriction(elem); + + return elem; + }, + + renderWidget: function(section_id, option_index, cfgvalue) { + var elem = E('div'); + + dom.content(elem, [ + E('div', { 'class' : 'restricted_channel', 'style': 'display:none'}, [ + E('div', {'class': 'cbi-button alert-message warning disabled'}, _('Indoor Only Channel Selected')) + ]), + E('label', { 'style': 'float:left; margin-right:3px' }, [ + _('Mode'), E('br'), + E('select', { + 'class': 'mode', + 'style': 'width:auto', + 'change': L.bind(this.toggleWifiMode, this, elem), + 'disabled': (this.disabled != null) ? this.disabled : this.map.readonly + }) + ]), + E('label', { 'style': 'float:left; margin-right:3px' }, [ + _('Band'), E('br'), + E('select', { + 'class': 'band', + 'style': 'width:auto', + 'change': L.bind(this.toggleWifiBand, this, elem), + 'disabled': (this.disabled != null) ? this.disabled : this.map.readonly + }) + ]), + E('label', { 'style': 'float:left; margin-right:3px' }, [ + _('Channel'), E('br'), + E('select', { + 'class': 'channel', + 'style': 'width:auto', + 'change': L.bind(this.toggleWifiChannel, this, elem), + 'disabled': (this.disabled != null) ? this.disabled : this.map.readonly + }) + ]), + E('label', { 'style': 'float:left; margin-right:3px' }, [ + _('Width'), E('br'), + E('select', { + 'class': 'htmode', + 'style': 'width:auto', + 'change': L.bind(this.map.checkDepends, this.map), + 'disabled': (this.disabled != null) ? this.disabled : this.map.readonly + }) + ]), + E('br', { 'style': 'clear:left' }) + ]); + + return this.setInitialValues(section_id, elem); + }, + + cfgvalue: function(section_id) { + return [ + uci.get('wireless', section_id, 'htmode'), + uci.get('wireless', section_id, 'hwmode') || uci.get('wireless', section_id, 'band'), + uci.get('wireless', section_id, 'channel') + ]; + }, + + formvalue: function(section_id) { + var node = this.map.findElement('data-field', this.cbid(section_id)); + + return [ + node.querySelector('.htmode').value, + node.querySelector('.band').value, + node.querySelector('.channel').value + ]; + }, + + write: function(section_id, value) { + uci.set('wireless', section_id, 'htmode', value[0] || null); + + if (this.useBandOption) + uci.set('wireless', section_id, 'band', value[1]); + else + uci.set('wireless', section_id, 'hwmode', (value[1] == '2g') ? '11g' : '11a'); + + uci.set('wireless', section_id, 'channel', value[2]); + } +}); + +var CBIWifiTxPowerValue = form.ListValue.extend({ + callTxPowerList: rpc.declare({ + object: 'iwinfo', + method: 'txpowerlist', + params: [ 'device' ], + expect: { results: [] } + }), + + load: function(section_id) { + return this.callTxPowerList(section_id).then(L.bind(function(pwrlist) { + this.powerval = this.wifiNetwork ? this.wifiNetwork.getTXPower() : null; + this.poweroff = this.wifiNetwork ? this.wifiNetwork.getTXPowerOffset() : null; + + this.value('', _('driver default')); + + for (var i = 0; i < pwrlist.length; i++) + this.value(pwrlist[i].dbm, '%d dBm (%d mW)'.format(pwrlist[i].dbm, pwrlist[i].mw)); + + return form.ListValue.prototype.load.apply(this, [section_id]); + }, this)); + }, + + renderWidget: function(section_id, option_index, cfgvalue) { + var widget = form.ListValue.prototype.renderWidget.apply(this, [section_id, option_index, cfgvalue]); + widget.firstElementChild.style.width = 'auto'; + + dom.append(widget, E('span', [ + ' - ', _('Current power'), ': ', + E('span', [ this.powerval != null ? '%d dBm'.format(this.powerval) : E('em', _('unknown')) ]), + this.poweroff ? ' + %d dB offset = %s dBm'.format(this.poweroff, this.powerval != null ? this.powerval + this.poweroff : '?') : '' + ])); + + return widget; + } +}); + +var CBIWifiCountryValue = form.Value.extend({ + callCountryList: rpc.declare({ + object: 'iwinfo', + method: 'countrylist', + params: [ 'device' ], + expect: { results: [] } + }), + + load: function(section_id) { + return this.callCountryList(section_id).then(L.bind(function(countrylist) { + if (Array.isArray(countrylist) && countrylist.length > 0) { + this.value('', _('driver default')); + + for (var i = 0; i < countrylist.length; i++) + this.value(countrylist[i].iso3166, '%s - %s'.format(countrylist[i].iso3166, countrylist[i].country)); + } + + return form.Value.prototype.load.apply(this, [section_id]); + }, this)); + }, + + validate: function(section_id, formvalue) { + if (formvalue != null && formvalue != '' && !/^[A-Z0-9][A-Z0-9]$/.test(formvalue)) + return _('Use ISO/IEC 3166 alpha2 country codes.'); + + return true; + }, + + renderWidget: function(section_id, option_index, cfgvalue) { + var typeClass = (this.keylist && this.keylist.length) ? form.ListValue : form.Value; + return typeClass.prototype.renderWidget.apply(this, [section_id, option_index, cfgvalue]); + } +}); + +return view.extend({ + poll_status: function(map, data) { + var rows = map.querySelectorAll('.cbi-section-table-row[data-sid]'); + + for (var i = 0; i < rows.length; i++) { + var section_id = rows[i].getAttribute('data-sid'), + radioDev = data[1].filter(function(d) { return d.getName() == section_id })[0], + radioNet = data[2].filter(function(n) { return n.getName() == section_id })[0], + badge = rows[i].querySelector('[data-name="_badge"] > div'), + stat = rows[i].querySelector('[data-name="_stat"]'), + btns = rows[i].querySelectorAll('.cbi-section-actions button'), + busy = btns[0].classList.contains('spinning') || btns[1].classList.contains('spinning') || btns[2].classList.contains('spinning'); + + if (radioDev) { + dom.content(badge, render_radio_badge(radioDev)); + dom.content(stat, render_radio_status(radioDev, data[2].filter(function(n) { return n.getWifiDeviceName() == radioDev.getName() }))); + } + else { + dom.content(badge, render_network_badge(radioNet)); + dom.content(stat, render_network_status(radioNet)); + } + + if (stat.hasAttribute('restart')) + dom.content(stat, E('em', _('Device is restarting…'))); + + btns[0].disabled = isReadonlyView || busy; + btns[1].disabled = (isReadonlyView && radioDev) || busy; + btns[2].disabled = isReadonlyView || busy; + } + + var table = document.querySelector('#wifi_assoclist_table'), + hosts = data[0], + trows = []; + + for (var i = 0; i < data[3].length; i++) { + var bss = data[3][i], + name = hosts.getHostnameByMACAddr(bss.mac), + ipv4 = hosts.getIPAddrByMACAddr(bss.mac), + ipv6 = hosts.getIP6AddrByMACAddr(bss.mac); + + var hint; + + if (name && ipv4 && ipv6) + hint = '%s (%s, %s)'.format(name, ipv4, ipv6); + else if (name && (ipv4 || ipv6)) + hint = '%s (%s)'.format(name, ipv4 || ipv6); + else + hint = name || ipv4 || ipv6 || '?'; + + var row = [ + E('span', { + 'class': 'ifacebadge', + 'data-ifname': bss.network.getIfname(), + 'data-ssid': bss.network.getSSID() + }, [ + E('img', { + 'src': L.resource('icons/wifi%s.png').format(bss.network.isUp() ? '' : '_disabled'), + 'title': bss.radio.getI18n() + }), + E('span', [ + ' %s '.format(bss.network.getShortName()), + E('small', '(%s)'.format(bss.network.getIfname())) + ]) + ]), + bss.mac, + hint, + render_signal_badge(Math.min((bss.signal + 110) / 70 * 100, 100), bss.signal, bss.noise), + E('span', {}, [ + E('span', format_wifirate(bss.rx)), + E('br'), + E('span', format_wifirate(bss.tx)) + ]) + ]; + + var zones = data[4]; + if (bss.vlan) { + var desc = bss.vlan.getI18n(); + var vlan_network = bss.vlan.getNetwork(); + var vlan_zone; + + if (vlan_network && zones) + for (let zone of zones) + if (zone.getNetworks().includes(vlan_network)) + vlan_zone = zone; + + row[0].insertBefore( + E('div', { + 'class' : 'zonebadge', + 'title' : desc, + 'style' : firewall.getZoneColorStyle(vlan_zone) + }, [ desc ]), row[0].firstChild); + } + + if (bss.network.isClientDisconnectSupported()) { + if (table.firstElementChild.childNodes.length < 6) + table.firstElementChild.appendChild(E('th', { 'class': 'th cbi-section-actions'})); + + row.push(E('button', { + 'class': 'cbi-button cbi-button-remove', + 'click': L.bind(function(net, mac, ev) { + dom.parent(ev.currentTarget, '.tr').style.opacity = 0.5; + ev.currentTarget.classList.add('spinning'); + ev.currentTarget.disabled = true; + ev.currentTarget.blur(); + + net.disconnectClient(mac, true, 5, 60000); + }, this, bss.network, bss.mac), + 'disabled': isReadonlyView || null + }, [ _('Disconnect') ])); + } + else { + row.push('-'); + } + + trows.push(row); + } + + cbi_update_table(table, trows, E('em', _('No information available'))); + + var stat = document.querySelector('.cbi-modal [data-name="_wifistat_modal"] .ifacebadge.large'); + + if (stat) + render_modal_status(stat, data[2].filter(function(n) { return n.getName() == stat.getAttribute('data-network') })[0]); + + return network.flushCache(); + }, + + load: function() { + return Promise.all([ + uci.changes(), + uci.load('wireless'), + uci.load('system'), + firewall.getZones(), + ]); + }, + + checkAnonymousSections: function() { + var wifiIfaces = uci.sections('wireless', 'wifi-iface'); + + for (var i = 0; i < wifiIfaces.length; i++) + if (wifiIfaces[i]['.anonymous']) + return true; + + return false; + }, + + callUciRename: rpc.declare({ + object: 'uci', + method: 'rename', + params: [ 'config', 'section', 'name' ] + }), + + render: function(data) { + if (this.checkAnonymousSections()) + return this.renderMigration(); + else + return this.renderOverview(data[3]); + }, + + handleMigration: function(ev) { + var wifiIfaces = uci.sections('wireless', 'wifi-iface'), + id_offset = 0, + tasks = []; + + for (var i = 0; i < wifiIfaces.length; i++) { + if (!wifiIfaces[i]['.anonymous']) + continue; + + var new_name = next_free_sid(id_offset); + + tasks.push(this.callUciRename('wireless', wifiIfaces[i]['.name'], new_name)); + id_offset = +new_name.substring(7) + 1; + } + + return Promise.all(tasks) + .then(L.bind(ui.changes.init, ui.changes)) + .then(L.bind(ui.changes.apply, ui.changes)); + }, + + renderMigration: function() { + ui.showModal(_('Wireless configuration migration'), [ + E('p', _('The existing wireless configuration needs to be changed for LuCI to function properly.')), + E('p', _('Upon pressing "Continue", anonymous "wifi-iface" sections will be assigned with a name in the form wifinet# and the network will be restarted to apply the updated configuration.')), + E('div', { 'class': 'right' }, + E('button', { + 'class': 'btn cbi-button-action important', + 'click': ui.createHandlerFn(this, 'handleMigration') + }, _('Continue'))) + ]); + }, + + renderOverview: function(zones) { + var m, s, o; + + m = new form.Map('wireless'); + m.chain('network'); + m.chain('firewall'); + + s = m.section(form.GridSection, 'wifi-device', _('Wireless Overview')); + s.anonymous = true; + s.addremove = false; + + s.load = function() { + return network.getWifiDevices().then(L.bind(function(radios) { + this.radios = radios.sort(function(a, b) { + return a.getName() > b.getName(); + }); + + var tasks = []; + + for (var i = 0; i < radios.length; i++) + tasks.push(radios[i].getWifiNetworks()); + + return Promise.all(tasks); + }, this)).then(L.bind(function(data) { + this.wifis = []; + + for (var i = 0; i < data.length; i++) + this.wifis.push.apply(this.wifis, data[i]); + }, this)); + }; + + s.cfgsections = function() { + var rv = []; + + for (var i = 0; i < this.radios.length; i++) { + rv.push(this.radios[i].getName()); + + for (var j = 0; j < this.wifis.length; j++) + if (this.wifis[j].getWifiDeviceName() == this.radios[i].getName()) + rv.push(this.wifis[j].getName()); + } + + return rv; + }; + + s.modaltitle = function(section_id) { + var radioNet = this.wifis.filter(function(w) { return w.getName() == section_id})[0]; + return radioNet ? radioNet.getI18n() : _('Edit wireless network'); + }; + + s.lookupRadioOrNetwork = function(section_id) { + var radioDev = this.radios.filter(function(r) { return r.getName() == section_id })[0]; + if (radioDev) + return radioDev; + + var radioNet = this.wifis.filter(function(w) { return w.getName() == section_id })[0]; + if (radioNet) + return radioNet; + + return null; + }; + + s.renderRowActions = function(section_id) { + var inst = this.lookupRadioOrNetwork(section_id), btns; + + if (inst.getWifiNetworks) { + btns = [ + E('button', { + 'class': 'cbi-button cbi-button-neutral', + 'title': _('Restart radio interface'), + 'click': ui.createHandlerFn(this, radio_restart, section_id) + }, _('Restart')), + E('button', { + 'class': 'cbi-button cbi-button-action important', + 'title': _('Find and join network'), + 'click': ui.createHandlerFn(this, 'handleScan', inst) + }, _('Scan')), + E('button', { + 'class': 'cbi-button cbi-button-add', + 'title': _('Provide new network'), + 'click': ui.createHandlerFn(this, 'handleAdd', inst) + }, _('Add')) + ]; + } + else { + var isDisabled = (inst.get('disabled') == '1' || + uci.get('wireless', inst.getWifiDeviceName(), 'disabled') == '1'); + + btns = [ + E('button', { + 'class': 'cbi-button cbi-button-neutral enable-disable', + 'title': isDisabled ? _('Enable this network') : _('Disable this network'), + 'click': ui.createHandlerFn(this, network_updown, section_id, this.map) + }, isDisabled ? _('Enable') : _('Disable')), + E('button', { + 'class': 'cbi-button cbi-button-action important', + 'title': _('Edit this network'), + 'click': ui.createHandlerFn(this, 'renderMoreOptionsModal', section_id) + }, _('Edit')), + E('button', { + 'class': 'cbi-button cbi-button-negative remove', + 'title': _('Delete this network'), + 'click': ui.createHandlerFn(this, 'handleRemove', section_id) + }, _('Remove')) + ]; + } + + return E('td', { 'class': 'td middle cbi-section-actions' }, E('div', btns)); + }; + + s.addModalOptions = function(s) { + return network.getWifiNetwork(s.section).then(function(radioNet) { + var hwtype = uci.get('wireless', radioNet.getWifiDeviceName(), 'type'); + var o, ss; + + o = s.option(form.SectionValue, '_device', form.NamedSection, radioNet.getWifiDeviceName(), 'wifi-device', _('Device Configuration')); + o.modalonly = true; + + ss = o.subsection; + ss.tab('general', _('General Setup')); + ss.tab('advanced', _('Advanced Settings')); + + var isDisabled = (radioNet.get('disabled') == '1' || + uci.get('wireless', radioNet.getWifiDeviceName(), 'disabled') == 1); + + o = ss.taboption('general', form.DummyValue, '_wifistat_modal', _('Status')); + o.cfgvalue = L.bind(function(radioNet) { + return render_modal_status(null, radioNet); + }, this, radioNet); + o.write = function() {}; + + o = ss.taboption('general', form.Button, '_toggle', isDisabled ? _('Wireless network is disabled') : _('Wireless network is enabled')); + o.inputstyle = isDisabled ? 'apply' : 'reset'; + o.inputtitle = isDisabled ? _('Enable') : _('Disable'); + o.onclick = ui.createHandlerFn(s, network_updown, s.section, s.map); + + o = ss.taboption('general', CBIWifiFrequencyValue, '_freq', '
    ' + _('Operating frequency'), _('Some channels may be restricted to Indoor Only use by your Regulatory Domain. Make sure to follow this advice if a channel is reported as such.')); + o.ucisection = s.section; + + if (hwtype == 'mac80211') { + o = ss.taboption('general', form.Flag, 'legacy_rates', _('Allow legacy 802.11b rates'), _('Legacy or badly behaving devices may require legacy 802.11b rates to interoperate. Airtime efficiency may be significantly reduced where these are used. It is recommended to not allow 802.11b rates where possible.')); + o.depends({'_freq': '2g', '!contains': true}); + + o = ss.taboption('general', CBIWifiTxPowerValue, 'txpower', _('Maximum transmit power'), _('Specifies the maximum transmit power the wireless radio may use. Depending on regulatory requirements and wireless usage, the actual transmit power may be reduced by the driver.')); + o.wifiNetwork = radioNet; + + o = ss.taboption('general', CBIWifiCountryValue, 'country', _('Country Code')); + o.wifiNetwork = radioNet; + + o = ss.taboption('advanced', form.ListValue, 'cell_density', _('Coverage cell density'), _('Configures data rates based on the coverage cell density. Normal configures basic rates to 6, 12, 24 Mbps if legacy 802.11b rates are not used else to 5.5, 11 Mbps. High configures basic rates to 12, 24 Mbps if legacy 802.11b rates are not used else to the 11 Mbps rate. Very High configures 24 Mbps as the basic rate. Supported rates lower than the minimum basic rate are not offered.')); + o.value('0', _('Disabled')); + o.value('1', _('Normal')); + o.value('2', _('High')); + o.value('3', _('Very High')); + + o = ss.taboption('advanced', form.Value, 'distance', _('Distance Optimization'), _('Distance to farthest network member in meters. Set only for distances above one kilometer; otherwise it is harmful.')); + o.datatype = 'or(range(0,114750),"auto")'; + o.placeholder = 'auto'; + + o = ss.taboption('advanced', form.Value, 'frag', _('Fragmentation Threshold')); + o.datatype = 'min(256)'; + o.placeholder = _('off'); + + o = ss.taboption('advanced', form.Value, 'rts', _('RTS/CTS Threshold')); + o.datatype = 'uinteger'; + o.placeholder = _('off'); + + o = ss.taboption('advanced', form.Flag, 'noscan', _('Force 40MHz mode'), _('Always use 40MHz channels even if the secondary channel overlaps. Using this option does not comply with IEEE 802.11n-2009!')); + o.rmempty = true; + + o = ss.taboption('advanced', form.Value, 'beacon_int', _('Beacon Interval')); + o.datatype = 'range(15,65535)'; + o.placeholder = 100; + o.rmempty = true; + } + + + o = s.option(form.SectionValue, '_device', form.NamedSection, radioNet.getName(), 'wifi-iface', _('Interface Configuration')); + o.modalonly = true; + + ss = o.subsection; + ss.tab('general', _('General Setup')); + ss.tab('encryption', _('Wireless Security')); + ss.tab('macfilter', _('MAC-Filter')); + ss.tab('advanced', _('Advanced Settings')); + ss.tab('roaming', _('WLAN roaming'), _('Settings for assisting wireless clients in roaming between multiple APs: 802.11r, 802.11k and 802.11v')); + + o = ss.taboption('general', form.ListValue, 'mode', _('Mode')); + o.value('ap', _('Access Point')); + o.value('sta', _('Client')); + o.value('adhoc', _('Ad-Hoc')); + + o = ss.taboption('general', form.Value, 'mesh_id', _('Mesh Id')); + o.depends('mode', 'mesh'); + + o = ss.taboption('advanced', form.Flag, 'mesh_fwding', _('Forward mesh peer traffic')); + o.rmempty = false; + o.default = '1'; + o.depends('mode', 'mesh'); + + o = ss.taboption('advanced', form.Value, 'mesh_rssi_threshold', _('RSSI threshold for joining'), _('0 = not using RSSI threshold, 1 = do not change driver default')); + o.rmempty = false; + o.default = '0'; + o.datatype = 'range(-255,1)'; + o.depends('mode', 'mesh'); + + o = ss.taboption('general', form.Value, 'ssid', _('ESSID')); + o.datatype = 'maxlength(32)'; + o.depends('mode', 'ap'); + o.depends('mode', 'sta'); + o.depends('mode', 'adhoc'); + o.depends('mode', 'ahdemo'); + o.depends('mode', 'monitor'); + o.depends('mode', 'ap-wds'); + o.depends('mode', 'sta-wds'); + o.depends('mode', 'wds'); + + o = ss.taboption('general', form.Value, 'bssid', _('BSSID')); + o.datatype = 'macaddr'; + + o = ss.taboption('general', widgets.NetworkSelect, 'network', _('Network'), _('Choose the network(s) you want to attach to this wireless interface or fill out the custom field to define a new network.')); + o.rmempty = true; + o.multiple = true; + o.novirtual = true; + o.write = function(section_id, value) { + return network.getDevice(section_id).then(L.bind(function(dev) { + var old_networks = dev.getNetworks().reduce(function(o, v) { o[v.getName()] = v; return o }, {}), + new_networks = {}, + values = L.toArray(value), + tasks = []; + + for (var i = 0; i < values.length; i++) { + new_networks[values[i]] = true; + + if (old_networks[values[i]]) + continue; + + tasks.push(network.getNetwork(values[i]).then(L.bind(function(name, net) { + return net || network.addNetwork(name, { proto: 'none' }); + }, this, values[i])).then(L.bind(function(dev, net) { + if (net) { + if (!net.isEmpty()) { + var target_dev = net.getDevice(); + + /* Resolve parent interface of vlan */ + while (target_dev && target_dev.getType() == 'vlan') + target_dev = target_dev.getParent(); + + if (!target_dev || target_dev.getType() != 'bridge') + net.set('type', 'bridge'); + } + + net.addDevice(dev); + } + }, this, dev))); + } + + for (var name in old_networks) + if (!new_networks[name]) + tasks.push(network.getNetwork(name).then(L.bind(function(dev, net) { + if (net) + net.deleteDevice(dev); + }, this, dev))); + + return Promise.all(tasks); + }, this)); + }; + + if (hwtype == 'mac80211') { + var mode = ss.children[0], + bssid = ss.children[5], + encr; + + mode.value('mesh', '802.11s'); + mode.value('ahdemo', _('Pseudo Ad-Hoc (ahdemo)')); + mode.value('monitor', _('Monitor')); + + bssid.depends('mode', 'adhoc'); + bssid.depends('mode', 'sta'); + bssid.depends('mode', 'sta-wds'); + + o = ss.taboption('macfilter', form.ListValue, 'macfilter', _('MAC Address Filter')); + o.depends('mode', 'ap'); + o.depends('mode', 'ap-wds'); + o.value('', _('disable')); + o.value('allow', _('Allow listed only')); + o.value('deny', _('Allow all except listed')); + + o = ss.taboption('macfilter', form.DynamicList, 'maclist', _('MAC-List')); + o.datatype = 'macaddr'; + o.retain = true; + o.depends('macfilter', 'allow'); + o.depends('macfilter', 'deny'); + o.load = function(section_id) { + return network.getHostHints().then(L.bind(function(hints) { + hints.getMACHints().map(L.bind(function(hint) { + this.value(hint[0], hint[1] ? '%s (%s)'.format(hint[0], hint[1]) : hint[0]); + }, this)); + + return form.DynamicList.prototype.load.apply(this, [section_id]); + }, this)); + }; + + mode.value('ap-wds', '%s (%s)'.format(_('Access Point'), _('WDS'))); + mode.value('sta-wds', '%s (%s)'.format(_('Client'), _('WDS'))); + + mode.write = function(section_id, value) { + switch (value) { + case 'ap-wds': + uci.set('wireless', section_id, 'mode', 'ap'); + uci.set('wireless', section_id, 'wds', '1'); + break; + + case 'sta-wds': + uci.set('wireless', section_id, 'mode', 'sta'); + uci.set('wireless', section_id, 'wds', '1'); + break; + + default: + uci.set('wireless', section_id, 'mode', value); + uci.unset('wireless', section_id, 'wds'); + break; + } + }; + + mode.cfgvalue = function(section_id) { + var mode = uci.get('wireless', section_id, 'mode'), + wds = uci.get('wireless', section_id, 'wds'); + + if (mode == 'ap' && wds) + return 'ap-wds'; + else if (mode == 'sta' && wds) + return 'sta-wds'; + + return mode; + }; + + o = ss.taboption('general', form.Flag, 'hidden', _('Hide ESSID'), _('Where the ESSID is hidden, clients may fail to roam and airtime efficiency may be significantly reduced.')); + o.depends('mode', 'ap'); + o.depends('mode', 'ap-wds'); + + o = ss.taboption('general', form.Flag, 'wmm', _('WMM Mode'), _('Where Wi-Fi Multimedia (WMM) Mode QoS is disabled, clients may be limited to 802.11a/802.11g rates.')); + o.depends('mode', 'ap'); + o.depends('mode', 'ap-wds'); + o.default = o.enabled; + + /* https://w1.fi/cgit/hostap/commit/?id=34f7c699a6bcb5c45f82ceb6743354ad79296078 */ + /* multicast_to_unicast https://github.com/openwrt/openwrt/commit/7babb978ad9d7fc29acb1ff86afb1eb343af303a */ + o = ss.taboption('advanced', form.Flag, 'multicast_to_unicast_all', _('Multi To Unicast'), _('ARP, IPv4 and IPv6 (even 802.1Q) with multicast destination MACs are unicast to the STA MAC address. Note: This is not Directed Multicast Service (DMS) in 802.11v. Note: might break receiver STA multicast expectations.')); + o.rmempty = true; + + o = ss.taboption('advanced', form.Flag, 'isolate', _('Isolate Clients'), _('Prevents client-to-client communication')); + o.depends('mode', 'ap'); + o.depends('mode', 'ap-wds'); + + o = ss.taboption('advanced', form.Flag, 'bridge_isolate', _('Isolate Bridge Port'), _('Prevents communication only with targets on isolated bridge ports (while allowing it with targets on non-isolated ones). This also prevents client-to-client communication on the same interface when the WiFi device is in AP mode.')); + + o = ss.taboption('advanced', form.Value, 'ifname', _('Interface name'), _('Override default interface name')); + o.optional = true; + o.datatype = 'netdevname'; + o.placeholder = radioNet.getIfname(); + if (/^radio\d+\.network/.test(o.placeholder)) + o.placeholder = ''; + + var macaddr = uci.get('wireless', radioNet.getName(), 'macaddr'); + o = ss.taboption('advanced', form.Value, 'macaddr', _('MAC address'), _('Override default MAC address - the range of usable addresses might be limited by the driver')); + o.value('', _('driver default (%s)').format(!macaddr ? radioNet.getActiveBSSID() : _('no override'))); + o.value('random', _('randomly generated')); + o.datatype = "or('random',macaddr)"; + + o = ss.taboption('advanced', form.Flag, 'short_preamble', _('Short Preamble')); + o.default = o.enabled; + + o = ss.taboption('advanced', form.Value, 'dtim_period', _('DTIM Interval'), _('Delivery Traffic Indication Message Interval')); + o.optional = true; + o.placeholder = 2; + o.datatype = 'range(1,255)'; + + o = ss.taboption('advanced', form.Value, 'wpa_group_rekey', _('Time interval for rekeying GTK'), _('sec')); + o.optional = true; + o.placeholder = 600; + o.datatype = 'uinteger'; + + o = ss.taboption('advanced', form.Flag , 'skip_inactivity_poll', _('Disable Inactivity Polling')); + o.optional = true; + o.datatype = 'uinteger'; + + o = ss.taboption('advanced', form.Value, 'max_inactivity', _('Station inactivity limit'), _('802.11v: BSS Max Idle. Units: seconds.')); + o.optional = true; + o.placeholder = 300; + o.datatype = 'uinteger'; + + o = ss.taboption('advanced', form.Value, 'max_listen_interval', _('Maximum allowed Listen Interval')); + o.optional = true; + o.placeholder = 65535; + o.datatype = 'uinteger'; + + o = ss.taboption('advanced', form.Flag, 'disassoc_low_ack', _('Disassociate On Low Acknowledgement'), _('Allow AP mode to disconnect STAs based on low ACK condition')); + o.default = o.enabled; + } + + + encr = o = ss.taboption('encryption', form.ListValue, 'encryption', _('Encryption')); + o.depends('mode', 'ap'); + o.depends('mode', 'sta'); + o.depends('mode', 'adhoc'); + o.depends('mode', 'ahdemo'); + o.depends('mode', 'ap-wds'); + o.depends('mode', 'sta-wds'); + o.depends('mode', 'mesh'); + + o.cfgvalue = function(section_id) { + var v = String(uci.get('wireless', section_id, 'encryption')); + if (v == 'wep') + return 'wep-open'; + else if (v.match(/\+/)) + return v.replace(/\+.+$/, ''); + return v; + }; + + o.write = function(section_id, value) { + var e = this.section.children.filter(function(o) { return o.option == 'encryption' })[0].formvalue(section_id), + co = this.section.children.filter(function(o) { return o.option == 'cipher' })[0], c = co.formvalue(section_id); + + if (value == 'wpa' || value == 'wpa2' || value == 'wpa3' || value == 'wpa3-mixed' || value == 'wpa3-192') + uci.unset('wireless', section_id, 'key'); + + if (co.isActive(section_id) && e && (c == 'tkip' || c == 'ccmp' || c == 'ccmp256' || c == 'gcmp' || c == 'gcmp256' || c == 'tkip+ccmp')) + e += '+' + c; + + uci.set('wireless', section_id, 'encryption', e); + }; + + o = ss.taboption('encryption', form.ListValue, 'cipher', _('Cipher')); + o.depends('encryption', 'wpa'); + o.depends('encryption', 'wpa2'); + o.depends('encryption', 'wpa3'); + o.depends('encryption', 'wpa3-mixed'); + o.depends('encryption', 'wpa3-192'); + o.depends('encryption', 'psk'); + o.depends('encryption', 'psk2'); + o.depends('encryption', 'wpa-mixed'); + o.depends('encryption', 'psk-mixed'); + o.value('auto', _('auto')); + o.value('ccmp', _('Force CCMP (AES)')); + o.value('ccmp256', _('Force CCMP-256 (AES)')); + o.value('gcmp', _('Force GCMP (AES)')); + o.value('gcmp256', _('Force GCMP-256 (AES)')); + o.value('tkip', _('Force TKIP')); + o.value('tkip+ccmp', _('Force TKIP and CCMP (AES)')); + o.write = ss.children.filter(function(o) { return o.option == 'encryption' })[0].write; + + o.cfgvalue = function(section_id) { + var v = String(uci.get('wireless', section_id, 'encryption')); + if (v.match(/\+/)) { + v = v.replace(/^[^+]+\+/, ''); + if (v == 'aes') + v = 'ccmp'; + else if (v == 'tkip+aes' || v == 'aes+tkip' || v == 'ccmp+tkip') + v = 'tkip+ccmp'; + } + return v; + }; + + + var crypto_modes = []; + + if (hwtype == 'mac80211') { + var has_supplicant = L.hasSystemFeature('wpasupplicant'), + has_hostapd = L.hasSystemFeature('hostapd'); + + // Probe EAP support + var has_ap_eap = L.hasSystemFeature('hostapd', 'eap'), + has_sta_eap = L.hasSystemFeature('wpasupplicant', 'eap'); + + // Probe SAE support + var has_ap_sae = L.hasSystemFeature('hostapd', 'sae'), + has_sta_sae = L.hasSystemFeature('wpasupplicant', 'sae'); + + // Probe OWE support + var has_ap_owe = L.hasSystemFeature('hostapd', 'owe'), + has_sta_owe = L.hasSystemFeature('wpasupplicant', 'owe'); + + // Probe Suite-B support + var has_ap_eap192 = L.hasSystemFeature('hostapd', 'suiteb192'), + has_sta_eap192 = L.hasSystemFeature('wpasupplicant', 'suiteb192'); + + // Probe WEP support + var has_ap_wep = L.hasSystemFeature('hostapd', 'wep'), + has_sta_wep = L.hasSystemFeature('wpasupplicant', 'wep'); + + if (has_hostapd || has_supplicant) { + crypto_modes.push(['psk2', 'WPA2-PSK', 35]); + crypto_modes.push(['psk-mixed', 'WPA-PSK/WPA2-PSK Mixed Mode', 22]); + crypto_modes.push(['psk', 'WPA-PSK', 12]); + } + else { + encr.description = _('WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP and ad-hoc mode) to be installed.'); + } + + if (has_ap_sae || has_sta_sae) { + crypto_modes.push(['sae', 'WPA3-SAE', 31]); + crypto_modes.push(['sae-mixed', 'WPA2-PSK/WPA3-SAE Mixed Mode', 30]); + } + + if (has_ap_wep || has_sta_wep) { + crypto_modes.push(['wep-open', _('WEP Open System'), 11]); + crypto_modes.push(['wep-shared', _('WEP Shared Key'), 10]); + } + + if (has_ap_eap || has_sta_eap) { + if (has_ap_eap192 || has_sta_eap192) { + crypto_modes.push(['wpa3', 'WPA3-EAP', 33]); + crypto_modes.push(['wpa3-mixed', 'WPA2-EAP/WPA3-EAP Mixed Mode', 32]); + crypto_modes.push(['wpa3-192', 'WPA3-EAP 192-bit Mode', 36]); + } + + crypto_modes.push(['wpa2', 'WPA2-EAP', 34]); + crypto_modes.push(['wpa', 'WPA-EAP', 20]); + } + + if (has_ap_owe || has_sta_owe) { + crypto_modes.push(['owe', 'OWE', 1]); + } + + encr.crypto_support = { + 'ap': { + 'wep-open': has_ap_wep || _('Requires hostapd with WEP support'), + 'wep-shared': has_ap_wep || _('Requires hostapd with WEP support'), + 'psk': has_hostapd || _('Requires hostapd'), + 'psk2': has_hostapd || _('Requires hostapd'), + 'psk-mixed': has_hostapd || _('Requires hostapd'), + 'sae': has_ap_sae || _('Requires hostapd with SAE support'), + 'sae-mixed': has_ap_sae || _('Requires hostapd with SAE support'), + 'wpa': has_ap_eap || _('Requires hostapd with EAP support'), + 'wpa2': has_ap_eap || _('Requires hostapd with EAP support'), + 'wpa3': has_ap_eap192 || _('Requires hostapd with EAP Suite-B support'), + 'wpa3-mixed': has_ap_eap192 || _('Requires hostapd with EAP Suite-B support'), + 'wpa3-192': has_ap_eap192 || _('Requires hostapd with EAP Suite-B support'), + 'owe': has_ap_owe || _('Requires hostapd with OWE support') + }, + 'sta': { + 'wep-open': has_sta_wep || _('Requires wpa-supplicant with WEP support'), + 'wep-shared': has_sta_wep || _('Requires wpa-supplicant with WEP support'), + 'psk': has_supplicant || _('Requires wpa-supplicant'), + 'psk2': has_supplicant || _('Requires wpa-supplicant'), + 'psk-mixed': has_supplicant || _('Requires wpa-supplicant'), + 'sae': has_sta_sae || _('Requires wpa-supplicant with SAE support'), + 'sae-mixed': has_sta_sae || _('Requires wpa-supplicant with SAE support'), + 'wpa': has_sta_eap || _('Requires wpa-supplicant with EAP support'), + 'wpa2': has_sta_eap || _('Requires wpa-supplicant with EAP support'), + 'wpa3': has_sta_eap192 || _('Requires wpa-supplicant with EAP Suite-B support'), + 'wpa3-mixed': has_sta_eap192 || _('Requires wpa-supplicant with EAP Suite-B support'), + 'wpa3-192': has_sta_eap192 || _('Requires wpa-supplicant with EAP Suite-B support'), + 'owe': has_sta_owe || _('Requires wpa-supplicant with OWE support') + }, + 'adhoc': { + 'wep-open': true, + 'wep-shared': true, + 'psk': has_supplicant || _('Requires wpa-supplicant'), + 'psk2': has_supplicant || _('Requires wpa-supplicant'), + 'psk-mixed': has_supplicant || _('Requires wpa-supplicant'), + }, + 'mesh': { + 'sae': has_sta_sae || _('Requires wpa-supplicant with SAE support') + }, + 'ahdemo': { + 'wep-open': true, + 'wep-shared': true + }, + 'wds': { + 'wep-open': true, + 'wep-shared': true + } + }; + + encr.crypto_support['ap-wds'] = encr.crypto_support['ap']; + encr.crypto_support['sta-wds'] = encr.crypto_support['sta']; + + encr.validate = function(section_id, value) { + var modeopt = this.section.children.filter(function(o) { return o.option == 'mode' })[0], + modeval = modeopt.formvalue(section_id), + modetitle = modeopt.vallist[modeopt.keylist.indexOf(modeval)], + enctitle = this.vallist[this.keylist.indexOf(value)]; + + if (value == 'none') + return true; + + if (!L.isObject(this.crypto_support[modeval]) || !this.crypto_support[modeval].hasOwnProperty(value)) + return _('The selected %s mode is incompatible with %s encryption').format(modetitle, enctitle); + + return this.crypto_support[modeval][value]; + }; + } + else if (hwtype == 'broadcom') { + crypto_modes.push(['psk2', 'WPA2-PSK', 33]); + crypto_modes.push(['psk+psk2', 'WPA-PSK/WPA2-PSK Mixed Mode', 22]); + crypto_modes.push(['psk', 'WPA-PSK', 12]); + crypto_modes.push(['wep-open', _('WEP Open System'), 11]); + crypto_modes.push(['wep-shared', _('WEP Shared Key'), 10]); + } + + crypto_modes.push(['none', _('No Encryption'), 0]); + + crypto_modes.sort(function(a, b) { return b[2] - a[2] }); + + for (var i = 0; i < crypto_modes.length; i++) { + var security_level = (crypto_modes[i][2] >= 30) ? _('strong security') + : (crypto_modes[i][2] >= 20) ? _('medium security') + : (crypto_modes[i][2] >= 10) ? _('weak security') : _('open network'); + + encr.value(crypto_modes[i][0], '%s (%s)'.format(crypto_modes[i][1], security_level)); + } + + + o = ss.taboption('encryption', form.Flag, 'ppsk', _('Enable Private PSK (PPSK)'), _('Private Pre-Shared Key (PPSK) allows the use of different Pre-Shared Key for each STA MAC address. Private MAC PSKs are stored on the RADIUS server.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'] }); + + o = ss.taboption('encryption', form.Value, 'auth_server', _('RADIUS Authentication Server')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + o.rmempty = true; + o.datatype = 'host(0)'; + + o = ss.taboption('encryption', form.Value, 'auth_port', _('RADIUS Authentication Port')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + o.rmempty = true; + o.datatype = 'port'; + o.placeholder = '1812'; + + o = ss.taboption('encryption', form.Value, 'auth_secret', _('RADIUS Authentication Secret')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + o.rmempty = true; + o.password = true; + + o = ss.taboption('encryption', form.Value, 'acct_server', _('RADIUS Accounting Server')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.rmempty = true; + o.datatype = 'host(0)'; + + o = ss.taboption('encryption', form.Value, 'acct_port', _('RADIUS Accounting Port')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.rmempty = true; + o.datatype = 'port'; + o.placeholder = '1813'; + + o = ss.taboption('encryption', form.Value, 'acct_secret', _('RADIUS Accounting Secret')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.rmempty = true; + o.password = true; + + /* extra RADIUS settings start */ + var attr_validate = function(section_id, value) { + if (!value) + return true; + + if (!/^[0-9]+(:s:.+|:d:[0-9]+|:x:([0-9a-zA-Z]{2})+)?$/.test(value) ) + return _('Must be in %s format.').format('[:]'); + + return true; + }; + + var req_attr_syntax = _('Format:') + '<attr_id>[:<syntax:value>]' + '
    ' + + 'syntax: s = %s; '.format(_('string (UTF-8)')) + 'd = %s; '.format(_('integer')) + 'x = %s'.format(_('octet string')) + + /* https://w1.fi/cgit/hostap/commit/?id=af35e7af7f8bb1ca9f0905b4074fb56a264aa12b */ + o = ss.taboption('encryption', form.DynamicList, 'radius_auth_req_attr', _('RADIUS Access-Request attributes'), + _('Attributes to add/replace in each request.') + '
    ' + req_attr_syntax ); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.rmempty = true; + o.validate = attr_validate; + o.placeholder = '126:s:Operator'; + + o = ss.taboption('encryption', form.DynamicList, 'radius_acct_req_attr', _('RADIUS Accounting-Request attributes'), + _('Attributes to add/replace in each request.') + '
    ' + req_attr_syntax ); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.rmempty = true; + o.validate = attr_validate; + o.placeholder = '77:x:74657374696e67'; + + o = ss.taboption('encryption', form.ListValue, 'dynamic_vlan', _('RADIUS Dynamic VLAN Assignment'), _('Required: Rejects auth if RADIUS server does not provide appropriate VLAN attributes.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + o.value('0', _('Disabled')); + o.value('1', _('Optional')); + o.value('2', _('Required')); + o.write = function (section_id, value) { + return this.super('write', [section_id, (value == 0) ? null: value]); + } + + o = ss.taboption('encryption', form.Flag, 'per_sta_vif', _('RADIUS Per STA VLAN'), _('Each STA is assigned its own AP_VLAN interface.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + + //hostapd internally defaults to vlan_naming=1 even with dynamic VLAN off + o = ss.taboption('encryption', form.Flag, 'vlan_naming', _('RADIUS VLAN Naming'), _('Off: vlanXXX, e.g., vlan1. On: vlan_tagged_interface.XXX, e.g. eth0.1.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + + o = ss.taboption('encryption', widgets.DeviceSelect, 'vlan_tagged_interface', _('RADIUS VLAN Tagged Interface'), _('E.g. eth0, eth1')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + o.size = 1; + o.rmempty = true; + o.multiple = false; + o.noaliases = true; + o.nocreate = true; + o.noinactive = true; + + o = ss.taboption('encryption', form.Value, 'vlan_bridge', _('RADIUS VLAN Bridge Naming Scheme'), _('E.g. br-vlan or brvlan.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['1'] }); + o.rmempty = true; + + /* extra RADIUS settings end */ + + o = ss.taboption('encryption', form.Value, 'dae_client', _('DAE-Client'), _('Dynamic Authorization Extension client.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.rmempty = true; + o.datatype = 'host(0)'; + + o = ss.taboption('encryption', form.Value, 'dae_port', _('DAE-Port'), _('Dynamic Authorization Extension port.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.rmempty = true; + o.datatype = 'port'; + o.placeholder = '3799'; + + o = ss.taboption('encryption', form.Value, 'dae_secret', _('DAE-Secret'), _('Dynamic Authorization Extension secret.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.rmempty = true; + o.password = true; + + //WPA(1) has only WPA IE. Only >= WPA2 has RSN IE Preauth frames. + o = ss.taboption('encryption', form.Flag, 'rsn_preauth', _('RSN Preauth'), _('Robust Security Network (RSN): Allow roaming preauth for WPA2-EAP networks (and advertise it in WLAN beacons). Only works if the specified network interface is a bridge. Shortens the time-critical reassociation process.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa2', 'wpa3', 'wpa3-mixed'] }); + + + o = ss.taboption('encryption', form.Value, '_wpa_key', _('Key')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'], ppsk: ['0'] }); + add_dependency_permutations(o, { mode: ['sta', 'adhoc', 'mesh', 'sta-wds'], encryption: ['psk', 'psk2', 'psk+psk2', 'psk-mixed'] }); + o.depends('encryption', 'sae'); + o.depends('encryption', 'sae-mixed'); + o.datatype = 'wpakey'; + o.rmempty = true; + o.password = true; + + o.cfgvalue = function(section_id) { + var key = uci.get('wireless', section_id, 'key'); + return /^[1234]$/.test(key) ? null : key; + }; + + o.write = function(section_id, value) { + uci.set('wireless', section_id, 'key', value); + uci.unset('wireless', section_id, 'key1'); + uci.unset('wireless', section_id, 'key2'); + uci.unset('wireless', section_id, 'key3'); + uci.unset('wireless', section_id, 'key4'); + }; + + + o = ss.taboption('encryption', form.ListValue, '_wep_key', _('Used Key Slot')); + o.depends('encryption', 'wep-open'); + o.depends('encryption', 'wep-shared'); + o.value('1', _('Key #%d').format(1)); + o.value('2', _('Key #%d').format(2)); + o.value('3', _('Key #%d').format(3)); + o.value('4', _('Key #%d').format(4)); + + o.cfgvalue = function(section_id) { + var slot = +uci.get('wireless', section_id, 'key'); + return (slot >= 1 && slot <= 4) ? String(slot) : ''; + }; + + o.write = function(section_id, value) { + uci.set('wireless', section_id, 'key', value); + }; + + for (var slot = 1; slot <= 4; slot++) { + o = ss.taboption('encryption', form.Value, 'key%d'.format(slot), _('Key #%d').format(slot)); + o.depends('encryption', 'wep-open'); + o.depends('encryption', 'wep-shared'); + o.datatype = 'wepkey'; + o.rmempty = true; + o.password = true; + + o.write = function(section_id, value) { + if (value != null && (value.length == 5 || value.length == 13)) + value = 's:%s'.format(value); + uci.set('wireless', section_id, this.option, value); + }; + } + + + if (hwtype == 'mac80211') { + // Probe 802.11r support (and EAP support as a proxy for Openwrt) + var has_80211r = L.hasSystemFeature('hostapd', '11r') || L.hasSystemFeature('hostapd', 'eap'); + + o = ss.taboption('roaming', form.Flag, 'ieee80211r', _('802.11r Fast Transition'), _('Enables fast roaming among access points that belong to the same Mobility Domain')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa2', 'wpa3', 'wpa3-mixed', , 'wpa3-192'] }); + if (has_80211r) + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk2', 'psk-mixed', 'sae', 'sae-mixed'] }); + o.rmempty = true; + + o = ss.taboption('roaming', form.Value, 'nasid', _('NAS ID'), _('Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not needed with normal WPA(2)-PSK.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.depends({ ieee80211r: '1' }); + o.rmempty = true; + + o = ss.taboption('roaming', form.Value, 'mobility_domain', _('Mobility Domain'), _('4-character hexadecimal ID')); + o.depends({ ieee80211r: '1' }); + o.placeholder = '4f57'; + o.datatype = 'and(hexstring,length(4))'; + o.rmempty = true; + + o = ss.taboption('roaming', form.Value, 'reassociation_deadline', _('Reassociation Deadline'), _('time units (TUs / 1.024 ms) [1000-65535]')); + o.depends({ ieee80211r: '1' }); + o.placeholder = '1000'; + o.datatype = 'range(1000,65535)'; + o.rmempty = true; + + o = ss.taboption('roaming', form.ListValue, 'ft_over_ds', _('FT protocol')); + o.depends({ ieee80211r: '1' }); + o.value('0', _('FT over the Air')); + o.value('1', _('FT over DS')); + o.rmempty = true; + + o = ss.taboption('roaming', form.Flag, 'ft_psk_generate_local', _('Generate PMK locally'), _('When using a PSK, the PMK can be automatically generated. When enabled, the R0/R1 key options below are not applied. Disable this to use the R0 and R1 key options.')); + add_dependency_permutations(o, { ieee80211r: ['1'], mode: ['ap', 'ap-wds'], encryption: ['psk2', 'psk-mixed'] }); + o.default = o.enabled; + o.rmempty = false; + + o = ss.taboption('roaming', form.Value, 'r0_key_lifetime', _('R0 Key Lifetime'), _('minutes')); + o.depends({ ieee80211r: '1' }); + o.placeholder = '10000'; + o.datatype = 'uinteger'; + o.rmempty = true; + + o = ss.taboption('roaming', form.Value, 'r1_key_holder', _('R1 Key Holder'), _('6-octet identifier as a hex string - no colons')); + o.depends({ ieee80211r: '1' }); + o.placeholder = '00004f577274'; + o.datatype = 'and(hexstring,length(12))'; + o.rmempty = true; + + o = ss.taboption('roaming', form.Flag, 'pmk_r1_push', _('PMK R1 Push')); + o.depends({ ieee80211r: '1' }); + o.placeholder = '0'; + o.rmempty = true; + + o = ss.taboption('roaming', form.DynamicList, 'r0kh', _('External R0 Key Holder List'), _('List of R0KHs in the same Mobility Domain.
    Format: MAC-address,NAS-Identifier,256-bit key as hex string.
    This list is used to map R0KH-ID (NAS Identifier) to a destination MAC address when requesting PMK-R1 key from the R0KH that the STA used during the Initial Mobility Domain Association.')); + o.depends({ ieee80211r: '1' }); + o.rmempty = true; + + o = ss.taboption('roaming', form.DynamicList, 'r1kh', _('External R1 Key Holder List'), _ ('List of R1KHs in the same Mobility Domain.
    Format: MAC-address,R1KH-ID as 6 octets with colons,256-bit key as hex string.
    This list is used to map R1KH-ID to a destination MAC address when sending PMK-R1 key from the R0KH. This is also the list of authorized R1KHs in the MD that can request PMK-R1 keys.')); + o.depends({ ieee80211r: '1' }); + o.rmempty = true; + // End of 802.11r options + + // Probe 802.11k and 802.11v support via EAP support (full hostapd has EAP) + if (L.hasSystemFeature('hostapd', 'eap')) { + /* 802.11k settings start */ + o = ss.taboption('roaming', form.Flag, 'ieee80211k', _('802.11k RRM'), _('Radio Resource Measurement - Sends beacons to assist roaming. Not all clients support this.')); + // add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk', 'psk2', 'psk-mixed', 'sae', 'sae-mixed'] }); + o.depends('mode', 'ap'); + o.depends('mode', 'ap-wds'); + + o = ss.taboption('roaming', form.Flag, 'rrm_neighbor_report', _('Neighbour Report'), _('802.11k: Enable neighbor report via radio measurements.')); + o.depends({ ieee80211k: '1' }); + o.default = o.enabled; + + o = ss.taboption('roaming', form.Flag, 'rrm_beacon_report', _('Beacon Report'), _('802.11k: Enable beacon report via radio measurements.')); + o.depends({ ieee80211k: '1' }); + o.default = o.enabled; + /* 802.11k settings end */ + + /* 802.11v settings start */ + o = ss.taboption('roaming', form.ListValue, 'time_advertisement', _('Time advertisement'), _('802.11v: Time Advertisement in management frames.')); + o.value('0', _('Disabled')); + o.value('2', _('Enabled')); + o.write = function (section_id, value) { + return this.super('write', [section_id, (value == 2) ? value: null]); + } + + //Pull current System TZ setting + var tz = uci.get('system', '@system[0]', 'timezone'); + o = ss.taboption('roaming', form.Value, 'time_zone', _('Time zone'), _('802.11v: Local Time Zone Advertisement in management frames.')); + o.value(tz); + o.rmempty = true; + + o = ss.taboption('roaming', form.Flag, 'wnm_sleep_mode', _('WNM Sleep Mode'), _('802.11v: Wireless Network Management (WNM) Sleep Mode (extended sleep mode for stations).')); + o.rmempty = true; + + /* wnm_sleep_mode_no_keys: https://git.openwrt.org/?p=openwrt/openwrt.git;a=commitdiff;h=bf98faaac8ed24cf7d3d93dd4fcd7304d109363b */ + o = ss.taboption('roaming', form.Flag, 'wnm_sleep_mode_no_keys', _('WNM Sleep Mode Fixes'), _('802.11v: Wireless Network Management (WNM) Sleep Mode Fixes: Prevents reinstallation attacks.')); + o.rmempty = true; + + o = ss.taboption('roaming', form.Flag, 'bss_transition', _('BSS Transition'), _('802.11v: Basic Service Set (BSS) transition management.')); + o.rmempty = true; + + /* in master, but not 21.02.1: proxy_arp */ + o = ss.taboption('roaming', form.Flag, 'proxy_arp', _('ProxyARP'), _('802.11v: Proxy ARP enables non-AP STA to remain in power-save for longer.')); + o.rmempty = true; + + /* TODO: na_mcast_to_ucast is missing: needs adding to hostapd.sh - nice to have */ + } + /* 802.11v settings end */ + } + + if (hwtype == 'mac80211') { + o = ss.taboption('encryption', form.ListValue, 'eap_type', _('EAP-Method')); + o.value('tls', 'TLS'); + o.value('ttls', 'TTLS'); + o.value('peap', 'PEAP'); + o.value('fast', 'FAST'); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + + o = ss.taboption('encryption', form.Flag, 'ca_cert_usesystem', _('Use system certificates'), _("Validate server certificate using built-in system CA bundle,
    requires the \"ca-bundle\" package")); + o.enabled = '1'; + o.disabled = '0'; + o.default = o.disabled; + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + o.validate = function(section_id, value) { + if (value == '1' && !L.hasSystemFeature('cabundle')) { + return _("This option cannot be used because the ca-bundle package is not installed."); + } + return true; + }; + + o = ss.taboption('encryption', form.FileUpload, 'ca_cert', _('Path to CA-Certificate')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], ca_cert_usesystem: ['0'] }); + + o = ss.taboption('encryption', form.Value, 'subject_match', _('Certificate constraint (Subject)'), _("Certificate constraint substring - e.g. /CN=wifi.mycompany.com
    See `logread -f` during handshake for actual values")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + + o = ss.taboption('encryption', form.DynamicList, 'altsubject_match', _('Certificate constraint (SAN)'), _("Certificate constraint(s) via Subject Alternate Name values
    (supported attributes: EMAIL, DNS, URI) - e.g. DNS:wifi.mycompany.com")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + + o = ss.taboption('encryption', form.DynamicList, 'domain_match', _('Certificate constraint (Domain)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (exact match)")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + + o = ss.taboption('encryption', form.DynamicList, 'domain_suffix_match', _('Certificate constraint (Wildcard)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (suffix match)")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'] }); + + o = ss.taboption('encryption', form.FileUpload, 'client_cert', _('Path to Client-Certificate')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['tls'] }); + + o = ss.taboption('encryption', form.FileUpload, 'priv_key', _('Path to Private Key')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['tls'] }); + + o = ss.taboption('encryption', form.Value, 'priv_key_pwd', _('Password of Private Key')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['tls'] }); + o.password = true; + + o = ss.taboption('encryption', form.ListValue, 'auth', _('Authentication')); + o.value('PAP', 'PAP'); + o.value('CHAP', 'CHAP'); + o.value('MSCHAP', 'MSCHAP'); + o.value('MSCHAPV2', 'MSCHAPv2'); + o.value('EAP-GTC', 'EAP-GTC'); + o.value('EAP-MD5', 'EAP-MD5'); + o.value('EAP-MSCHAPV2', 'EAP-MSCHAPv2'); + o.value('EAP-TLS', 'EAP-TLS'); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['fast', 'peap', 'ttls'] }); + + o.validate = function(section_id, value) { + var eo = this.section.children.filter(function(o) { return o.option == 'eap_type' })[0], + ev = eo.formvalue(section_id); + + if (ev != 'ttls' && (value == 'PAP' || value == 'CHAP' || value == 'MSCHAP' || value == 'MSCHAPV2')) + return _('This authentication type is not applicable to the selected EAP method.'); + + return true; + }; + + o = ss.taboption('encryption', form.Flag, 'ca_cert2_usesystem', _('Use system certificates for inner-tunnel'), _("Validate server certificate using built-in system CA bundle,
    requires the \"ca-bundle\" package")); + o.enabled = '1'; + o.disabled = '0'; + o.default = o.disabled; + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); + o.validate = function(section_id, value) { + if (value == '1' && !L.hasSystemFeature('cabundle')) { + return _("This option cannot be used because the ca-bundle package is not installed."); + } + return true; + }; + + o = ss.taboption('encryption', form.FileUpload, 'ca_cert2', _('Path to inner CA-Certificate')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'], ca_cert2_usesystem: ['0'] }); + + o = ss.taboption('encryption', form.Value, 'subject_match2', _('Inner certificate constraint (Subject)'), _("Certificate constraint substring - e.g. /CN=wifi.mycompany.com
    See `logread -f` during handshake for actual values")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.DynamicList, 'altsubject_match2', _('Inner certificate constraint (SAN)'), _("Certificate constraint(s) via Subject Alternate Name values
    (supported attributes: EMAIL, DNS, URI) - e.g. DNS:wifi.mycompany.com")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.DynamicList, 'domain_match2', _('Inner certificate constraint (Domain)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (exact match)")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.DynamicList, 'domain_suffix_match2', _('Inner certificate constraint (Wildcard)'), _("Certificate constraint(s) against DNS SAN values (if available)
    or Subject CN (suffix match)")); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.FileUpload, 'client_cert2', _('Path to inner Client-Certificate')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.FileUpload, 'priv_key2', _('Path to inner Private Key')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); + + o = ss.taboption('encryption', form.Value, 'priv_key2_pwd', _('Password of inner Private Key')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], auth: ['EAP-TLS'] }); + o.password = true; + + o = ss.taboption('encryption', form.Value, 'identity', _('Identity')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['fast', 'peap', 'tls', 'ttls'] }); + + o = ss.taboption('encryption', form.Value, 'anonymous_identity', _('Anonymous Identity')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['fast', 'peap', 'tls', 'ttls'] }); + + o = ss.taboption('encryption', form.Value, 'password', _('Password')); + add_dependency_permutations(o, { mode: ['sta', 'sta-wds'], encryption: ['wpa', 'wpa2', 'wpa3', 'wpa3-mixed', 'wpa3-192'], eap_type: ['fast', 'peap', 'ttls'] }); + o.password = true; + + + if (hwtype == 'mac80211') { + // ieee802.11w options + o = ss.taboption('encryption', form.ListValue, 'ieee80211w', _('802.11w Management Frame Protection'), _("Note: Some wireless drivers do not fully support 802.11w. E.g. mwlwifi may have problems")); + o.value('0', _('Disabled')); + o.value('1', _('Optional')); + o.value('2', _('Required')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds', 'sta', 'sta-wds'], encryption: ['owe', 'psk2', 'psk-mixed', 'sae', 'sae-mixed', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + + o.defaults = { + '2': [{ encryption: 'sae' }, { encryption: 'owe' }, { encryption: 'wpa3' }, { encryption: 'wpa3-mixed' }], + '1': [{ encryption: 'sae-mixed'}], + '0': [] + }; + + o.write = function(section_id, value) { + if (value != this.default) + return form.ListValue.prototype.write.call(this, section_id, value); + else + return form.ListValue.prototype.remove.call(this, section_id); + }; + + o = ss.taboption('encryption', form.Value, 'ieee80211w_max_timeout', _('802.11w maximum timeout'), _('802.11w Association SA Query maximum timeout')); + o.depends('ieee80211w', '1'); + o.depends('ieee80211w', '2'); + o.datatype = 'uinteger'; + o.placeholder = '1000'; + o.rmempty = true; + + o = ss.taboption('encryption', form.Value, 'ieee80211w_retry_timeout', _('802.11w retry timeout'), _('802.11w Association SA Query retry timeout')); + o.depends('ieee80211w', '1'); + o.depends('ieee80211w', '2'); + o.datatype = 'uinteger'; + o.placeholder = '201'; + o.rmempty = true; + + if (L.hasSystemFeature('hostapd', 'ocv') || L.hasSystemFeature('wpasupplicant', 'ocv')) { + o = ss.taboption('encryption', form.ListValue, 'ocv', _('Operating Channel Validation'), _("Note: Workaround mode allows a STA that claims OCV capability to connect even if the STA doesn't send OCI or negotiate PMF.")); + o.value('0', _('Disabled')); + o.value('1', _('Enabled')); + o.value('2', _('Enabled (workaround mode)')); + o.default = '0'; + o.depends('ieee80211w', '1'); + o.depends('ieee80211w', '2'); + + o.validate = function(section_id, value) { + var modeopt = this.section.children.filter(function(o) { return o.option == 'mode' })[0], + modeval = modeopt.formvalue(section_id); + + if ((value == '2') && ((modeval == 'sta') || (modeval == 'sta-wds'))) { + return _('Workaround mode can only be used when acting as an access point.'); + } + + return true; + } + } + + o = ss.taboption('encryption', form.Flag, 'wpa_disable_eapol_key_retries', _('Enable key reinstallation (KRACK) countermeasures'), _('Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load.')); + add_dependency_permutations(o, { mode: ['ap', 'ap-wds'], encryption: ['psk2', 'psk-mixed', 'sae', 'sae-mixed', 'wpa2', 'wpa3', 'wpa3-mixed'] }); + + if (L.hasSystemFeature('hostapd', 'wps') && L.hasSystemFeature('wpasupplicant')) { + o = ss.taboption('encryption', form.Flag, 'wps_pushbutton', _('Enable WPS pushbutton, requires WPA(2)-PSK/WPA3-SAE')) + o.enabled = '1'; + o.disabled = '0'; + o.default = o.disabled; + o.depends('encryption', 'psk'); + o.depends('encryption', 'psk2'); + o.depends('encryption', 'psk-mixed'); + o.depends('encryption', 'sae'); + o.depends('encryption', 'sae-mixed'); + } + } + } + }); + }; + + s.handleRemove = function(section_id, ev) { + document.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(section_id)).style.opacity = 0.5; + return form.TypedSection.prototype.handleRemove.apply(this, [section_id, ev]); + }; + + s.handleScan = function(radioDev, ev) { + var table = E('table', { 'class': 'table' }, [ + E('tr', { 'class': 'tr table-titles' }, [ + E('th', { 'class': 'th col-2 middle center' }, _('Signal')), + E('th', { 'class': 'th col-4 middle left' }, _('SSID')), + E('th', { 'class': 'th col-2 middle center hide-xs' }, _('Channel')), + E('th', { 'class': 'th col-2 middle left hide-xs' }, _('Mode')), + E('th', { 'class': 'th col-3 middle left hide-xs' }, _('BSSID')), + E('th', { 'class': 'th col-3 middle left' }, _('Encryption')), + E('th', { 'class': 'th cbi-section-actions right' }, ' '), + ]) + ]); + + var stop = E('button', { + 'class': 'btn', + 'click': L.bind(this.handleScanStartStop, this), + 'style': 'display:none', + 'data-state': 'stop' + }, _('Stop refresh')); + + cbi_update_table(table, [], E('em', { class: 'spinning' }, _('Starting wireless scan...'))); + + var md = ui.showModal(_('Join Network: Wireless Scan'), [ + table, + E('div', { 'class': 'right' }, [ + stop, + ' ', + E('button', { + 'class': 'btn', + 'click': L.bind(this.handleScanAbort, this) + }, _('Dismiss')) + ]) + ]); + + md.style.maxWidth = '90%'; + md.style.maxHeight = 'none'; + + this.pollFn = L.bind(this.handleScanRefresh, this, radioDev, {}, table, stop); + + poll.add(this.pollFn); + poll.start(); + }; + + s.handleScanRefresh = function(radioDev, scanCache, table, stop) { + return radioDev.getScanList().then(L.bind(function(results) { + var rows = []; + + for (var i = 0; i < results.length; i++) + scanCache[results[i].bssid] = results[i]; + + for (var k in scanCache) + if (scanCache[k].stale) + results.push(scanCache[k]); + + results.sort(function(a, b) { + var diff = (b.quality - a.quality) || (a.channel - b.channel); + + if (diff) + return diff; + + if (a.ssid < b.ssid) + return -1; + else if (a.ssid > b.ssid) + return 1; + + if (a.bssid < b.bssid) + return -1; + else if (a.bssid > b.bssid) + return 1; + }); + + for (var i = 0; i < results.length; i++) { + var res = results[i], + qv = res.quality || 0, + qm = res.quality_max || 0, + q = (qv > 0 && qm > 0) ? Math.floor((100 / qm) * qv) : 0, + s = res.stale ? 'opacity:0.5' : ''; + + rows.push([ + E('span', { 'style': s }, render_signal_badge(q, res.signal, res.noise)), + E('span', { 'style': s }, (res.ssid != null) ? '%h'.format(res.ssid) : E('em', _('hidden'))), + E('span', { 'style': s }, '%d'.format(res.channel)), + E('span', { 'style': s }, '%h'.format(res.mode)), + E('span', { 'style': s }, '%h'.format(res.bssid)), + E('span', { 'style': s }, '%h'.format(network.formatWifiEncryption(res.encryption))), + E('div', { 'class': 'right' }, E('button', { + 'class': 'cbi-button cbi-button-action important', + 'click': ui.createHandlerFn(this, 'handleJoin', radioDev, res) + }, _('Join Network'))) + ]); + + res.stale = true; + } + + cbi_update_table(table, rows); + + stop.disabled = false; + stop.style.display = ''; + stop.classList.remove('spinning'); + }, this)); + }; + + s.handleScanStartStop = function(ev) { + var btn = ev.currentTarget; + + if (btn.getAttribute('data-state') == 'stop') { + poll.remove(this.pollFn); + btn.firstChild.data = _('Start refresh'); + btn.setAttribute('data-state', 'start'); + } + else { + poll.add(this.pollFn); + btn.firstChild.data = _('Stop refresh'); + btn.setAttribute('data-state', 'stop'); + btn.classList.add('spinning'); + btn.disabled = true; + } + }; + + s.handleScanAbort = function(ev) { + var md = dom.parent(ev.target, 'div[aria-modal="true"]'); + if (md) { + md.style.maxWidth = ''; + md.style.maxHeight = ''; + } + + ui.hideModal(); + poll.remove(this.pollFn); + + this.pollFn = null; + }; + + s.handleJoinConfirm = function(radioDev, bss, form, ev) { + var nameopt = L.toArray(form.lookupOption('name', '_new_'))[0], + passopt = L.toArray(form.lookupOption('password', '_new_'))[0], + ssidopt = L.toArray(form.lookupOption('ssid', '_new_'))[0], + bssidopt = L.toArray(form.lookupOption('bssid', '_new_'))[0], + zoneopt = L.toArray(form.lookupOption('zone', '_new_'))[0], + replopt = L.toArray(form.lookupOption('replace', '_new_'))[0], + nameval = (nameopt && nameopt.isValid('_new_')) ? nameopt.formvalue('_new_') : null, + passval = (passopt && passopt.isValid('_new_')) ? passopt.formvalue('_new_') : null, + ssidval = (ssidopt && ssidopt.isValid('_new_')) ? ssidopt.formvalue('_new_') : null, + bssidval = (bssidopt && bssidopt.isValid('_new_')) ? bssidopt.formvalue('_new_') : null, + zoneval = zoneopt ? zoneopt.formvalue('_new_') : null, + enc = L.isObject(bss.encryption) ? bss.encryption : null, + is_wep = (enc && Array.isArray(enc.wep)), + is_psk = (enc && Array.isArray(enc.wpa) && L.toArray(enc.authentication).filter(function(a) { return a == 'psk' }).length > 0), + is_sae = (enc && Array.isArray(enc.wpa) && L.toArray(enc.authentication).filter(function(a) { return a == 'sae' }).length > 0); + + if (nameval == null || (passopt && passval == null)) + return; + + var section_id = null; + + return this.map.save(function() { + var wifi_sections = uci.sections('wireless', 'wifi-iface'); + + if (replopt.formvalue('_new_') == '1') { + for (var i = 0; i < wifi_sections.length; i++) + if (wifi_sections[i].device == radioDev.getName()) + uci.remove('wireless', wifi_sections[i]['.name']); + } + + if (uci.get('wireless', radioDev.getName(), 'disabled') == '1') { + for (var i = 0; i < wifi_sections.length; i++) + if (wifi_sections[i].device == radioDev.getName()) + uci.set('wireless', wifi_sections[i]['.name'], 'disabled', '1'); + + uci.unset('wireless', radioDev.getName(), 'disabled'); + } + + var htmodes = radioDev.getHTModes(); + + if (bss.vht_operation && htmodes && htmodes.indexOf('VHT20') !== -1) { + for (var w = bss.vht_operation.channel_width; w >= 20; w /= 2) { + if (htmodes.indexOf('VHT'+w) !== -1) { + uci.set('wireless', radioDev.getName(), 'htmode', 'VHT'+w); + break; + } + } + } + else if (bss.ht_operation && htmodes && htmodes.indexOf('HT20') !== -1) { + var w = (bss.ht_operation.secondary_channel_offset == 'no secondary') ? 20 : 40; + uci.set('wireless', radioDev.getName(), 'htmode', 'HT'+w); + } + else { + uci.remove('wireless', radioDev.getName(), 'htmode'); + } + + uci.set('wireless', radioDev.getName(), 'channel', bss.channel); + + section_id = next_free_sid(wifi_sections.length); + + uci.add('wireless', 'wifi-iface', section_id); + uci.set('wireless', section_id, 'device', radioDev.getName()); + uci.set('wireless', section_id, 'mode', (bss.mode == 'Ad-Hoc') ? 'adhoc' : 'sta'); + uci.set('wireless', section_id, 'network', nameval); + + if (bss.ssid != null) { + uci.set('wireless', section_id, 'ssid', bss.ssid); + + if (bssidval == '1') + uci.set('wireless', section_id, 'bssid', bss.bssid); + } + else if (bss.bssid != null) { + uci.set('wireless', section_id, 'bssid', bss.bssid); + } + + if (ssidval != null) + uci.set('wireless', section_id, 'ssid', ssidval); + + if (is_sae) { + uci.set('wireless', section_id, 'encryption', 'sae'); + uci.set('wireless', section_id, 'key', passval); + } + else if (is_psk) { + for (var i = enc.wpa.length - 1; i >= 0; i--) { + if (enc.wpa[i] == 2) { + uci.set('wireless', section_id, 'encryption', 'psk2'); + break; + } + else if (enc.wpa[i] == 1) { + uci.set('wireless', section_id, 'encryption', 'psk'); + break; + } + } + + uci.set('wireless', section_id, 'key', passval); + } + else if (is_wep) { + uci.set('wireless', section_id, 'encryption', 'wep-open'); + uci.set('wireless', section_id, 'key', '1'); + uci.set('wireless', section_id, 'key1', passval); + } + else { + uci.set('wireless', section_id, 'encryption', 'none'); + } + + return network.addNetwork(nameval, { proto: 'dhcp' }).then(function(net) { + firewall.deleteNetwork(net.getName()); + + var zonePromise = zoneval + ? firewall.getZone(zoneval).then(function(zone) { return zone || firewall.addZone(zoneval) }) + : Promise.resolve(); + + return zonePromise.then(function(zone) { + if (zone) + zone.addNetwork(net.getName()); + }); + }); + }).then(L.bind(function() { + ui.showModal(null, E('p', { 'class': 'spinning' }, [ _('Loading data…') ])); + + return this.renderMoreOptionsModal(section_id); + }, this)); + }; + + s.handleJoin = function(radioDev, bss, ev) { + poll.remove(this.pollFn); + + var m2 = new form.Map('wireless'), + s2 = m2.section(form.NamedSection, '_new_'), + enc = L.isObject(bss.encryption) ? bss.encryption : null, + is_wep = (enc && Array.isArray(enc.wep)), + is_psk = (enc && Array.isArray(enc.wpa) && L.toArray(enc.authentication).filter(function(a) { return a == 'psk' || a == 'sae' })), + replace, passphrase, name, bssid, zone; + + var nameUsed = function(name) { + var s = uci.get('network', name); + if (s != null && s['.type'] != 'interface') + return true; + + var net = (s != null) ? network.instantiateNetwork(name) : null; + return (net != null && !net.isEmpty()); + }; + + s2.render = function() { + return Promise.all([ + {}, + this.renderUCISection('_new_') + ]).then(this.renderContents.bind(this)); + }; + + if (bss.ssid == null) { + name = s2.option(form.Value, 'ssid', _('Network SSID'), _('The correct SSID must be manually specified when joining a hidden wireless network')); + name.rmempty = false; + }; + + replace = s2.option(form.Flag, 'replace', _('Replace wireless configuration'), _('Check this option to delete the existing networks from this radio.')); + + name = s2.option(form.Value, 'name', _('Name of the new network'), + _('Name for OpenWrt network configuration. (No relation to wireless network name/SSID)') + '
    ' + + _('The allowed characters are: A-Z, a-z, 0-9 and _')); + name.datatype = 'uciname'; + name.default = 'wwan'; + name.rmempty = false; + name.validate = function(section_id, value) { + if (nameUsed(value)) + return _('The network name is already used'); + + return true; + }; + + for (var i = 2; nameUsed(name.default); i++) + name.default = 'wwan%d'.format(i); + + if (is_wep || is_psk) { + passphrase = s2.option(form.Value, 'password', is_wep ? _('WEP passphrase') : _('WPA passphrase'), _('Specify the secret encryption key here.')); + passphrase.datatype = is_wep ? 'wepkey' : 'wpakey'; + passphrase.password = true; + passphrase.rmempty = false; + } + + if (bss.ssid != null) { + bssid = s2.option(form.Flag, 'bssid', _('Lock to BSSID'), _('Instead of joining any network with a matching SSID, only connect to the BSSID %h.').format(bss.bssid)); + bssid.default = '0'; + } + + zone = s2.option(widgets.ZoneSelect, 'zone', _('Create / Assign firewall-zone'), _('Choose the firewall zone you want to assign to this interface. Select unspecified to remove the interface from the associated zone or fill out the custom field to define a new zone and attach the interface to it.')); + zone.default = 'wan'; + + return m2.render().then(L.bind(function(nodes) { + ui.showModal(_('Joining Network: %q').replace(/%q/, '"%h"'.format(bss.ssid)), [ + nodes, + E('div', { 'class': 'right' }, [ + E('button', { + 'class': 'btn', + 'click': ui.hideModal + }, _('Cancel')), ' ', + E('button', { + 'class': 'cbi-button cbi-button-positive important', + 'click': ui.createHandlerFn(this, 'handleJoinConfirm', radioDev, bss, m2) + }, _('Submit')) + ]) + ], 'cbi-modal').querySelector('[id="%s"] input[class][type]'.format((passphrase || name).cbid('_new_'))).focus(); + }, this)); + }; + + s.handleAdd = function(radioDev, ev) { + var section_id = next_free_sid(uci.sections('wireless', 'wifi-iface').length); + + uci.unset('wireless', radioDev.getName(), 'disabled'); + + uci.add('wireless', 'wifi-iface', section_id); + uci.set('wireless', section_id, 'device', radioDev.getName()); + uci.set('wireless', section_id, 'mode', 'ap'); + uci.set('wireless', section_id, 'ssid', 'OpenWrt'); + uci.set('wireless', section_id, 'encryption', 'none'); + + this.addedSection = section_id; + return this.renderMoreOptionsModal(section_id); + }; + + o = s.option(form.DummyValue, '_badge'); + o.modalonly = false; + o.textvalue = function(section_id) { + var inst = this.section.lookupRadioOrNetwork(section_id), + node = E('div', { 'class': 'center' }); + + if (inst.getWifiNetworks) + node.appendChild(render_radio_badge(inst)); + else + node.appendChild(render_network_badge(inst)); + + return node; + }; + + o = s.option(form.DummyValue, '_stat'); + o.modalonly = false; + o.textvalue = function(section_id) { + var inst = this.section.lookupRadioOrNetwork(section_id); + + if (inst.getWifiNetworks) + return render_radio_status(inst, this.section.wifis.filter(function(e) { + return (e.getWifiDeviceName() == inst.getName()); + })); + else + return render_network_status(inst); + }; + + return m.render().then(L.bind(function(m, nodes) { + poll.add(L.bind(function() { + var section_ids = m.children[0].cfgsections(), + tasks = [ network.getHostHints(), network.getWifiDevices() ]; + + for (var i = 0; i < section_ids.length; i++) { + var row = nodes.querySelector('.cbi-section-table-row[data-sid="%s"]'.format(section_ids[i])), + dsc = row.querySelector('[data-name="_stat"] > div'), + btns = row.querySelectorAll('.cbi-section-actions button'); + + if (dsc.getAttribute('restart') == '') { + dsc.setAttribute('restart', '1'); + tasks.push(fs.exec('/sbin/wifi', ['up', section_ids[i]]).catch(function(e) { + ui.addNotification(null, E('p', e.message)); + })); + } + else if (dsc.getAttribute('restart') == '1') { + dsc.removeAttribute('restart'); + btns[0].classList.remove('spinning'); + btns[0].disabled = false; + } + } + + return Promise.all(tasks) + .then(L.bind(function(hosts_radios) { + var tasks = []; + + for (var i = 0; i < hosts_radios[1].length; i++) + tasks.push(hosts_radios[1][i].getWifiNetworks()); + + return Promise.all(tasks).then(function(data) { + hosts_radios[2] = []; + + for (var i = 0; i < data.length; i++) + hosts_radios[2].push.apply(hosts_radios[2], data[i]); + + return hosts_radios; + }); + }, network)) + .then(L.bind(function(hosts_radios_wifis) { + var tasks = []; + + for (var i = 0; i < hosts_radios_wifis[2].length; i++) + tasks.push(hosts_radios_wifis[2][i].getAssocList()); + + return Promise.all(tasks).then(function(data) { + hosts_radios_wifis[3] = []; + + for (var i = 0; i < data.length; i++) { + var wifiNetwork = hosts_radios_wifis[2][i], + radioDev = hosts_radios_wifis[1].filter(function(d) { return d.getName() == wifiNetwork.getWifiDeviceName() })[0]; + + for (var j = 0; j < data[i].length; j++) + hosts_radios_wifis[3].push(Object.assign({ radio: radioDev, network: wifiNetwork }, data[i][j])); + } + + return hosts_radios_wifis; + }); + }, network)) + .then(L.bind(function(zones, data) { + data.push(zones); + return data; + }, network, zones)) + .then(L.bind(this.poll_status, this, nodes)); + }, this), 5); + + var table = E('table', { 'class': 'table assoclist', 'id': 'wifi_assoclist_table' }, [ + E('tr', { 'class': 'tr table-titles' }, [ + E('th', { 'class': 'th nowrap' }, _('Network')), + E('th', { 'class': 'th hide-xs' }, _('MAC address')), + E('th', { 'class': 'th' }, _('Host')), + E('th', { 'class': 'th' }, _('Signal / Noise')), + E('th', { 'class': 'th' }, _('RX Rate / TX Rate')) + ]) + ]); + + cbi_update_table(table, [], E('em', { 'class': 'spinning' }, _('Collecting data...'))) + + return E([ nodes, E('h3', _('Associated Stations')), table ]); + }, this, m)); + }, + + handleReset: null +}); diff --git a/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full b/luci-mod-network/root/etc/uci-defaults/50_luci-mod-admin-full similarity index 56% rename from luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full rename to luci-mod-network/root/etc/uci-defaults/50_luci-mod-admin-full index 6c19e34d1..140c83299 100755 --- a/luci-mod-admin-full/root/etc/uci-defaults/50_luci-mod-admin-full +++ b/luci-mod-network/root/etc/uci-defaults/50_luci-mod-admin-full @@ -5,16 +5,16 @@ if [ "$(uci -q get luci.diag)" != "internal" ]; then if [ -s /etc/os-release ]; then . /etc/os-release - host="${HOME_URL:-${BUG_URL:-$LEDE_DEVICE_MANUFACTURER_URL}}" + host="${HOME_URL:-${BUG_URL:-$OPENWRT_DEVICE_MANUFACTURER_URL}}" host="${host#*://}" host="${host%%/*}" fi uci -q batch <<-EOF >/dev/null set luci.diag=internal - set luci.diag.dns='openmptcprouter.com' - set luci.diag.ping='openmptcprouter.com' - set luci.diag.route='openmptcprouter.com' + set luci.diag.dns='${host:-openwrt.org}' + set luci.diag.ping='${host:-openwrt.org}' + set luci.diag.route='${host:-openwrt.org}' commit luci EOF fi diff --git a/luci-mod-network/root/usr/libexec/luci-peeraddr b/luci-mod-network/root/usr/libexec/luci-peeraddr new file mode 100755 index 000000000..84a0158fd --- /dev/null +++ b/luci-mod-network/root/usr/libexec/luci-peeraddr @@ -0,0 +1,46 @@ +#!/bin/sh + +NL=" +" + +function ifaces_by_device() { + ubus call network.interface dump 2>/dev/null | \ + jsonfilter -e "@.interface[@.device='$1' || @.l3_device='$1'].interface" +} + +function device_by_addr() { + set -- $(ip route get "$1" ${2:+from "$2"} 2>/dev/null) + echo "$5" +} + +for inbound_device in $(device_by_addr "$REMOTE_ADDR" "$SERVER_ADDR"); do + inbound_devices="$inbound_device" + inbound_interfaces="" + + for iface in $(ifaces_by_device "$inbound_device"); do + inbound_interfaces="${inbound_interfaces:+$inbound_interfaces$NL}$iface" + + for peeraddr in $(uci get "network.$iface.peeraddr"); do + for ipaddr in $(resolveip -t 1 "$peeraddr" 2>/dev/null); do + for peerdev in $(device_by_addr "$ipaddr"); do + for iface in $(ifaces_by_device "$peerdev"); do + inbound_devices="${inbound_devices:+$inbound_devices$NL}$peerdev" + inbound_interfaces="${inbound_interfaces:+$inbound_interfaces$NL}$iface" + done + done + done + done + done +done + +inbound_devices="$(echo "$inbound_devices" | sort -u | sed ':a;N;$!ba;s/\n/", "/g')" +inbound_interfaces="$(echo "$inbound_interfaces" | sort -u | sed ':a;N;$!ba;s/\n/", "/g')" + +cat < --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... -local tunlink, defaultroute, metric, mtu - -section:taboption("general", Value, "ip6prefix", - translate("NAT64 Prefix"), translate("Leave empty to autodetect")) - -tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link")) -tunlink.template = "cbi/network_netlist" -tunlink.nocreate = true - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua b/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua deleted file mode 100644 index d6444b7f9..000000000 --- a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua +++ /dev/null @@ -1,106 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Copyright 2018 Ycarus (Yannick Chabanois) --- - Add gateway setting --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local ipaddr, peeraddr, ip6addr, tunnelid, username, password -local defaultroute, metric, ttl, mtu - - -ipaddr = s:taboption("general", Value, "ipaddr", - translate("Local IPv4 address"), - translate("Leave empty to use the current WAN address")) - -ipaddr.datatype = "ip4addr" - - -peeraddr = s:taboption("general", Value, "peeraddr", - translate("Remote IPv4 address"), - translate("This is usually the address of the nearest PoP operated by the tunnel broker")) - -peeraddr.rmempty = false -peeraddr.datatype = "ip4addr" - - -ip6addr = s:taboption("general", Value, "ip6addr", - translate("Local IPv6 address"), - translate("This is the local endpoint address assigned by the tunnel broker, it usually ends with ...:2/64")) - -ip6addr.datatype = "ip6addr" - - -local ip6prefix = s:taboption("general", Value, "ip6prefix", - translate("IPv6 routed prefix"), - translate("This is the prefix routed to you by the tunnel broker for use by clients")) - -ip6prefix.datatype = "ip6addr" - - -local update = section:taboption("general", Flag, "_update", - translate("Dynamic tunnel"), - translate("Enable HE.net dynamic endpoint update")) - -update.enabled = "1" -update.disabled = "0" - -function update.write() end -function update.remove() end -function update.cfgvalue(self, section) - return (tonumber(m:get(section, "tunnelid")) ~= nil) - and self.enabled or self.disabled -end - - -tunnelid = section:taboption("general", Value, "tunnelid", translate("Tunnel ID")) -tunnelid.datatype = "uinteger" -tunnelid:depends("_update", update.enabled) - - -username = section:taboption("general", Value, "username", - translate("HE.net username"), - translate("This is the plain username for logging into the account")) - -username:depends("_update", update.enabled) -username.validate = function(self, val, sid) - if type(val) == "string" and #val == 32 and val:match("^[a-fA-F0-9]+$") then - return nil, translate("The HE.net endpoint update configuration changed, you must now use the plain username instead of the user ID!") - end - return val -end - - -password = section:taboption("general", Value, "password", - translate("HE.net password"), - translate("This is either the \"Update Key\" configured for the tunnel or the account password if no update key has been configured")) - -password.password = true -password:depends("_update", update.enabled) - - -gateway = section:taboption("advanced", Value, "gateway",translate("Gateway")) - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) -ttl.placeholder = "64" -ttl.datatype = "range(1,255)" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua b/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua deleted file mode 100644 index 708a9c5ad..000000000 --- a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6rd.lua +++ /dev/null @@ -1,72 +0,0 @@ --- Copyright 2011-2012 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local ipaddr, peeraddr, ip6addr, tunnelid, username, password -local defaultroute, metric, ttl, mtu - - -ipaddr = s:taboption("general", Value, "ipaddr", - translate("Local IPv4 address"), - translate("Leave empty to use the current WAN address")) - -ipaddr.datatype = "ip4addr" - - -peeraddr = s:taboption("general", Value, "peeraddr", - translate("Remote IPv4 address"), - translate("This IPv4 address of the relay")) - -peeraddr.rmempty = false -peeraddr.datatype = "ip4addr" - - -ip6addr = s:taboption("general", Value, "ip6prefix", - translate("IPv6 prefix"), - translate("The IPv6 prefix assigned to the provider, usually ends with ::")) - -ip6addr.rmempty = false -ip6addr.datatype = "ip6addr" - - -ip6prefixlen = s:taboption("general", Value, "ip6prefixlen", - translate("IPv6 prefix length"), - translate("The length of the IPv6 prefix in bits")) - -ip6prefixlen.placeholder = "16" -ip6prefixlen.datatype = "range(0,128)" - - -ip6prefixlen = s:taboption("general", Value, "ip4prefixlen", - translate("IPv4 prefix length"), - translate("The length of the IPv4 prefix in bits, the remainder is used in the IPv6 addresses.")) - -ip6prefixlen.placeholder = "0" -ip6prefixlen.datatype = "range(0,32)" - - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) -ttl.placeholder = "64" -ttl.datatype = "range(1,255)" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua b/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua deleted file mode 100644 index 50a706974..000000000 --- a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6to4.lua +++ /dev/null @@ -1,37 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local ipaddr, defaultroute, metric, ttl, mtu - - -ipaddr = section:taboption("general", Value, "ipaddr", - translate("Local IPv4 address"), - translate("Leave empty to use the current WAN address")) - -ipaddr.datatype = "ip4addr" - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) -ttl.placeholder = "64" -ttl.datatype = "range(1,255)" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua b/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua deleted file mode 100644 index 7b5e6043c..000000000 --- a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_aiccu.lua +++ /dev/null @@ -1,136 +0,0 @@ --- Copyright 2015 Paul Oranje --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - --- config read by /lib/netifd/proto/aiccu.sh -local username, password, protocol, server, tunnelid, ip6prefix, requiretls, nat, heartbeat, - verbose, ntpsynctimeout, ip6addr, sourcerouting, defaultroute - --- generic parameters -local metric, ttl, mtu - - -username = section:taboption("general", Value, "username", - translate("Server username"), - translate("SIXXS-handle[/Tunnel-ID]")) -username.datatype = "string" - -password = section:taboption("general", Value, "password", - translate("Server password"), - translate("Server password, enter the specific password of the tunnel when the username contains the tunnel ID")) -password.datatype = "string" -password.password = true - - ---[[ SIXXS supports only TIC as tunnel broker protocol, no use setting it. -protocol = section:taboption("general", ListValue, "protocol", - translate("Tunnel broker protocol"), - translate("SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) use 6in4 instead")) - -protocol:value("tic", "TIC") -protocol:value("tsp", "TSP") -protocol:value("l2tp", "L2TP") -protocol.default = "tic" -protocol.optional = true ---]] - - -server = section:taboption("general", Value, "server", - translate("Tunnel setup server"), - translate("Optional, specify to override default server (tic.sixxs.net)")) -server.datatype = "host(0)" -server.optional = true - - -tunnelid = section:taboption("general", Value, "tunnelid", - translate("Tunnel ID"), - translate("Optional, use when the SIXXS account has more than one tunnel")) -tunnelid.datatype = "string" -tunnelid.optional = true - - -local ip6prefix = section:taboption("general", Value, "ip6prefix", - translate("IPv6 prefix"), - translate("Routed IPv6 prefix for downstream interfaces")) -ip6prefix.datatype = "ip6addr" -ip6prefix.optional = true - - -heartbeat = s:taboption("general", ListValue, "heartbeat", - translate("Tunnel type"), - translate("Also see Tunneling Comparison on SIXXS")) -heartbeat:value("0", translate("AYIYA")) -heartbeat:value("1", translate("Heartbeat")) -heartbeat.default = "0" - - -nat = section:taboption("general", Flag, "nat", - translate("Behind NAT"), - translate("The tunnel end-point is behind NAT, defaults to disabled and only applies to AYIYA")) -nat.optional = true -nat.default = nat.disabled - - -requiretls = section:taboption("general", Flag, "requiretls", - translate("Require TLS"), - translate("Connection to server fails when TLS cannot be used")) -requiretls.optional = true -requiretls.default = requiretls.disabled - - -verbose = section:taboption("advanced", Flag, "verbose", - translate("Verbose"), - translate("Verbose logging by aiccu daemon")) -verbose.optional = true -verbose.default = verbose.disabled - - -ntpsynctimeout = section:taboption("advanced", Value, "ntpsynctimeout", - translate("NTP sync time-out"), - translate("Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)")) -ntpsynctimeout.datatype = "uinteger" -ntpsynctimeout.placeholder = "90" -ntpsynctimeout.optional = true - - -ip6addr = section:taboption("advanced", Value, "ip6addr", - translate("Local IPv6 address"), - translate("IPv6 address delegated to the local tunnel endpoint (optional)")) -ip6addr.datatype = "ip6addr" -ip6addr.optional = true - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default route"), - translate("Whether to create an IPv6 default route over the tunnel")) -defaultroute.default = defaultroute.enabled -defaultroute.optional = true - - -sourcerouting = section:taboption("advanced", Flag, "sourcerouting", - translate("Source routing"), - translate("Whether to route only packets from delegated prefixes")) -sourcerouting.default = sourcerouting.enabled -sourcerouting.optional = true - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) -metric.datatype = "uinteger" -metric.placeholder = "0" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", - translate("Use TTL on tunnel interface")) -ttl.datatype = "range(1,255)" -ttl.placeholder = "64" - - -mtu = section:taboption("advanced", Value, "mtu", - translate("Use MTU on tunnel interface"), - translate("minimum 1280, maximum 1480")) -mtu.datatype = "range(1280,1480)" -mtu.placeholder = "1280" - diff --git a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua b/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua deleted file mode 100644 index 76caedcb3..000000000 --- a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua +++ /dev/null @@ -1,58 +0,0 @@ --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - - -local o = section:taboption("general", ListValue, "reqaddress", - translate("Request IPv6-address")) -o:value("try") -o:value("force") -o:value("none", "disabled") -o.default = "try" - - -o = section:taboption("general", Value, "reqprefix", - translate("Request IPv6-prefix of length")) -o:value("auto", translate("Automatic")) -o:value("no", translate("disabled")) -o:value("48") -o:value("52") -o:value("56") -o:value("60") -o:value("64") -o.default = "auto" - - -o = section:taboption("advanced", Flag, "defaultroute", - translate("Use default gateway"), - translate("If unchecked, no default route is configured")) -o.default = o.enabled - - -o = section:taboption("advanced", Flag, "peerdns", - translate("Use DNS servers advertised by peer"), - translate("If unchecked, the advertised DNS server addresses are ignored")) -o.default = o.enabled - - -o = section:taboption("advanced", Value, "ip6prefix", - translate("Custom delegated IPv6-prefix")) -o.dataype = "ip6addr" - - -o = section:taboption("advanced", DynamicList, "dns", - translate("Use custom DNS servers")) -o:depends("peerdns", "") -o.datatype = "list(ip6addr)" -o.cast = "string" - - -o = section:taboption("advanced", Value, "clientid", - translate("Client ID to send when requesting DHCP")) - -luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) - -o = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -o.placeholder = "1500" -o.datatype = "max(9200)" diff --git a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua b/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua deleted file mode 100644 index eca9750ad..000000000 --- a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dslite.lua +++ /dev/null @@ -1,53 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local peeraddr, ip6addr -local tunlink, defaultroute, metric, ttl, mtu - - - - -peeraddr = section:taboption("general", Value, "peeraddr", - translate("DS-Lite AFTR address")) - -peeraddr.rmempty = false -peeraddr.datatype = "or(hostname,ip6addr)" - -ip6addr = section:taboption("general", Value, "ip6addr", - translate("Local IPv6 address"), - translate("Leave empty to use the current WAN address")) - -ip6addr.datatype = "ip6addr" - - -tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link")) -tunlink.template = "cbi/network_netlist" -tunlink.nocreate = true - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) -ttl.placeholder = "64" -ttl.datatype = "range(1,255)" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_hnet.lua b/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_hnet.lua deleted file mode 100644 index 2ed34faf7..000000000 --- a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_hnet.lua +++ /dev/null @@ -1,37 +0,0 @@ --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local mode = section:taboption("general", ListValue, "mode", translate("Category")) -mode:value("auto", translate("Automatic")) -mode:value("external", translate("External")) -mode:value("internal", translate("Internal")) -mode:value("leaf", translate("Leaf")) -mode:value("guest", translate("Guest")) -mode:value("adhoc", translate("Ad-Hoc")) -mode:value("hybrid", translate("Hybrid")) -mode.default = "auto" - - - -local plen = section:taboption("advanced", Value, "ip6assign", translate("IPv6 assignment length"), - translate("Assign a part of given length of every public IPv6-prefix to this interface")) -plen.datatype = "max(128)" -plen.default = "64" - -section:taboption("advanced", Value, "link_id", translate("IPv6 assignment hint"), - translate("Assign prefix parts using this hexadecimal subprefix ID for this interface.")) - -plen = section:taboption("advanced", Value, "ip4assign", translate("IPv4 assignment length")) -plen.datatype = "max(32)" -plen.default = "24" - -local o = section:taboption("advanced", Value, "dnsname", translate("DNS-Label / FQDN")) -o.default = map.name - -luci.tools.proto.opt_macaddr(section, ifc, translate("Override MAC address")) - -o = section:taboption("advanced", Value, "mtu", translate("Override MTU")) -o.placeholder = "1500" -o.datatype = "max(9200)" diff --git a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua b/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua deleted file mode 100644 index 37d4ec901..000000000 --- a/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_map.lua +++ /dev/null @@ -1,88 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local map, section, net = ... - -local peeraddr, ip6addr -local tunlink, defaultroute, metric, ttl, mtu - - -maptype = section:taboption("general", ListValue, "type", translate("Type")) -maptype:value("map-e", "MAP-E") -maptype:value("map-t", "MAP-T") -maptype:value("lw4o6", "LW4over6") - - -peeraddr = section:taboption("general", Value, "peeraddr", - translate("BR / DMR / AFTR")) - -peeraddr.rmempty = false -peeraddr.datatype = "ip6addr" - - -ipaddr = section:taboption("general", Value, "ipaddr", - translate("IPv4 prefix")) -ipaddr.datatype = "ip4addr" - - -ip4prefixlen = s:taboption("general", Value, "ip4prefixlen", - translate("IPv4 prefix length"), - translate("The length of the IPv4 prefix in bits, the remainder is used in the IPv6 addresses.")) - -ip4prefixlen.placeholder = "32" -ip4prefixlen.datatype = "range(0,32)" - -ip6addr = s:taboption("general", Value, "ip6prefix", - translate("IPv6 prefix"), - translate("The IPv6 prefix assigned to the provider, usually ends with ::")) - -ip6addr.rmempty = false -ip6addr.datatype = "ip6addr" - - -ip6prefixlen = s:taboption("general", Value, "ip6prefixlen", - translate("IPv6 prefix length"), - translate("The length of the IPv6 prefix in bits")) - -ip6prefixlen.placeholder = "16" -ip6prefixlen.datatype = "range(0,64)" - - -s:taboption("general", Value, "ealen", - translate("EA-bits length")).datatype = "range(0,48)" - -s:taboption("general", Value, "psidlen", - translate("PSID-bits length")).datatype = "range(0,16)" - -s:taboption("general", Value, "offset", - translate("PSID offset")).datatype = "range(0,16)" - -tunlink = section:taboption("advanced", DynamicList, "tunlink", translate("Tunnel Link")) -tunlink.template = "cbi/network_netlist" -tunlink.nocreate = true - - -defaultroute = section:taboption("advanced", Flag, "defaultroute", - translate("Default gateway"), - translate("If unchecked, no default route is configured")) - -defaultroute.default = defaultroute.enabled - - -metric = section:taboption("advanced", Value, "metric", - translate("Use gateway metric")) - -metric.placeholder = "0" -metric.datatype = "uinteger" -metric:depends("defaultroute", defaultroute.enabled) - - -ttl = section:taboption("advanced", Value, "ttl", translate("Use TTL on tunnel interface")) -ttl.placeholder = "64" -ttl.datatype = "range(1,255)" - - -mtu = section:taboption("advanced", Value, "mtu", translate("Use MTU on tunnel interface")) -mtu.placeholder = "1280" -mtu.datatype = "max(9200)" diff --git a/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua b/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua deleted file mode 100644 index ad99073ad..000000000 --- a/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua +++ /dev/null @@ -1,63 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Copyright 2013 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network - -local _, p -for _, p in ipairs({"dslite", "map", "464xlat"}) do - - local proto = netmod:register_protocol(p) - - function proto.get_i18n(self) - if p == "dslite" then - return luci.i18n.translate("Dual-Stack Lite (RFC6333)") - elseif p == "map" then - return luci.i18n.translate("MAP / LW4over6") - elseif p == "464xlat" then - return luci.i18n.translate("464XLAT (CLAT)") - end - end - - function proto.ifname(self) - return p .. "-" .. self.sid - end - - function proto.opkg_package(self) - if p == "dslite" then - return "ds-lite" - elseif p == "map" then - return "map-t" - elseif p == "464xlat" then - return "464xlat" - end - end - - function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/" .. p .. ".sh") - end - - function proto.is_floating(self) - return true - end - - function proto.is_virtual(self) - return true - end - - function proto.get_interfaces(self) - return nil - end - - function proto.contains_interface(self, ifname) - return (netmod:ifnameof(ifc) == self:ifname()) - end - - if p == "dslite" then - netmod:register_pattern_virtual("^ds%-%w") - elseif p == "map" then - netmod:register_pattern_virtual("^map%-%w") - elseif p == "464xlat" then - netmod:register_pattern_virtual("^464%-%w") - end -end diff --git a/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua b/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua deleted file mode 100644 index 9a4396c5b..000000000 --- a/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua +++ /dev/null @@ -1,50 +0,0 @@ --- Copyright 2011 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local netmod = luci.model.network - -local _, p -for _, p in ipairs({"6in4", "6to4", "6rd"}) do - - local proto = netmod:register_protocol(p) - - function proto.get_i18n(self) - if p == "6in4" then - return luci.i18n.translate("IPv6-in-IPv4 (RFC4213)") - elseif p == "6to4" then - return luci.i18n.translate("IPv6-over-IPv4 (6to4)") - elseif p == "6rd" then - return luci.i18n.translate("IPv6-over-IPv4 (6rd)") - end - end - - function proto.ifname(self) - return p .. "-" .. self.sid - end - - function proto.opkg_package(self) - return p - end - - function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/" .. p .. ".sh") - end - - function proto.is_floating(self) - return true - end - - function proto.is_virtual(self) - return true - end - - function proto.get_interfaces(self) - return nil - end - - function proto.contains_interface(self, ifname) - return (netmod:ifnameof(ifc) == self:ifname()) - end - - netmod:register_pattern_virtual("^%s%%-%%w" % p) -end diff --git a/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua b/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua deleted file mode 100644 index e0d7fd3e2..000000000 --- a/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua +++ /dev/null @@ -1,49 +0,0 @@ --- Copyright 2015 Paul Oranje --- Licensed to the public under GPLv2 - -local netmod = luci.model.network -local interface = luci.model.network.interface - -local proto = netmod:register_protocol("aiccu") - -function proto.get_i18n(self) - return luci.i18n.translate("AICCU (SIXXS)") -end - -function proto.ifname(self) - return "aiccu-" .. self.sid -end - -function proto.get_interface(self) - return interface(self:ifname(), self) -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/aiccu.sh") -end - -function proto.opkg_package(self) - return "aiccu" -end - -function proto.is_floating(self) - return true -end - -function proto.is_virtual(self) - return true -end - -function proto.get_interfaces(self) - return nil -end - -function proto.contains_interface(self, ifname) - if self:is_floating() then - return (netmod:ifnameof(ifc) == self:ifname()) - else - return netmod.protocol.contains_interface(self, ifc) - end -end - -netmod:register_pattern_virtual("^aiccu%-%w") diff --git a/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua b/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua deleted file mode 100644 index 0b45dad05..000000000 --- a/luci-proto-ipv6/luasrc/model/network/proto_dhcpv6.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Copyright 2013 Jo-Philipp Wich --- Licensed to the public under the Apache License 2.0. - -local proto = luci.model.network:register_protocol("dhcpv6") - -function proto.get_i18n(self) - return luci.i18n.translate("DHCPv6 client") -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/dhcpv6.sh") -end - -function proto.opkg_package(self) - return "odhcp6c" -end diff --git a/luci-proto-ipv6/luasrc/model/network/proto_hnet.lua b/luci-proto-ipv6/luasrc/model/network/proto_hnet.lua deleted file mode 100644 index f525061be..000000000 --- a/luci-proto-ipv6/luasrc/model/network/proto_hnet.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Copyright 2014 Steven Barth --- Licensed to the public under the Apache License 2.0. - -local proto = luci.model.network:register_protocol("hnet") - -function proto.get_i18n(self) - return luci.i18n.translate("Automatic Homenet (HNCP)") -end - -function proto.is_installed(self) - return nixio.fs.access("/lib/netifd/proto/hnet.sh") -end - -function proto.opkg_package(self) - return "hnet-full" -end diff --git a/luci-proto-mbim/Makefile b/luci-proto-mbim/Makefile new file mode 100644 index 000000000..cdd9699f9 --- /dev/null +++ b/luci-proto-mbim/Makefile @@ -0,0 +1,14 @@ +# +# Copyright (C) 2008-2014 The LuCI Team +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Support for MBIM +LUCI_DEPENDS:=+umbim + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-proto-mbim/htdocs/luci-static/resources/protocol/mbim.js b/luci-proto-mbim/htdocs/luci-static/resources/protocol/mbim.js new file mode 100644 index 000000000..85b101ec2 --- /dev/null +++ b/luci-proto-mbim/htdocs/luci-static/resources/protocol/mbim.js @@ -0,0 +1,100 @@ +'use strict'; +'require rpc'; +'require form'; +'require network'; + +var callFileList = rpc.declare({ + object: 'file', + method: 'list', + params: [ 'path' ], + expect: { entries: [] }, + filter: function(list, params) { + var rv = []; + for (var i = 0; i < list.length; i++) + if (list[i].name.match(/^cdc-wdm/)) + rv.push(params.path + list[i].name); + return rv.sort(); + } +}); + +network.registerPatternVirtual(/^mbim-.+$/); + +return network.registerProtocol('mbim', { + getI18n: function() { + return _('MBIM Cellular'); + }, + + getIfname: function() { + return this._ubus('l3_device') || 'mbim-%s'.format(this.sid); + }, + + getPackageName: function() { + return 'umbim'; + }, + + isFloating: function() { + return true; + }, + + isVirtual: function() { + return true; + }, + + getDevices: function() { + return null; + }, + + containsDevice: function(ifname) { + return (network.getIfnameOf(ifname) == this.getIfname()); + }, + + renderFormOptions: function(s) { + var dev = this.getL3Device() || this.getDevice(), o; + + o = s.taboption('general', form.Value, 'device', _('Modem device')); + o.rmempty = false; + o.load = function(section_id) { + return callFileList('/dev/').then(L.bind(function(devices) { + for (var i = 0; i < devices.length; i++) + this.value(devices[i]); + return form.Value.prototype.load.apply(this, [section_id]); + }, this)); + }; + + s.taboption('general', form.Value, 'apn', _('APN')); + s.taboption('general', form.Value, 'pincode', _('PIN')); + + o = s.taboption('general', form.ListValue, 'auth', _('Authentication Type')); + o.value('both', 'PAP/CHAP'); + o.value('pap', 'PAP'); + o.value('chap', 'CHAP'); + o.value('none', 'NONE'); + o.default = 'none'; + + o = s.taboption('general', form.Value, 'username', _('PAP/CHAP username')); + o.depends('auth', 'pap'); + o.depends('auth', 'chap'); + o.depends('auth', 'both'); + + o = s.taboption('general', form.Value, 'password', _('PAP/CHAP password')); + o.depends('auth', 'pap'); + o.depends('auth', 'chap'); + o.depends('auth', 'both'); + o.password = true; + + if (L.hasSystemFeature('ipv6')) { + o = s.taboption('advanced', form.Flag, 'ipv6', _('Enable IPv6 negotiation')); + o.default = o.disabled; + } + + o = s.taboption('advanced', form.Value, 'delay', _('Modem init timeout'), _('Maximum amount of seconds to wait for the modem to become ready')); + o.placeholder = '10'; + o.datatype = 'min(1)'; + + o = s.taboption('general', form.ListValue, 'pdptype', _('PDP Type')); + o.value('ipv4v6', 'IPv4/IPv6'); + o.value('ipv4', 'IPv4'); + o.value('ipv6', 'IPv6'); + o.default = 'ipv4v6'; + } +}); diff --git a/luci-proto-ipv6/Makefile b/luci-proto-modemmanager/Makefile similarity index 59% rename from luci-proto-ipv6/Makefile rename to luci-proto-modemmanager/Makefile index 5d4c62961..8f39d27ee 100644 --- a/luci-proto-ipv6/Makefile +++ b/luci-proto-modemmanager/Makefile @@ -1,17 +1,16 @@ # # Copyright (C) 2008-2014 The LuCI Team -# Copyright (C) 2018-2019 Ycarus (Yannick Chabanois) # # This is free software, licensed under the Apache License, Version 2.0 . # include $(TOPDIR)/rules.mk -LUCI_TITLE:=Support for DHCPv6/6in4/6to4/6rd/DS-Lite/aiccu -LUCI_DEPENDS:= +LUCI_TITLE:=Support for ModemManager +LUCI_DEPENDS:=+modemmanager PKG_LICENSE:=Apache-2.0 -include ../luci/luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/luci-proto-modemmanager/htdocs/luci-static/resources/modemmanager_helper.js b/luci-proto-modemmanager/htdocs/luci-static/resources/modemmanager_helper.js new file mode 100644 index 000000000..b8558b885 --- /dev/null +++ b/luci-proto-modemmanager/htdocs/luci-static/resources/modemmanager_helper.js @@ -0,0 +1,101 @@ +'use strict'; +'require baseclass'; +'require fs'; + +return baseclass.extend({ + + _mmcliBin: '/usr/bin/mmcli', + + _emptyStringValue: '--', + + _parseIndex: function (dbusPath) { + var index = dbusPath.split('/').slice(-1); + return parseInt(index); + }, + + _parseOutput: function (output) { + try { + return this._removeEmptyStrings(JSON.parse(output)); + } catch (err) { + return null; + } + }, + + _removeEmptyStrings: function (obj) { + if (obj == null) { + return obj; + } + + if (typeof obj == 'string') { + if (obj == this._emptyStringValue) { + obj = null; + } + } else if (Array.isArray()) { + obj = obj.map(L.bind(function (it) { + return this._removeEmptyStrings(it); + }, this)); + } else { + var keys = Object.keys(obj); + keys.forEach(L.bind(function (key) { + obj[key] = this._removeEmptyStrings(obj[key]); + }, this)); + } + + return obj; + }, + + getModems: function () { + return fs.exec_direct(this._mmcliBin, [ '-L', '-J' ]).then(L.bind(function (res) { + var json = this._parseOutput(res); + if (json == null) { + return []; + } + var modems = json['modem-list']; + var tasks = []; + + modems.forEach(L.bind(function (modem) { + var index = this._parseIndex(modem); + if (!isNaN(index)) { + tasks.push(this.getModem(index)); + } + }, this)); + return Promise.all(tasks); + }, this)); + }, + + getModem: function (index) { + return fs.exec_direct(this._mmcliBin, [ '-m', index, '-J' ]).then(L.bind(function (modem) { + return this._parseOutput(modem); + }, this)); + }, + + getModemSims: function (modem) { + var tasks = []; + var simSlots = modem.generic['sim-slots']; + var sim = modem.generic.sim; + if (sim != null && !simSlots.includes(sim)) { + simSlots.push(sim); + } + + simSlots.forEach(L.bind(function (modem) { + var index = this._parseIndex(modem); + if (!isNaN(index)) { + tasks.push(this.getSim(index)); + } + }, this)); + return Promise.all(tasks); + }, + + getSim: function (index) { + return fs.exec_direct(this._mmcliBin, [ '-i', index, '-J' ]).then(L.bind(function (sim) { + return this._parseOutput(sim); + }, this)); + }, + + getModemLocation: function (modem) { + var index = this._parseIndex(modem['dbus-path']); + return fs.exec_direct(this._mmcliBin, [ '-m', index, '--location-get', '-J' ]).then(L.bind(function (location) { + return this._parseOutput(location); + }, this)); + } +}); diff --git a/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js b/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js new file mode 100644 index 000000000..b7a0d44b8 --- /dev/null +++ b/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js @@ -0,0 +1,216 @@ +'use strict'; +'require fs'; +'require form'; +'require network'; +'require modemmanager_helper as helper'; + +network.registerPatternVirtual(/^mobiledata-.+$/); +network.registerErrorCode('MM_CONNECT_FAILED', _('Connection attempt failed.')); +network.registerErrorCode('MM_CONNECT_IN_PROGRESS', _('Modem connection in progress. Please wait. This process will timeout after 2 minutes.')); +network.registerErrorCode('DEVICE_NOT_MANAGED', _('Device not managed by ModemManager.')); +network.registerErrorCode('INVALID_BEARER_LIST', _('Invalid bearer list. Possibly too many bearers created. This protocol supports one and only one bearer.')); +network.registerErrorCode('UNKNOWN_METHOD', _('Unknown and unsupported connection method.')); +network.registerErrorCode('DISCONNECT_FAILED', _('Disconnection attempt failed.')); +network.registerErrorCode('MM_INVALID_ALLOWED_MODES_LIST', _('Unable to set allowed mode list.')); +network.registerErrorCode('MM_NO_PREFERRED_MODE_CONFIGURED', _('No preferred mode configuration found.')); +network.registerErrorCode('MM_NO_ALLOWED_MODE_CONFIGURED', _('No allowed mode configuration found.')); +network.registerErrorCode('MM_FAILED_SETTING_PREFERRED_MODE', _('Unable to set preferred mode.')); + +return network.registerProtocol('modemmanager', { + getI18n: function() { + return _('ModemManager'); + }, + + getIfname: function() { + return this._ubus('l3_device') || 'modemmanager-%s'.format(this.sid); + }, + + getPackageName: function() { + return 'modemmanager'; + }, + + isFloating: function() { + return true; + }, + + isVirtual: function() { + return true; + }, + + getDevices: function() { + return null; + }, + + containsDevice: function(ifname) { + return (network.getIfnameOf(ifname) == this.getIfname()); + }, + + renderFormOptions: function(s) { + var dev = this.getL3Device() || this.getDevice(), o; + + o = s.taboption('general', form.ListValue, '_modem_device', _('Modem device')); + o.ucioption = 'device'; + o.rmempty = false; + o.load = function(section_id) { + return helper.getModems().then(L.bind(function(devices) { + for (var i = 0; i < devices.length; i++) { + var generic = devices[i].modem.generic; + this.value(generic.device, + '%s - %s (%s)'.format(generic.manufacturer, generic.model, generic.device)); + } + return form.Value.prototype.load.apply(this, [section_id]); + }, this)); + }; + + o = s.taboption('general', form.Value, 'apn', _('APN')); + o.validate = function(section_id, value) { + if (value == null || value == '') + return true; + + if (!/^[a-zA-Z0-9\-.]*[a-zA-Z0-9]$/.test(value)) + return _('Invalid APN provided'); + + return true; + }; + + o = s.taboption('general', form.Value, 'pincode', _('PIN')); + o.datatype = 'and(uinteger,minlength(4),maxlength(8))'; + + o = s.taboption('general', form.Value, 'pukcode', _('PUK')); + o.datatype = "uinteger"; + + o = s.taboption('general', form.Value, 'plmn', _('PLMN')); + o.datatype = "uinteger"; + + o = s.taboption('general', form.DynamicList, 'allowedauth', _('Authentication Type')); + o.value('both', _('PAP/CHAP (both)')); + o.value('pap', 'PAP'); + o.value('chap', 'CHAP'); + o.value('mschap', 'MSCHAP'); + o.value('mschapv2', 'MSCHAPv2'); + o.value('eap', 'EAP'); + o.value('', _('None')); + o.default = ''; + + o = s.taboption('general', form.ListValue, 'allowedmode', _('Allowed network technology'), + _('Setting the allowed network technology.')); + o.value('2g'); + o.value('3g'); + o.value('3g|2g'); + o.value('4g'); + o.value('4g|2g'); + o.value('4g|3g'); + o.value('4g|3g|2g'); + o.value('5g'); + o.value('5g|2g'); + o.value('5g|3g'); + o.value('5g|3g|2g'); + o.value('5g|4g'); + o.value('5g|4g|2g'); + o.value('5g|4g|3g'); + o.value('5g|4g|3g|2g'); + o.value('',_('any')); + o.default = ''; + + o = s.taboption('general', form.ListValue, 'preferredmode', _('Preferred network technology'), + _('Setting the preferred network technology.')); + o.value('2g'); + o.value('3g'); + o.value('4g'); + o.value('5g'); + o.value('none', _('None')); + o.depends('allowedmode','3g|2g'); + o.depends('allowedmode','4g|2g'); + o.depends('allowedmode','4g|3g'); + o.depends('allowedmode','4g|3g|2g'); + o.depends('allowedmode','5g|2g'); + o.depends('allowedmode','5g|3g'); + o.depends('allowedmode','5g|3g|2g'); + o.depends('allowedmode','5g|4g'); + o.depends('allowedmode','5g|4g|2g'); + o.depends('allowedmode','5g|4g|3g'); + o.depends('allowedmode','5g|4g|3g|2g'); + + o = s.taboption('general', form.Value, 'username', _('PAP/CHAP username')); + o.depends('auth', 'pap'); + o.depends('auth', 'chap'); + o.depends('auth', 'both'); + + o = s.taboption('general', form.Value, 'password', _('PAP/CHAP password')); + o.depends('auth', 'pap'); + o.depends('auth', 'chap'); + o.depends('auth', 'both'); + o.password = true; + + o = s.taboption('general', form.ListValue, 'iptype', _('IP Type')); + o.value('ipv4v6', _('IPv4/IPv6 (both - defaults to IPv4)')) + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.default = 'ipv4v6'; + + o = s.taboption('advanced', form.Value, 'mtu', _('Override MTU')); + o.placeholder = dev ? (dev.getMTU() || '1500') : '1500'; + o.datatype = 'max(9200)'; + + o = s.taboption('general', form.Value, 'signalrate', _('Signal Refresh Rate'), _("In seconds")); + o.datatype = 'uinteger'; + + s.taboption('general', form.Value, 'metric', _('Gateway metric')); + + s.taboption('advanced', form.Flag, 'debugmode', _('Enable Debugmode')); + + o = s.taboption('advanced', form.Value, 'delay', _('Modem init timeout'), _('Amount of seconds to wait for the modem to become ready')); + o.datatype = 'uinteger'; + o.placeholder = '120'; + + o = s.taboption('advanced', form.ListValue, 'loglevel', _('Log output level')); + o.value('ERR', _('Error')) + o.value('WARN', _('Warning')); + o.value('INFO', _('Info')); + o.value('DEBUG', _('Debug')); + o.default = 'ERR'; + + + o = s.taboption('general', form.ListValue, 'init_epsbearer', _('Initial EPS Bearer'), + _('none: Do not set an initial EPS bearer (default behaviour)') + '
    ' + + _('default: Use the configuration options above (APN, IP Type, ...).') + '
    ' + + _('custom: Use different options when establishing a connection (these options are prefixed with %s).').format('init_')); + o.value('', _('none')); + o.value('default', 'default'); + o.value('custom', 'custom'); + o.default = ''; + o = s.taboption('general', form.Value, 'init_apn', _('Initial EPS Bearer APN')); + o.depends('init_epsbearer', 'custom'); + o.default = ''; + o = s.taboption('general', form.ListValue, 'init_allowedauth', _('Initial EPS Bearer Authentication Type')); + o.depends('init_epsbearer', 'custom'); + o.value('pap', 'PAP'); + o.value('chap', 'CHAP'); + o.value('mschap', 'MSCHAP'); + o.value('mschapv2', 'MSCHAPv2'); + o.value('eap', 'EAP'); + o.value('', _('None')); + o.default = ''; + o = s.taboption('general', form.Value, 'init_username', _('Initial EPS Bearer Username')); + o.depends('init_allowedauth', 'pap'); + o.depends('init_allowedauth', 'chap'); + o.depends('init_allowedauth', 'mschap'); + o.depends('init_allowedauth', 'mschapv2'); + o.depends('init_allowedauth', 'eap'); + o.default = ''; + o = s.taboption('general', form.Value, 'init_password', _('Initial EPS Bearer Password')); + o.depends('init_allowedauth', 'pap'); + o.depends('init_allowedauth', 'chap'); + o.depends('init_allowedauth', 'mschap'); + o.depends('init_allowedauth', 'mschapv2'); + o.depends('init_allowedauth', 'eap'); + o.default = ''; + o.password = true; + o = s.taboption('general', form.ListValue, 'init_iptype', _('Initial EPS Bearer IP Type')); + o.depends('init_epsbearer', 'custom'); + o.value('ipv4v6', _('IPv4/IPv6 (both - defaults to IPv4)')) + o.value('ipv4', _('IPv4 only')); + o.value('ipv6', _('IPv6 only')); + o.default = 'ipv4v6'; + } +}); diff --git a/luci-proto-modemmanager/htdocs/luci-static/resources/view/modemmanager/status.js b/luci-proto-modemmanager/htdocs/luci-static/resources/view/modemmanager/status.js new file mode 100644 index 000000000..649ff8321 --- /dev/null +++ b/luci-proto-modemmanager/htdocs/luci-static/resources/view/modemmanager/status.js @@ -0,0 +1,181 @@ +'use strict'; +'require ui'; +'require view'; +'require poll'; +'require dom'; +'require modemmanager_helper as helper'; + +return view.extend({ + load: function() { + return helper.getModems().then(function (modems) { + return Promise.all(modems.filter(function (modem){ + return modem != null; + }).map(function (modem) { + return helper.getModemSims(modem.modem).then(function (sims) { + modem.sims = sims.filter(function (sim) { + return sim != null; + }); + + return helper.getModemLocation(modem.modem).then(function (location) { + modem.location = location; + return modem; + }); + }); + })); + }); + }, + + pollData: function (container) { + poll.add(L.bind(function () { + return this.load().then(L.bind(function (modems) { + dom.content(container, this.renderContent(modems)); + }, this)); + }, this)); + }, + + renderSections: function (name, sections) { + if (sections.length == 0) { + sections.push(E('div', { 'class': 'cbi-section' }, [ + E('span', {}, _('Section %s is empty.').format(name)) + ])); + } + + return E('div', { 'class': 'cbi-section' }, [ + E('h1', {}, name), + ...sections + ]); + }, + + renderSection: function (name, table) { + var rowNodes = table.filter(function (row) { + return row[1] != null; + }).map(function (row) { + return E('tr', { 'class': 'tr' }, [ + E('td', { 'class': 'td', 'width': '33%' }, E('strong', {}, [row[0]])), + E('td', { 'class': 'td' }, [row[1]]) + ]); + }); + + var tableNode; + if (rowNodes.length == 0) { + tableNode = E('div', { 'class': 'cbi-section' }, [ + E('span', {}, _('Section %s is empty.').format(name)) + ]) + } else { + tableNode = E('table', { 'class': 'table', }, rowNodes); + } + + return E('div', { 'class': 'cbi-section' }, [ + E('h2', {}, [name]), + tableNode + ]); + }, + + renderContent: function (modems) { + var node = E('div', {}, E('div')); + + modems.forEach(L.bind(function (modem) { + var generic = modem.modem.generic; + var modem3gpp = modem.modem['3gpp']; + + var modemSection = this.renderSection(_('Modem Info'), [ + [_('Manufacturer'), generic.manufacturer], + [_('Model'), generic.model], + [_('Revision'), generic.revision], + [E('abbr', { 'title': _('International Mobile Station Equipment Identity') }, [ + _('IMEI') + ]), modem3gpp.imei], + [_('Device Identifier'), generic['device-identifier']], + [_('Power State'), generic['power-state']], + [_('State'), generic.state], + [_('Failed Reason'), generic['state-failed-reason']] + ]); + + var ownNumbersStr = generic['own-numbers'].join(', '); + var accessTechnologiesStr = generic['access-technologies'].join(', '); + var signalQualityValue = parseInt(generic['signal-quality'].value); + var networkSection = this.renderSection(_('Network Registration'), [ + [_('Own Numbers'), ownNumbersStr], + [_('Access Technologies'), accessTechnologiesStr], + [_('Operator') , modem3gpp['operator-name']], + [_('Operator Code'), modem3gpp['operator-code']], + [_('Registration State'), modem3gpp['registration-state']], + [_('Packet Service State'), modem3gpp['packet-service-state']], + [_('Signal Quality'), E('div', { 'class': 'cbi-progressbar', 'title': '%d %'.format(signalQualityValue) }, [ + E('div', { 'style': 'width: %d%%'.format(signalQualityValue) }) + ])] + ]); + + var location3gpp = {}; + if (modem.location != null) { + location3gpp = modem.location.modem.location['3gpp']; + } + var locationSection = this.renderSection(_('Cell Location'), [ + [E('abbr', { 'title': _('Cell ID') }, [ + 'CID' + ]), location3gpp.cid], + [E('abbr', { 'title': _('Location Area Code') }, [ + 'LAC' + ]), location3gpp.lac], + [E('abbr', { 'title': _('Mobile Country Code') }, [ + 'MCC' + ]), location3gpp.mcc], + [E('abbr', { 'title': _('Mobile Network Code') }, [ + 'MNC' + ]), location3gpp.mnc], + [E('abbr', { 'title': _('Tracking Area Code') }, [ + 'TAC' + ]), location3gpp.tac] + ]); + + var simTables = modem.sims.map(function (sim) { + var properties = sim.sim.properties; + return [ + [_('Active'), properties.active], + [_('Operator Name'), properties['operator-name']], + [E('abbr', { 'title': _('Integrated Circuit Card Identifier') }, [ + 'ICCID' + ]), properties.iccid], + [E('abbr', { 'title': _('International Mobile Subscriber Identity') }, [ + 'IMSI' + ]), properties.imsi] + ]; + }); + var simSubSections = simTables.map(L.bind(function (table, index) { + return this.renderSection(_('SIM %d').format(index + 1), table) + }, this)); + var simSection = this.renderSections(_('SIMs'), simSubSections); + + var sections = [ + E('div', { 'class': 'cbi-map-descr'}, []), + modemSection, + networkSection, + locationSection, + simSection + ].filter(function (section) { + return section != null; + }); + node.firstElementChild.appendChild(E('div', { 'data-tab': generic.device, 'data-tab-title': generic.device }, sections)); + }, this)); + ui.tabs.initTabGroup(node.firstElementChild.childNodes); + + return node; + }, + + render: function (modems) { + var content = E([], [ + E('h2', {}, [_('Cellular Network')]), + E('div') + ]); + var container = content.lastElementChild; + + dom.content(container, this.renderContent(modems)); + this.pollData(container); + + return content; + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null +}); diff --git a/luci-proto-modemmanager/root/usr/share/luci/menu.d/luci-proto-modemmanager.json b/luci-proto-modemmanager/root/usr/share/luci/menu.d/luci-proto-modemmanager.json new file mode 100644 index 000000000..eac7f3be6 --- /dev/null +++ b/luci-proto-modemmanager/root/usr/share/luci/menu.d/luci-proto-modemmanager.json @@ -0,0 +1,13 @@ +{ + "admin/status/modemmanager": { + "title": "Cellular Network", + "order": 10, + "action": { + "type": "view", + "path": "modemmanager/status" + }, + "depends": { + "acl": [ "luci-proto-modemmanager" ] + } + } +} diff --git a/luci-proto-modemmanager/root/usr/share/rpcd/acl.d/luci-proto-modemmanager.json b/luci-proto-modemmanager/root/usr/share/rpcd/acl.d/luci-proto-modemmanager.json new file mode 100644 index 000000000..0987c1c24 --- /dev/null +++ b/luci-proto-modemmanager/root/usr/share/rpcd/acl.d/luci-proto-modemmanager.json @@ -0,0 +1,17 @@ +{ + "luci-proto-modemmanager": { + "description": "Grant access to mmcli", + "read": { + "cgi-io": [ "exec" ], + "file": { + "/usr/bin/mmcli -L -J": [ "exec" ], + "/usr/bin/mmcli -m [0-9]* -J": [ "exec" ], + "/usr/bin/mmcli -i [0-9]* -J": [ "exec" ], + "/usr/bin/mmcli -m [0-9]* --location-get -J": [ "exec" ] + }, + "ubus": { + "modemmanager": [ "*" ] + } + } + } +} diff --git a/luci-theme-alpha/LICENSE b/luci-theme-alpha/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/luci-theme-alpha/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/luci-theme-alpha/Makefile b/luci-theme-alpha/Makefile new file mode 100644 index 000000000..af247d7e0 --- /dev/null +++ b/luci-theme-alpha/Makefile @@ -0,0 +1,54 @@ +# LuCI Alpha Theme +# Copyright 2024 derisamedia +# +# Licensed under the Apache License v2.0 +# http://www.apache.org/licenses/LICENSE-2.0 + +include $(TOPDIR)/rules.mk + +THEME_NAME:=alpha +THEME_TITLE:=Alpha + +PKG_NAME:=luci-theme-$(THEME_NAME) +PKG_VERSION:=3.9.4_beta +PKG_RELEASE:=9 + +include $(INCLUDE_DIR)/package.mk + +define Package/luci-theme-$(THEME_NAME) + SECTION:=luci + CATEGORY:=LuCI + SUBMENU:=9. Themes + DEPENDS:=+libc + TITLE:=LuCi Theme For OpenWrt And Alpha OS ONLY - $(THEME_TITLE) + URL:=http://facebook.com/derisamedia/ + PKGARCH:=all +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/luci-theme-$(THEME_NAME)/install + $(INSTALL_DIR) $(1)/etc/uci-defaults + echo "uci set luci.themes.$(THEME_TITLE)=/luci-static/$(THEME_NAME); uci commit luci" > $(1)/etc/uci-defaults/30-luci-theme-$(THEME_NAME) + $(INSTALL_DIR) $(1)/www/luci-static/$(THEME_NAME) + $(CP) -a ./luasrc/* $(1)/www/luci-static/$(THEME_NAME)/ 2>/dev/null || true + $(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/themes/$(THEME_NAME) + $(CP) -a ./template/* $(1)/usr/lib/lua/luci/view/themes/$(THEME_NAME)/ 2>/dev/null || true + $(INSTALL_DIR) $(1)/www/luci-static/resources + $(CP) -a ./js/* $(1)/www/luci-static/resources/ 2>/dev/null || true + $(INSTALL_DIR) $(1)/etc/config + $(CP) -a ./root/etc/config/* $(1)/etc/config/ 2>/dev/null || true +endef + +define Package/luci-theme-$(THEME_NAME)/postinst +#!/bin/sh +[ -n "$${IPKG_INSTROOT}" ] || { + ( . /etc/uci-defaults/30-luci-theme-$(THEME_NAME) ) && rm -f /etc/uci-defaults/30-luci-theme-$(THEME_NAME) +} +endef + +$(eval $(call BuildPackage,luci-theme-$(THEME_NAME))) diff --git a/luci-theme-alpha/README.md b/luci-theme-alpha/README.md new file mode 100644 index 000000000..0ee085099 --- /dev/null +++ b/luci-theme-alpha/README.md @@ -0,0 +1,53 @@ +[issues]: https://github.com/derisamedia/luci-theme-alpha/issues +[issues-badge]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg?style=flat-square +[release]: https://github.com/derisamedia/luci-theme-alpha/releases +[release-badge]: https://img.shields.io/badge/download-check_releases-blue +[group]: https://facebook.com/groups/indowrt +[group-badge]: https://img.shields.io/badge/visit_Facebook-Comunity-cyan +[discord]: https://discord.gg/gdZwmDQGUm +[discord-badge]: https://img.shields.io/badge/visit_Discord-Comunity-blue + + + + + + + +# luci-theme-alpha (BETA) +
    + + +[![issues][issues-badge]][issues] +[![release][release-badge]][release] +[![group][group-badge]][group] +[![discord][discord-badge]][discord] + + +Luci theme for Official Openwrt and Alpha OS build ,based on bootstrap and material luCi theme refferences, +Preview Screenshoot +

    + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/ss1.png) + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/ss2.png) + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/ss3.png) + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/mobileview1.png) + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/mobileview2.png) + +![image](https://raw.githubusercontent.com/derisamedia/luci-theme-alpha/master/mobileview3.png) + +

    + +### FYI + +alpha os is my idea which wants to develop the OpenWrt community in Indonesia, even the world, thanks to friends who have supported this alpha-os theme, hopefully given health to all of us. + + +(old text) Mr. Sibondt once they said 'jalan ditempat komunitas indo', that's what moved my heart to make an innovation that I named alpha os (alpha = initial version, because it hasn't been perfect until now 😁) + +donate +buy me a padang rice or coffee +https://saweria.co/derisamedia diff --git a/luci-theme-alpha/js/menu-alpha.js b/luci-theme-alpha/js/menu-alpha.js new file mode 100644 index 000000000..62cae62e7 --- /dev/null +++ b/luci-theme-alpha/js/menu-alpha.js @@ -0,0 +1,179 @@ +"use strict"; +"require baseclass"; +"require ui"; +return baseclass.extend({ + __init__: function () { + ui.menu.load().then(L.bind(this.render, this)); + }, + render: function (tree) { + var node = tree, + url = ""; + this.renderModeMenu(node); + if (L.env.dispatchpath.length >= 3) { + for (var i = 0; i < 3 && node; i++) { + node = node.children[L.env.dispatchpath[i]]; + url = url + (url ? "/" : "") + L.env.dispatchpath[i]; + } + if (node) this.renderTabMenu(node, url); + } + document + .querySelector(".showSide") + .addEventListener( + "click", + ui.createHandlerFn(this, "handleSidebarToggle") + ); + document + .querySelector(".darkMask") + .addEventListener( + "click", + ui.createHandlerFn(this, "handleSidebarToggle") + ); + document.querySelector(".main > .loading").style.opacity = "0"; + document.querySelector(".main > .loading").style.visibility = "hidden"; + if (window.innerWidth <= 1152) + document.querySelector(".main-left").style.width = "0"; + window.addEventListener("resize", this.handleSidebarToggle, true); + }, + handleMenuExpand: function (ev) { + var a = ev.target, + ul1 = a.parentNode, + ul2 = a.nextElementSibling; + document.querySelectorAll("li.slide.active").forEach(function (li) { + if (li !== a.parentNode || li == ul1) { + li.classList.remove("active"); + li.childNodes[0].classList.remove("active"); + } + if (li == ul1) return; + }); + if (!ul2) return; + if ( + ul2.parentNode.offsetLeft + ul2.offsetWidth <= + ul1.offsetLeft + ul1.offsetWidth + ) + ul2.classList.add("align-left"); + ul1.classList.add("active"); + a.classList.add("active"); + a.blur(); + ev.preventDefault(); + ev.stopPropagation(); + }, + renderMainMenu: function (tree, url, level) { + var l = (level || 0) + 1, + ul = E("ul", { class: level ? "slide-menu" : "nav" }), + children = ui.menu.getChildren(tree); + if (children.length == 0 || l > 2) return E([]); + for (var i = 0; i < children.length; i++) { + var isActive = L.env.dispatchpath[l] == children[i].name, + submenu = this.renderMainMenu( + children[i], + url + "/" + children[i].name, + l + ), + hasChildren = submenu.children.length; + ul.appendChild( + E( + "li", + { + class: hasChildren + ? "slide" + (isActive ? " active" : "") + : isActive + ? " active" + : "", + }, + [ + E( + "a", + { + href: hasChildren ? "#" : L.url(url, children[i].name), + class: hasChildren + ? "menu" + (isActive ? " active" : "") + : null, + click: hasChildren + ? ui.createHandlerFn(this, "handleMenuExpand") + : null, + "data-title": hasChildren + ? children[i].title + : _(children[i].title), + }, + [_(children[i].title)] + ), + submenu, + ] + ) + ); + } + if (l == 1) { + var container = document.querySelector("#mainmenu"); + container.appendChild(ul); + container.style.display = ""; + } + return ul; + }, + renderModeMenu: function (tree) { + var ul = document.querySelector("#modemenu"), + children = ui.menu.getChildren(tree); + for (var i = 0; i < children.length; i++) { + var isActive = L.env.requestpath.length + ? children[i].name == L.env.requestpath[0] + : i == 0; + ul.appendChild( + E("li", {}, [ + E( + "a", + { + href: L.url(children[i].name), + class: isActive ? "active" : null, + }, + [_(children[i].title)] + ), + ]) + ); + if (isActive) this.renderMainMenu(children[i], children[i].name); + if (i > 0 && i < children.length) + ul.appendChild(E("li", { class: "divider" }, [E("span")])); + } + if (children.length > 1) ul.parentElement.style.display = ""; + }, + renderTabMenu: function (tree, url, level) { + var container = document.querySelector("#tabmenu"), + l = (level || 0) + 1, + ul = E("ul", { class: "tabs" }), + children = ui.menu.getChildren(tree), + activeNode = null; + if (children.length == 0) return E([]); + for (var i = 0; i < children.length; i++) { + var isActive = L.env.dispatchpath[l + 2] == children[i].name, + activeClass = isActive ? " active" : "", + className = "tabmenu-item-%s %s".format(children[i].name, activeClass); + ul.appendChild( + E("li", { class: className }, [ + E("a", { href: L.url(url, children[i].name) }, [ + _(children[i].title), + ]), + ]) + ); + if (isActive) activeNode = children[i]; + } + container.appendChild(ul); + container.style.display = ""; + if (activeNode) + container.appendChild( + this.renderTabMenu(activeNode, url + "/" + activeNode.name, l) + ); + return ul; + }, + handleSidebarToggle: function (ev) { + var width = window.innerWidth, + darkMask = document.querySelector(".darkMask"), + mainRight = document.querySelector(".main-right"), + mainLeft = document.querySelector(".main-left"), + open = mainLeft.style.width == ""; + if (width > 1152 || ev.type == "resize") open = true; + darkMask.style.visibility = open ? "" : "visible"; + darkMask.style.opacity = open ? "" : 1; + if (width <= 1152) mainLeft.style.width = open ? "0" : ""; + else mainLeft.style.width = ""; + mainLeft.style.visibility = open ? "" : "visible"; + mainRight.style["overflow-y"] = open ? "visible" : "hidden"; + }, +}); diff --git a/luci-theme-alpha/luasrc/app.js b/luci-theme-alpha/luasrc/app.js new file mode 100644 index 000000000..c61ad0834 --- /dev/null +++ b/luci-theme-alpha/luasrc/app.js @@ -0,0 +1,35 @@ +(function () { + // your page initialization code here + // the DOM will be available here + + const toggler = document.querySelector(".toggler"); + console.log(toggler); + toggler.addEventListener( + "click", + function (e) { + const element = document.querySelector(".navbar"); + element.classList.toggle("active"); + }, + false + ); + + // const isDark = localStorage.getItem("isDark"); + // if (isDark == 1) { + // const element = document.querySelector("body"); + // element.classList.add("dark"); + // } + // const themetoggler = document.querySelector(".themetoggler"); + // themetoggler.addEventListener( + // "click", + // function (e) { + // e.preventDefault(); + // const element = document.querySelector("body"); + // element.classList.toggle("dark"); + + // const isDark = localStorage.getItem("isDark"); + // localStorage.setItem("isDark", isDark == 1 ? 0 : 1); + // }, + // false + // ); + })(); + \ No newline at end of file diff --git a/luci-theme-alpha/luasrc/background/dashboard.png b/luci-theme-alpha/luasrc/background/dashboard.png new file mode 100644 index 000000000..e8fff7925 Binary files /dev/null and b/luci-theme-alpha/luasrc/background/dashboard.png differ diff --git a/luci-theme-alpha/luasrc/background/login.png b/luci-theme-alpha/luasrc/background/login.png new file mode 100644 index 000000000..e8fff7925 Binary files /dev/null and b/luci-theme-alpha/luasrc/background/login.png differ diff --git a/luci-theme-alpha/luasrc/brand.png b/luci-theme-alpha/luasrc/brand.png new file mode 100644 index 000000000..f8584ac11 Binary files /dev/null and b/luci-theme-alpha/luasrc/brand.png differ diff --git a/luci-theme-alpha/luasrc/favicon.png b/luci-theme-alpha/luasrc/favicon.png new file mode 100644 index 000000000..7c3f3acb1 Binary files /dev/null and b/luci-theme-alpha/luasrc/favicon.png differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Black.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Black.woff2 new file mode 100644 index 000000000..5b3c5bf92 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Black.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Bold.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Bold.woff2 new file mode 100644 index 000000000..2532ddd06 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Bold.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-ExtraBold.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-ExtraBold.woff2 new file mode 100644 index 000000000..1e54fb56f Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-ExtraBold.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-ExtraLight.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-ExtraLight.woff2 new file mode 100644 index 000000000..3ff561883 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-ExtraLight.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Light.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Light.woff2 new file mode 100644 index 000000000..c90308af0 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Light.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Medium.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Medium.woff2 new file mode 100644 index 000000000..12454556b Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Medium.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Regular.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Regular.woff2 new file mode 100644 index 000000000..598e76118 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Regular.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-SemiBold.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-SemiBold.woff2 new file mode 100644 index 000000000..6a73b9f74 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-SemiBold.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Inter-Thin.woff2 b/luci-theme-alpha/luasrc/fonts/Inter-Thin.woff2 new file mode 100644 index 000000000..e4982d90e Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Inter-Thin.woff2 differ diff --git a/luci-theme-alpha/luasrc/fonts/Quicksand-Bold.ttf b/luci-theme-alpha/luasrc/fonts/Quicksand-Bold.ttf new file mode 100644 index 000000000..884f8582f Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Quicksand-Bold.ttf differ diff --git a/luci-theme-alpha/luasrc/fonts/Quicksand-Light.ttf b/luci-theme-alpha/luasrc/fonts/Quicksand-Light.ttf new file mode 100644 index 000000000..d4b8dbf38 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Quicksand-Light.ttf differ diff --git a/luci-theme-alpha/luasrc/fonts/Quicksand-Medium.ttf b/luci-theme-alpha/luasrc/fonts/Quicksand-Medium.ttf new file mode 100644 index 000000000..bd7d2bdb8 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Quicksand-Medium.ttf differ diff --git a/luci-theme-alpha/luasrc/fonts/Quicksand-Regular.ttf b/luci-theme-alpha/luasrc/fonts/Quicksand-Regular.ttf new file mode 100644 index 000000000..57d002f63 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Quicksand-Regular.ttf differ diff --git a/luci-theme-alpha/luasrc/fonts/Quicksand-SemiBold.ttf b/luci-theme-alpha/luasrc/fonts/Quicksand-SemiBold.ttf new file mode 100644 index 000000000..d74121fc5 Binary files /dev/null and b/luci-theme-alpha/luasrc/fonts/Quicksand-SemiBold.ttf differ diff --git a/luci-theme-alpha/luasrc/fonts/stylesheet.css b/luci-theme-alpha/luasrc/fonts/stylesheet.css new file mode 100644 index 000000000..126a5101a --- /dev/null +++ b/luci-theme-alpha/luasrc/fonts/stylesheet.css @@ -0,0 +1,71 @@ +@font-face { + font-family: 'Inter'; + src: url('Inter-Thin.woff2') format('woff2'); + font-weight: 100; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-ExtraLight.woff2') format('woff2'); + font-weight: 200; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-Light.woff2') format('woff2'); + font-weight: 300; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-Regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-Medium.woff2') format('woff2'); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-SemiBold.woff2') format('woff2'); + font-weight: 600; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-Bold.woff2') format('woff2'); + font-weight: 700; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-ExtraBold.woff2') format('woff2'); + font-weight: 800; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: 'Inter'; + src: url('Inter-Black.woff2') format('woff2'); + font-weight: 900; + font-style: normal; + font-display: swap; +} \ No newline at end of file diff --git a/luci-theme-alpha/luasrc/gaya/gaya.css b/luci-theme-alpha/luasrc/gaya/gaya.css new file mode 100755 index 000000000..0bdbaa1be --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/gaya.css @@ -0,0 +1,3609 @@ + /* Base */ + @font-face { + font-family: "Inter-Regular"; + src: url('/luci-static/alpha/fonts/Inter-Regular.woff2'); + } + + @font-face { + font-family: "Inter-Medium"; + src: url('/luci-static/alpha/fonts/Inter-Medium.woff2'); + } + + @font-face { + font-family: "Inter-Black"; + src: url('/luci-static/alpha/fonts/Inter-Black.woff2'); + } + + @font-face { + font-family: "Inter-Bold"; + src: url('/luci-static/alpha/fonts/Inter-Bold.woff2'); + } + + @font-face { + font-family: "Quicksand-Bold"; + src: url('/luci-static/alpha/fonts/Quicksand-Bold.ttf'); + } + + @font-face { + font-family: argon; + src: url('/luci-static/alpha/fonts/argon.woff'); + + } + + [class^="icon-"], + [class*=" icon-"] { + font-family: argon !important; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + a { + color: #5a8dee; + text-decoration: none; + background-color: transparent; + } + + b { + color: #5a8dee; + text-decoration: none; + background-color: transparent; + font-family: "Quicksand-Bold"; + + } + + ::-webkit-scrollbar:hover { + background-color: rgba(100, 100, 100, 0.09); + } + + ::-webkit-scrollbar-thumb:vertical { + background: rgba(100, 100, 100, 0.5); + -webkit-border-radius: 100px; + } + + ::-webkit-scrollbar-thumb:vertical:active { + background: rgba(100, 100, 100, 0.61); + -webkit-border-radius: 100px; + } + + ::-webkit-scrollbar { + width: 0.2em !important; + overflow: visible; + border-radius: 4px; + -webkit-border-radius: 4px; + } + + ::-webkit-scrollbar-track { + opacity: 0; + -webkit-transition: all 0.5s; + } + + ::-webkit-scrollbar-thumb { + overflow: visible; + border-radius: 4px; + background: rgba(100, 100, 100, 0.2); + } + + .icon-hello-world:before { + content: "\e90e"; + } + + .icon-expand_more:before { + content: "\e20b"; + } + + .icon-menu:before { + content: "\e20e"; + } + + .icon-favorite:before { + content: "\e291"; + } + + .icon-spinner:before { + content: "\e603"; + } + + .icon-delete:before { + content: "\e900"; + } + + .icon-edit:before { + content: "\e901"; + } + + .icon-use:before { + content: "\e902"; + } + + .icon-loading:before { + content: "\e903"; + } + + .icon-switch:before { + content: "\e904"; + } + + .icon-error:before { + content: "\e905"; + } + + .icon-dashboard:before { + content: "\e906"; + } + + .icon-logout:before { + content: "\e907"; + } + + .icon-Network:before { + content: "\e908"; + } + + .icon-services:before { + content: "\e909"; + } + + .icon-system:before { + content: "\e90a"; + } + + .icon-vpn:before { + content: "\e90b"; + } + + .icon-storage:before { + content: "\e90c"; + } + + .icon-statistics:before { + content: "\e90d"; + } + + .icon-angle-right:before { + content: "\e90f"; + } + + .icon-user:before { + content: "\e971"; + } + + .icon-question:before { + content: "\f059"; + } + + :root { + --main-color: #09c; + --header-bg: #161624; + --header-color: rgb(10, 10, 10); + --bar-bg: #3f3f3f69; + --menu-bg-color: #fff; + --menu-color: #5f6368; + --menu-color-hover: #202124; + --main-menu-color: #202124; + --submenu-bg-hover: #4d5ca5; + --submenu-bg-hover-active: #09c; + --font-body: 'Inter-Regular'; + } + + tt { + font-family: "Quicksand-Bold"; + color: #09c; + } + + em { + font-style: italic; + color: #fff + } + + p { + display: block; + margin-block-start: 1em; + margin-block-end: 1em; + margin-inline-start: 0px; + margin-inline-end: 0px; + color: #ffffff; + } + + li { + display: block; + list-style-type: disc; + margin-block-start: 5px; + margin-block-end: 5px; + margin-inline-start: 0px; + margin-inline-end: 0px; + color: #ffffff; + } + + small { + font-size: smaller; + color: #ffff; + } + + label { + cursor: default; + color: #ffffff; + } + + .table { + position: relative; + display: table; + } + + .tr { + display: table-row; + } + + .thead { + display: table-header-group; + } + + .tbody { + display: table-row-group; + } + + .tfoot { + display: table-footer-group; + } + + .td, + .th { + line-height: normal; + display: table-cell; + vertical-align: middle; + padding: 0.5em; + } + + .th { + font-weight: 700; + } + + .tr.placeholder { + height: 4em; + } + + .tr.placeholder>.td { + line-height: 3; + position: absolute; + right: 0; + bottom: 0; + left: 0; + text-align: center !important; + background: inherit; + } + + .table[width="33%"], + .th[width="33%"], + .td[width="33%"] { + width: 33%; + } + + .col-1 { + flex: 1 1 30px !important; + } + + .col-2 { + flex: 2 2 60px !important; + } + + .col-3 { + flex: 3 3 90px !important; + } + + .col-4 { + flex: 4 4 120px !important; + } + + .col-5 { + flex: 5 5 150px !important; + } + + .col-6 { + flex: 6 6 180px !important; + } + + .col-7 { + flex: 7 7 210px !important; + } + + .col-8 { + flex: 8 8 240px !important; + } + + .col-9 { + flex: 9 9 270px !important; + } + + .col-10 { + flex: 10 10 300px !important; + } + + * { + box-sizing: border-box; + padding: 0; + } + + .h1, + .h2, + .h3, + .h4, + .h5, + .h6, + h1, + h2, + h3, + h4, + h5, + h6 { + font-family: inherit; + font-weight: 400; + line-height: 1.1 !important; + color: #fff; + } + + html { + overflow-y: hidden; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + } + + body { + font-size: 0.8rem; + height: 100%; + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-attachment: fixed; + background-color: rgb(10, 10, 10); + } + + .text { + font-style: italic; + color: #fff; + } + + html, + body { + font-family: var(--font-body); + height: 100%; + margin: 0; + padding: 0; + } + + select { + color: #555; + border: thin solid #ccc; + background-color: #fff; + background-image: none; + padding: 0.36rem 0.8rem; + } + + .btn, + button, + select, + input, + .cbi-dropdown { + height: 2.3rem; + color: rgba(255, 255, 255, 0.87); + border: 0; + border-bottom: 2px solid #30304b; + border-radius: 10px; + border-radius: 20px; + outline: 0; + background-color: #222235; + background-image: none; + box-shadow: none; + padding: 0.5rem; + } + + select, + .cbi-dropdown { + width: inherit; + cursor: default; + } + + select:not([multiple="multiple"]):focus, + input:not(.cbi-button):focus, + .cbi-dropdown:focus { + border-color: var(--main-color); + } + + .cbi-dropdown, + select[multiple="multiple"] { + height: auto; + } + + pre { + overflow: auto; + color: #fff; + } + + code { + font-size: 1rem; + font-size-adjust: 0.35; + color: #101010; + border-radius: 0px; + background: #ddd; + padding: 1px 3px; + } + + abbr { + cursor: help; + text-decoration: underline; + color: #84d0ea; + } + + hr { + opacity: 0.1; + border-color: #eee; + margin: 1rem 0; + } + + /* End Base */ + + /* Header */ + header, + .main { + position: absolute; + width: 100%; + } + + header { + position: fixed; + z-index: 2000; + float: left; + height: 4rem; + transition: box-shadow 0.2s; + color: var(--header-color); + background: #2222359a; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + } + + header>.fill>.container { + margin-top: 0.5rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + padding: 0.5rem 1rem 0; + } + + header>.fill>.container>#logo { + padding: 0; + margin: 0 !important; + position: absolute; + left: 0; + top: 50%; + height: 100%; + transform: translateY(-50%); + padding: 1rem; + display: flex; + justify-content: center; + width: calc(16rem); + } + + header>.fill>.container>#logo>img { + width: auto; + height: 100%; + margin-top: -0.1rem; + } + + header>.fill>.container>.brand { + font-size: 1.4rem; + position: absolute; + cursor: default; + vertical-align: text-bottom; + text-decoration: none; + color: var(--header-color); + } + + header>.fill>.container>.status { + position: fixed; + top: 9px; + right: 1em; + float: right; + } + + header>.fill>.container>.status>* { + position: relative; + top: 0.2rem; + float: left; + left: -2.5rem; + margin-left: 0.3rem; + cursor: pointer; + } + + header>.fill>.container>.logout { + position: fixed; + top: 9px; + right: 1em; + float: right; + } + + header>.fill>.container>.logout>* { + position: relative; + top: 0.2rem; + float: left; + right: 0rem; + margin-left: 0.3rem; + cursor: pointer; + content: ""; + } + + .logout a { + position: absolute; + right: 14px; + width: 32px; + height: 32px; + content: ""; + background: url(./icon/logout.svg) no-repeat; + text-indent: -9999px; + background-size: 32px; + } + + /* End Header */ + + /* Footer */ + footer { + font-size: 0.8rem; + overflow: hidden; + text-align: center; + white-space: nowrap; + color: #000000; + padding: 1rem; + } + + footer>a { + text-decoration: none; + align-items: center; + color: #e6e6e696; + border-bottom: 0; + background-color: #2222359a; + border-radius: 10px; + padding: 9px; + padding-bottom: 3px; + padding-top: 3px; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + } + + small { + font-size: 90%; + line-height: 1.42857143; + white-space: normal; + } + + /* End Footer */ + + /* Navbar */ + @media screen and (min-width: 720px) { + .navbar { + position: fixed; + bottom: 50%; + transform: translateY(50%); + transition-duration: 200ms; + right: 30px; + border-top: var(--navBorder); + text-align: center; + background-color: #000000da; + box-shadow: 0 0 10px 0px #0000002d; + box-sizing: content-box; + border-radius: 10px; + } + + .navbar--hidden { + transform: translateY(60px); + box-shadow: none; + } + + .navbar .toggler { + transition-duration: 100ms; + position: absolute; + background: #ffffffb0; + box-shadow: 0 0 10px 0 #0000000f; + transform: translateY(50%); + bottom: 50%; + right: calc(100% + 10px); + width: 32px; + height: 32px; + padding: 8px; + border-radius: 100%; + content: ""; + box-sizing: border-box; + cursor: pointer; + } + + .navbar .toggler img { + transform: rotate(270deg); + } + + .navbar .dropdown { + display: flex; + flex-direction: column; + overflow: hidden; + width: 64px; + padding: 0.25rem; + } + + .navbar .dropdown a { + display: block; + text-align: center; + padding: 8px; + text-decoration: none; + max-width: 100px; + width: 100%; + } + + .navbar .dropdown a img { + width: 100%; + } + + .navbar.active { + right: -64px; + } + + .navbar.active .toggler { + right: calc(100% + 10px); + } + + .navbar.active .toggler img { + transform: rotate(90deg); + } + } + + @media screen and (max-width: 720px) { + .navbar { + + overflow: hidden; + position: fixed; + bottom: 5px; + top: auto; + left: 10px; + right: auto; + width: 95%; + align: center; + transition: transform 0.5s; + border-top: var(--navBorder); + text-align: center; + height: calc(50px + constant(safe-area-inset-bottom)); + height: calc(50px + env(safe-area-inset-bottom)); + background-color: #00000079; + border-radius: 20px; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + + } + + .navbar--hidden { + transform: translateY(60px); + box-shadow: none; + } + + .navbar a { + float: left; + text-align: center; + padding: 8px 0; + text-decoration: none; + } + + .navbar a img { + width: 28px; + } + } + + /* End Navbar */ + + .main { + position: relative; + top: 4rem; + bottom: 0; + overflow-y: auto; + height: calc(100% - 4rem); + } + + .main>.loading { + position: fixed; + z-index: 1000; + top: 0; + opacity: 1; + visibility: visible; + width: 100%; + height: 100%; + pointer-events: none; + background-color: rgba(0, 0, 0, 0.781); + transition: .4s ease-in-out; + border-radius: 10px; + } + + .main>.loading>span { + font-family: monospace; + font-size: 2rem; + font-size-adjust: 0.35; + position: relative; + top: 12.5%; + display: block; + text-align: center; + color: #888; + } + + .main>.loading>span>.loading-img { + display: inline-flex; + gap: 10px; + } + + .main>.loading>span>.loading-img:before, + .loading-img:after { + content: ""; + height: 20px; + aspect-ratio: 1; + border-radius: 50%; + background: + linear-gradient(#222 0 0) top/100% 0% no-repeat, + radial-gradient(farthest-side, #000 95%, #0000) 50%/8px 8px no-repeat #ffffff; + animation: l9 4s infinite ease-in; + } + + @keyframes l9 { + 0% { + background-size: 100% 0%, 8px 8px; + background-position: top, 50% 50% + } + + 80% { + background-size: 100% 70%, 8px 8px; + background-position: top, 50% 70% + } + + 84%, + 100% { + background-size: 100% 0%, 8px 8px; + background-position: top, 50% 50% + } + } + + .cbi-map { + margin-top: 10px; + } + + #cbi-shadowsocksr .cbi-map-descr { + display: none; + } + + strong { + font-weight: bold; + color: rgb(255, 255, 255); + } + + .main-right { + float: right; + width: calc(100% - 16rem); + height: 100%; + } + + .nowrap:not(.td) { + white-space: nowrap; + color: #ffffff; + } + + [disabled="disabled"] { + pointer-events: none; + } + + /* Sidebar */ + .main>.main-left { + position: fixed; + top: 4.8rem; + width: calc(0% + 16rem); + float: left; + overflow-x: auto; + background-color: #2222359a; + transition: visibility 400ms, width 400ms; + border-top-left-radius: 0px; + border-top-right-radius: 20px; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 20px; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + height: calc(100% - 3.5rem); + + } + + .main>.main-left>.nav { + padding: 0.5rem 0.5rem 2rem; + } + + .main>.main-left>.nav>li { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + + .main>.main-left>.nav>li>[data-title="Logout"] { + display: flex; + padding: 0.5rem 1rem; + } + + .main>.main-left>.nav>li a { + display: block; + color: #cbcbcb; + } + + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { + font-size: 1rem; + color: #fff; + } + + .main>.main-left>.nav>li.slide.active { + background-color: unset; + } + + .main>.main-left>.nav>.slide { + padding: 0; + } + + .main>.main-left>.nav>.slide>.menu, + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"], + .main>.main-left>.nav>li>[data-title="Dashboard"] { + font-size: 1rem; + font-weight: 500; + display: flex; + align-items: center; + width: 100%; + text-decoration: none; + color: #fff; + padding: 0.5rem 1rem; + transition-duration: 200ms; + margin-bottom: 5px; + } + + .main>.main-left>.nav>.slide>.menu::before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/app.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>.menu.active::before {} + + .main>.main-left>.nav>.slide>[data-title="Status"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/status.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="System"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/system.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="Services"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/services.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="NAS"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/nas.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="Modem"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/modem.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="Network"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/network.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="VPN"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/vpn.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide>[data-title="Docker"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/docker.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>li>[data-title="iStore"]:before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/sidebar-icon/istore.svg) no-repeat; + background-size: 25px; + } + + /* End Sidebar */ + + .modemenu-buttons { + display: flex; + flex-wrap: wrap; + align-items: center; + color: var(--header-color); + background: var(--header-bg); + transition: box-shadow 0.2s; + box-shadow: 0 2px 5px rgb(0 0 0 / 26%); + padding: 0.5rem; + } + + #modemenu { + display: flex; + align-items: center; + flex-wrap: wrap; + margin: 0.25rem; + } + + #modemenu>li.divider { + margin-left: 0.25rem; + margin-right: 0.25rem; + border: 0.5rem solid var(--submenu-bg-hover); + border-left: 1px solid var(--submenu-bg-hover); + border-right: 1px solid var(--submenu-bg-hover); + border-radius: 1rem; + } + + .danger { + background-color: #ff7d60 !important; + } + + .warning { + background-color: #bebebe87 !important; + border-radius: 10px; + color: #fff; + } + + .success { + background-color: #5cb85c !important; + } + + .error { + color: red; + } + + .alert, + .alert-message { + font-weight: 700; + margin-bottom: 1em; + border: 0; + border-radius: 20px; + background-color: #2222359a; + padding: 1rem; + margin: 1rem; + } + + .alert-message>h4 { + font-size: 110%; + font-weight: 700; + } + + .alert-message>* { + margin: 0.5rem 0; + } + + body[class*="node-"]>.main>.main-left>.nav>.slide>.menu::before { + transition: transform 0.1s ease-in-out; + } + + body[class*="node-"]>.main>.main-left>.nav>.slide>.menu.active::before { + transition: transform 0.2s ease-in-out; + } + + .main>.main-left>.nav>li>[data-title="Logout"]::before { + position: absolute; + right: 14px; + width: 25px; + height: 25px; + content: ""; + background: url(./icon/logout.svg) no-repeat; + background-size: 25px; + } + + .main>.main-left>.nav>.slide:hover { + background: none; + } + + .main>.main-left>.nav>.slide>.slide-menu>li>a { + white-space: nowrap; + text-decoration: none; + padding: 0.4rem 2rem; + } + + .main>.main-left>.nav>.slide>.slide-menu>li:not(.active):hover>a { + color: #fff; + } + + .main>.main-left>.nav>.slide>.slide-menu>.active:hover { + background-color: var(--main-color); + } + + .main>.main-left>.nav>.slide>.menu, + .main>.main-left>.nav>.slide>.slide-menu>li, + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { + position: relative; + overflow: hidden; + transform: translate3d(0, 0, 0); + } + + .main>.main-left>.nav>.slide>.menu::after, + .main>.main-left>.nav>.slide>.slide-menu>li::after, + .main>.main-left>.nav>li>[data-title="Logout"]::after, + .main>.main-left>.nav>li>[data-title="iStore"]::after { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 100%; + content: ""; + transition: transform 0.5s, opacity 1s; + transform: scale(10, 10); + pointer-events: none; + opacity: 0; + background-image: radial-gradient(circle, #000 10%, transparent 10.01%); + background-repeat: no-repeat; + background-position: 50%; + } + + .main>.main-left>.nav>.slide>.menu:active::after, + .main>.main-left>.nav>.slide>.slide-menu>li:active::after, + .main>.main-left>.nav>li>[data-title="Logout"]:active::after, + .main>.main-left>.nav>li>[data-title="iStore"]:active::after { + transition: 0s; + transform: scale(0, 0); + opacity: 0.2; + } + + #maincontent>.container { + margin: 0 2rem 1rem; + } + + ul { + line-height: normal; + } + + li { + list-style-type: none; + } + + h1 { + font-size: 2rem; + padding-bottom: 10px; + border-bottom: thin solid #eee; + } + + h2 { + font-size: 1.8rem; + font-family: "Quicksand-Bold"; + letter-spacing: 5px; + text-align: center; + padding-bottom: 10px; + margin: 2rem 0 0; + color: #ffffff; + animation-duration: 1s; + animation-name: down; + } + + h3 { + font-size: 1.2rem; + font-family: 'Inter-Bold'; + letter-spacing: 2px; + padding-bottom: 10px; + margin: 2rem 0 0; + color: #ffffff; + } + + h4 { + font-size: 1.2rem; + color: #fff; + padding-bottom: 10px; + margin: 2rem 0 0; + } + + h5 { + font-size: 1rem; + padding-bottom: 10px; + margin: 2rem 0 0; + } + + .cbi-tab-descr { + color: #09c; + margin: 1em; + padding: 1rem; + } + + #tabmenu { + padding: 0; + } + + .cbi-section, + .cbi-section-error, + #iptables, + .Firewall form, + #cbi-network>.cbi-section-node, + #cbi-wireless>.cbi-section-node, + #cbi-wireless>#wifi_assoclist_table, + [data-tab-title], + [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), + [data-page="admin-system-opkg"] #maincontent>.container { + font-family: inherit; + font-weight: 400; + font-style: normal; + line-height: normal; + min-width: inherit; + border: 0; + border-radius: 0; + background-color: #2222359a; + margin: 1rem 0 0; + padding: 2rem; + border-radius: 20px; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + } + + .cbi-modal .cbi-section, + .cbi-section .cbi-section {} + + .cbi-modal .cbi-tabmenu { + margin-left: 0; + } + + .cbi-map-descr, + .cbi-section-descr { + font-size: small; + text-align: center; + line-height: 1.42857143; + color: #999; + padding: 0.5rem; + } + + .cbi-section>legend { + display: none !important; + } + + fieldset>fieldset, + .cbi-section>.cbi-section { + border: 0; + box-shadow: none; + margin: 0; + padding: 0; + } + + .cbi-section>h3:first-child, + .panel-title { + font-size: 1.4rem; + line-height: 1; + display: block; + width: 100%; + padding-bottom: 1rem; + color: #e4e4e4; + border-bottom: thin solid #eeeeee00; + margin: 0 0 0.5rem; + } + + .cbi-section>h4:first-child, + .cbi-section>p:first-child, + [data-tab-title]>h3:first-child, + [data-tab-title]>h4:first-child, + [data-tab-title]>p:first-child { + padding-top: 1rem; + } + + table { + border-spacing: 0; + border-collapse: collapse; + } + + table, + .table { + overflow-y: hidden; + width: 100%; + border-radius: 10px; + } + + .container>.cbi-section:first-of-type>.table[width="100%"]>.tr>.td { + padding: 0.6rem; + } + + .cbi-section-table-cell { + line-height: 1.1; + align-self: flex-end; + flex: 1 1 auto; + } + + tr>td, + tr>th, + .tr>.td, + .tr>.th, + .cbi-section-table-row::before, + #cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2) { + color: #ffffff; + border-top: thin solid rgba(255, 255, 255, 0); + } + + .table[width="100%"]>.tr:first-child>.td { + margin: auto 0; + } + + .cbi-section-table-row { + margin-bottom: 1rem; + text-align: center !important; + } + + .cbi-section-table-row:last-child { + margin-bottom: 0; + } + + .cbi-section-table-row>.cbi-value-field [data-dynlist]>input, + .cbi-section-table-row>.cbi-value-field input.cbi-input-password { + width: calc(100% - 1.5rem); + } + + table table, + .table .table, + .cbi-value-field table, + .cbi-value-field .table, + td>table>tbody>tr>td, + .td>.table>.tbody>.tr>.td, + .cbi-value-field>table>tbody>tr>td, + .cbi-value-field>.table>.tbody>.tr>.td { + border: 0; + } + + .btn, + .cbi-button, + .item::after { + font-size: 0.8rem; + display: inline-block; + width: auto !important; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + transition: all 0.2s ease-in-out; + text-align: center; + vertical-align: middle; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + color: rgba(0, 0, 0, 0.87); + border: 0; + background-color: #f0f0f0; + background-image: none; + -webkit-appearance: none; + -ms-touch-action: manipulation; + touch-action: manipulation; + padding: 0 0.8rem; + } + + .cbi-button-up { + transform: scaleY(-1); + } + + .cbi-button:not(select) { + -webkit-appearance: none !important; + } + + .cbi-button+.cbi-button { + margin-left: 0.6rem; + } + + .btn:hover, + .btn:focus, + .btn:active, + .cbi-button:hover, + .cbi-button:focus, + .cbi-button:active, + .item:hover::after, + .item:focus::after, + .item:active::after, + .cbi-page-actions .cbi-button-apply+.cbi-button-save:hover, + .cbi-page-actions .cbi-button-apply+.cbi-button-save:focus, + .cbi-page-actions .cbi-button-apply+.cbi-button-save:active { + text-decoration: none; + outline: 0; + } + + .btn:hover, + .btn:focus, + .cbi-button:hover, + .cbi-button:focus, + .item:hover::after, + .item:focus::after { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2); + } + + .btn:active, + .cbi-button:active, + .item:active::after { + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23); + } + + .cbi-button-up:hover, + .cbi-button-up:focus { + box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 -2px 2px rgba(0, 0, 0, 0.2); + } + + .cbi-button-up:active { + box-shadow: 0 -10px 20px rgba(0, 0, 0, 0.19), 0 -6px 6px rgba(0, 0, 0, 0.23); + } + + .btn:disabled, + .cbi-button:disabled { + cursor: not-allowed; + pointer-events: none; + opacity: 0.5; + box-shadow: none; + } + + .alert-message [class="btn"], + .modal div[class="btn"], + .cbi-button-find, + .cbi-button-link, + .cbi-button-up, + .cbi-button-down, + .cbi-button-neutral, + .cbi-button[name="zero"], + .cbi-button[name="restart"], + .cbi-button[onclick="hide_empty(this)"] { + font-weight: 700; + background-color: #d4d4d4; + } + + .btn.primary, + .cbi-page-actions .cbi-button-save, + .cbi-page-actions .cbi-button-apply+.cbi-button-save, + .cbi-button-add, + .cbi-button-save, + .cbi-button-positive, + .cbi-button-link, + .cbi-button[value="Enable"], + .cbi-button[value="Scan"], + .cbi-button[value^="Back"], + .cbi-button-neutral[onclick="handleConfig(event)"] { + font-weight: 400; + color: #fff; + background-color: rgba(0, 229, 255, 0.47); + border-radius: 20px; + } + + .cbi-page-actions .cbi-button-apply, + .cbi-section-actions .cbi-button-edit, + .cbi-button-edit, + .cbi-button-apply, + .cbi-button-reload, + .cbi-button-action, + .cbi-button[value="Submit"], + .cbi-button[value="Upload"], + .cbi-button[value$="Apply"], + .cbi-button[onclick="addKey(event)"] { + font-weight: 400; + color: #fff; + background-color: rgba(0, 229, 255, 0.47); + border-radius: 20px; + } + + .btn.danger, + .cbi-section-remove>.cbi-button, + .cbi-button-remove, + .cbi-button-reset, + .cbi-button-negative, + .cbi-button[value="Stop"], + .cbi-button[value="Kill"], + .cbi-button[onclick="reboot(this)"], + .cbi-button-neutral[value="Restart"] { + font-weight: 400; + color: #fff; + background-color: rgba(255, 0, 0, 0.47); + border-radius: 20px; + } + + .btn[value="Dismiss"], + .cbi-button[value="Terminate"], + .cbi-button[value="Reset"], + .cbi-button[value="Disabled"], + .cbi-button[onclick^="iface_reconnect"], + .cbi-button[onclick="handleReset(event)"], + .cbi-button-neutral[value="Disable"] { + font-weight: 400; + color: #fff; + border: thin solid #eea236; + background-color: #f0ad4e; + } + + .cbi-button-success, + .cbi-button-download, + .cbi-button[name="backup"], + .cbi-button[value="Download"], + .cbi-button[value="Save mtdblock"] { + font-weight: 400; + color: #fff; + border: thin solid #4cae4c; + background-color: #5cb85c; + } + + .a-to-btn { + text-decoration: none; + } + + .cbi-value-field .cbi-button-add { + font-weight: 700; + margin: 9px 0 4px 3px; + padding: 1px 6px; + } + + .tabs { + border-bottom: 0; + background-color: #2222359a; + border-radius: 20px; + padding: 9px; + padding-bottom: 3px; + padding-top: 3px; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + } + + .tabs>li, + .cbi-tabmenu>li { + display: inline-block; + cursor: pointer; + padding: 0.4rem; + margin: 0.3rem; + align-items: center; + + } + + .tool_label_span { + color: aqua; + } + + .tabs>li { + padding-bottom: 0.4rem; + } + + .tabs>li[class~="active"], + .tabs>li:hover { + border-bottom-color: var(--main-color); + } + + .tabs>li:hover { + cursor: pointer; + border-bottom-color: #c9c9c9; + } + + .tabs>li>a, + .cbi-tabmenu>li>a { + text-decoration: none; + color: #ffffff; + padding: 0.6rem 0.9rem; + + } + + .tabs>li[class~="active"]>a { + color: var(--main-color); + } + + .cbi-tabmenu { + border-bottom: 0; + background-color: #2222359a; + border-radius: 20px; + padding: 9px; + padding-bottom: 3px; + padding-top: 3px; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + } + + .cbi-tabmenu>li:hover { + background-color: #474747; + border-radius: 20px; + + + } + + .cbi-tabmenu>li[class~="cbi-tab"] { + background-color: #ff94946a; + border-radius: 20px; + } + + .cbi-tabmenu>li[class~=data-tab=] { + color: #ffffff; + } + + [data-tab-title] { + overflow: hidden; + height: 0; + opacity: 0; + margin: 0; + padding: 0rem 1rem !important; + } + + [data-tab-active="true"] { + overflow: visible; + height: auto; + opacity: 1; + transition: opacity 0.25s ease-in; + margin: inherit !important; + } + + .cbi-section-node-tabbed { + margin-top: 0; + border-top: 0; + padding: 0; + } + + .cbi-value-field, + .cbi-value-description { + line-height: 1.25; + display: table-cell; + } + + .cbi-value-description { + font-size: small; + padding-top: 0.4rem; + opacity: 0.5; + color: #fff; + } + + .cbi-value-title { + display: table-cell; + float: left; + width: 23rem; + padding-top: 0.35rem; + padding-right: 2rem; + text-align: right; + word-wrap: break-word; + } + + .cbi-value { + display: inline-block; + width: 100%; + padding: 0.35rem 1rem 0.2rem; + } + + .cbi-value ul { + line-height: 1.25; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 25rem; + } + + #cbi-firewall-zone .cbi-input-select, + #cbi-network-switch_vlan .cbi-input-select { + min-width: 11rem; + } + + #cbi-network-switch_vlan .cbi-input-text { + max-width: 3rem; + } + + .cbi-input-invalid { + color: red; + border-bottom-color: red; + } + + .cbi-section-error { + font-weight: 700; + line-height: 1.42857143; + border: thin solid red; + border-radius: 3px; + background-color: #fce6e6; + margin: 18px; + padding: 6px; + } + + .cbi-section-error ul { + margin: 0 0 0 20px; + } + + .cbi-section-error ul li { + font-weight: 700; + color: red; + } + + .td[data-title]::before { + font-weight: 700; + display: none; + content: attr(data-title) ":\20"; + text-align: left; + white-space: nowrap; + padding: 0.25rem 0; + } + + .tr[data-title]::before, + .tr.cbi-section-table-titles.named::before { + font-weight: 700; + display: table-cell; + align-self: center; + flex: 1 1 5%; + content: attr(data-title) "\20"; + text-align: center; + vertical-align: middle; + white-space: normal; + word-wrap: break-word; + padding: 0.25rem; + } + + .cbi-rowstyle-2 .cbi-button-up, + .cbi-rowstyle-2 .cbi-button-down, + body:not(.Interfaces) .cbi-rowstyle-2:first-child {} + + .cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + width: auto !important; + } + + .td.cbi-section-actions { + text-align: right !important; + vertical-align: middle; + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 5px; + } + + .td.cbi-section-actions>* { + display: inline-flex; + } + + .td.cbi-section-actions>button { + display: block; + } + + .td.cbi-section-actions>*>*, + .td.cbi-section-actions>*>form>* { + margin: 0 5px; + } + + .td.cbi-section-actions>*>form { + display: inline-flex; + margin: 0; + } + + .cbi-dynlist { + line-height: 1.3; + flex-direction: column; + min-height: 30px; + cursor: text; + } + + .cbi-dynlist>.item { + position: relative; + max-width: 25rem; + margin-right: 2em; + pointer-events: none; + color: #666; + border-bottom: 2px solid rgba(0, 0, 0, 0.26); + outline: 0; + padding: 0.5em 0.25em 0.25em 0; + } + + .cbi-dynlist[name="sshkeys"]>.item { + max-width: none; + } + + .cbi-dynlist>.item::after { + font-weight: 700; + position: absolute; + right: -2em; + bottom: 0; + display: inline-flex; + min-height: 17px; + content: "\00D7"; + pointer-events: auto; + color: #fff; + border: thin solid #d43f3a; + background-color: #d9534f; + padding: 0 6px; + border-radius: 5px; + } + + .cbi-dynlist>.item>span { + white-space: normal; + word-break: break-word; + } + + .cbi-dynlist>.add-item { + display: inline-flex; + align-items: center; + width: 100%; + min-width: 16rem; + } + + .cbi-dynlist>.add-item:not([ondrop])>input { + overflow: hidden; + width: 100%; + min-width: 15rem; + white-space: nowrap; + text-overflow: ellipsis; + } + + .cbi-dynlist>.add-item[ondrop]>input { + min-width: 13rem; + } + + .cbi-dynlist, + .cbi-dropdown { + position: relative; + display: inline-flex; + padding: 0; + } + + .cbi-dropdown[placeholder*="select"] { + max-width: 25rem; + height: auto; + margin-top: -3px; + } + + .cbi-dropdown>ul { + display: flex; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + list-style: none; + outline: 0; + margin: 0 !important; + padding: 0; + } + + .cbi-dropdown>.open { + flex-basis: 15px; + } + + .cbi-dropdown>.open, + .cbi-dropdown>.more { + font-size: 1rem; + font-weight: 900; + line-height: 2; + display: flex; + flex-direction: column; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; + cursor: default; + text-align: center; + outline: 0; + padding: 0 0.25em; + } + + .cbi-dropdown.btn { + min-height: 1.8rem; + padding-top: 0px; + padding-bottom: 0px; + padding-right: 0px; + } + + .cbi-dropdown.btn>.open { + font-size: 0.8rem; + margin: 0 5px; + padding: 0px; + } + + .cbi-dropdown.btn>div { + margin: 0px; + } + + .cbi-dropdown>.more, + .cbi-dropdown>ul>li[placeholder] { + font-weight: 700; + display: none; + color: #777; + } + + .cbi-dropdown>ul>li { + display: none; + overflow: hidden; + align-items: center; + align-self: center; + flex-grow: 1; + flex-shrink: 1; + min-height: 20px; + white-space: nowrap; + text-overflow: ellipsis; + padding: 0.3rem; + } + + .cbi-dropdown>ul>li[display]:not([display="0"]) { + border-left: thin solid #ccc; + } + + .cbi-dropdown[empty]>ul { + max-width: 1px; + } + + .cbi-dropdown>ul>li>form { + display: none; + pointer-events: none; + margin: 0; + padding: 0; + } + + .cbi-dropdown>ul>li img { + margin-right: 0.25em; + vertical-align: middle; + } + + .cbi-dropdown>ul>li>form>input[type="checkbox"] { + height: auto; + margin: 0; + } + + .cbi-dropdown>ul>li input[type="text"] { + height: 20px; + } + + .cbi-dropdown[open]>ul.dropdown { + position: absolute; + z-index: 1100; + display: block; + width: auto; + min-width: 100%; + max-width: none; + max-height: 200px !important; + border: thin solid #918e8c; + background: #787878a8; + box-shadow: 0 0 4px #918e8c; + color: var(--main-menu-color); + } + + .cbi-dropdown>ul>li[display], + .cbi-dropdown[open]>ul.preview, + .cbi-dropdown[open]>ul.dropdown>li, + .cbi-dropdown[multiple]>ul>li>label, + .cbi-dropdown[multiple][open]>ul.dropdown>li, + .cbi-dropdown[multiple][more]>.more, + .cbi-dropdown[multiple][empty]>.more { + display: flex; + align-items: center; + flex-grow: 1; + justify-content: space-around; + } + + .cbi-dropdown[open]>ul.dropdown>li {} + + .cbi-dropdown[open]>ul.dropdown>li[selected] { + background: #b0d0f0; + } + + .cbi-dropdown[open]>ul.dropdown>li.focus { + background: linear-gradient(90deg, #a3c2e8 0%, #84aad9 100%); + } + + .cbi-dropdown[open]>ul.dropdown>li:last-child { + margin-bottom: 0; + } + + .cbi-dropdown[open]>ul.dropdown>li[unselectable] { + opacity: 0.7; + } + + .cbi-dropdown[disabled] { + pointer-events: none; + opacity: 0.6; + } + + .cbi-dropdown[open] .zonebadge { + width: auto; + } + + .cbi-progressbar { + border-radius: 15px; + overflow: hidden; + position: relative; + min-width: 170px; + height: 30px; + background: #11111d61; + margin: 6px 0; + } + + .cbi-progressbar title { + font-family: "Quicksand-Bold"; + letter-spacing: 5px; + text-align: center; + padding-bottom: 10px; + margin: 2rem 0 0; + color: #ffffff; + } + + .cbi-progressbar>div { + width: 0; + height: 100%; + transition: width 2s ease-in; + background: #0099cc; + padding: 0.5rem; + } + + .cbi-progressbar::after { + font-family: monospace; + font-size: 1.2em; + font-weight: 700; + font-size-adjust: 0.38; + line-height: normal; + position: absolute; + top: 50%; + transform: translateY(-50%); + right: 0; + left: 0; + overflow: hidden; + content: attr(title); + text-align: center; + white-space: pre; + text-overflow: ellipsis; + text-shadow: 0 0 2px #eee; + } + + #modal_overlay { + position: fixed; + z-index: 900; + top: 4rem; + right: 10000px; + bottom: 0; + left: -10000px; + overflow-y: scroll; + transition: opacity 0.125s ease-in; + opacity: 0; + background: rgba(0, 0, 0, 0.7); + -webkit-overflow-scrolling: touch; + } + + .modal { + display: flex; + align-items: center; + flex-wrap: wrap; + width: 90%; + min-width: 270px; + max-width: 600px; + min-height: 32px; + border-radius: 20px !important; + background: #8f8f8f75; + margin: 5em auto; + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + padding: 1em; + + } + + .modal>* { + line-height: normal; + flex-basis: 100%; + margin-bottom: 0.5em; + max-width: 100%; + } + + .modal>pre, + .modal>textarea { + font-size: 1rem; + font-size-adjust: 0.35; + overflow: auto; + margin-bottom: 0.5em; + cursor: auto; + white-space: pre-wrap; + color: #eee; + outline: 0; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + padding: 8.5px; + } + + .modal>h4 { + margin: 0.5em 0; + } + + .modal ul { + margin-left: 2.2em; + } + + .modal li { + list-style-type: square; + color: rgb(216, 216, 216); + } + + .modal p { + padding-left: 0.25rem; + word-break: break-word; + } + + .modal .label { + font-size: 0.6rem; + font-weight: 400; + cursor: default; + border-radius: 0; + padding: 0.1rem 0.3rem 0; + } + + .modal .label.warning { + background-color: #f0ad4e !important; + } + + .modal.cbi-modal { + max-width: 90%; + max-height: none; + } + + body.modal-overlay-active { + overflow: hidden; + height: 100vh; + } + + body.modal-overlay-active #modal_overlay { + right: 0; + left: 0; + opacity: 1; + } + + .spinning { + position: relative; + padding-left: 32px !important; + color: #fff; + } + + .spinning::before { + position: absolute; + font-size: medium; + font-style: "Quicksand-Bold"; + left: 8px; + width: 20px; + height: 20px; + content: ""; + animation: anim-rotate 2s infinite cubic-bezier(0.18, 0.89, 0.32, 1.28); + background: url(./icon/loading.svg) no-repeat center; + background-size: 20px; + } + } + + .left, + .left::before { + text-align: left !important; + } + + .right, + .right::before { + text-align: right !important; + } + + .top { + align-self: flex-start !important; + vertical-align: top !important; + } + + .bottom { + align-self: flex-end !important; + vertical-align: bottom !important; + } + + .inline { + display: inline; + } + + .cbi-page-actions { + padding-top: 1rem; + text-align: center; + } + + .cbi-page-actions>form[method="post"] { + display: inline-block; + } + + .th[data-type="button"], + .td[data-type="button"], + .th[data-type="fvalue"], + .td[data-type="fvalue"] { + flex: 1 1 2em; + text-align: center; + } + + .ifacebadge { + display: inline-flex; + background: #ffffff33; + padding: 0.5rem 0.8rem; + border-radius: 10px; + } + + td>.ifacebadge, + .td>.ifacebadge { + font-size: 0.8rem; + background-color: #000000; + border-radius: 10px; + } + + .ifacebadge>em, + .ifacebadge>img { + display: inline-block; + align-self: flex-start; + margin: 0 0.2rem; + } + + .ifacebadge>img+img { + margin: 0 0.2rem 0 0; + } + + .network-status-table .ifacebox { + flex-grow: 1; + margin: 0.5em; + } + + .network-status-table .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; + } + + .network-status-table .ifacebox-body>span { + flex: 10 10 auto; + height: 100%; + } + + .network-status-table .ifacebox-body .ifacebadge { + align-items: center; + flex: 1 1 auto; + min-width: 220px; + background-color: #11111d; + margin: 0.5em 0.25em 0; + padding: 0.5em; + border-radius: 10px; + } + + .cbi-input-textarea { + font-family: monospace; + width: 100%; + min-height: 14rem; + color: #000; + padding: 0.8rem; + } + + #syslog { + font-size: small; + overflow-y: hidden; + width: 100%; + min-height: 15rem; + resize: none; + color: #eee; + border: 0; + border-radius: 20px; + background-color: #10101057; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + padding: 1rem; + } + + #syslog:focus { + outline: 0; + } + + .uci-change-list { + font-family: monospace; + } + + .uci-change-list ins, + .uci-change-legend-label ins { + display: block; + text-decoration: none; + border: thin solid #0f0; + background-color: #cfc; + padding: 2px; + } + + .uci-change-list del, + .uci-change-legend-label del { + font-style: normal; + display: block; + text-decoration: none; + border: thin solid red; + background-color: #fcc; + padding: 2px; + } + + .uci-change-list var, + .uci-change-legend-label var { + font-style: normal; + display: block; + text-decoration: none; + border: thin solid #ccc; + background-color: #eee; + padding: 2px; + } + + .uci-change-list var ins, + .uci-change-list var del { + font-style: normal; + white-space: pre; + border: 0; + padding: 0; + } + + .uci-change-legend { + padding: 5px; + } + + .uci-change-legend-label { + float: left; + width: 150px; + color: #fff; + } + + .uci-change-legend-label>ins, + .uci-change-legend-label>del, + .uci-change-legend-label>var { + display: block; + float: left; + width: 10px; + height: 10px; + margin-right: 4px; + } + + .uci-change-legend-label var ins, + .uci-change-legend-label var del { + line-height: 0.4; + border: 0; + } + + #iwsvg, + #iwsvg2, + #bwsvg { + border: thin solid #d4d4d4 !important; + } + + .ifacebox { + line-height: 1.25; + display: inline-flex; + flex-direction: column; + min-width: 100px; + background-color: #54545450; + border-radius: 20px; + flex-wrap: nowrap; + align-content: center; + justify-content: flex-start; + align-items: center; + } + + div.ifacebox-head { + --zone-color-rgb: 144, 240, 144; + background-color: rgb(43, 79, 43); + } + + style attribute { + --zone-color-rgb: 144, 240, 144; + background-color: rgb(43, 79, 43); + } + + .ifacebox-head { + background: #939393; + padding: 0.25em; + color: #fff; + } + + .ifacebox-head.active { + background: var(--bar-bg); + } + + .ifacebox-body { + padding: 0.25em; + } + + .cbi-image-button { + margin-left: 0.5rem; + } + + .zonebadge { + display: inline-block; + padding: 0.2rem 0.5rem; + } + + .zonebadge .ifacebadge { + border: thin solid #6c6c6c; + margin: 0.1rem 0.2rem; + padding: 0.2rem 0.3rem; + } + + .zonebadge>input[type="text"] { + min-width: 10rem; + margin-top: 0.3rem; + padding: 0.16rem 1rem; + } + + .zonebadge>em, + .zonebadge>strong { + display: inline-block; + margin: 0 0.2rem; + } + + .cbi-value-field .cbi-input-checkbox, + .cbi-value-field .cbi-input-radio { + margin-top: 0.1rem; + } + + .cbi-value-field>ul>li .ifacebadge { + margin-top: -0.5rem; + margin-left: 0.4rem; + background-color: #eee; + } + + .cbi-section-table-row>.cbi-value-field .cbi-dropdown { + min-width: 7rem; + } + + .cbi-section-create { + display: inline-flex; + align-items: center; + margin: 0.5rem -3px; + } + + .cbi-section-create>* { + margin: 0.5rem; + } + + div.cbi-value var, + td.cbi-value-field var, + .td.cbi-value-field var { + font-style: italic; + color: #0069d6; + } + + .cbi-optionals { + border-top: thin solid #ccc; + padding: 1rem 1rem 0; + } + + .cbi-dropdown-container { + position: relative; + } + + .cbi-tooltip-container, + span[data-tooltip], + span[data-tooltip] .label { + cursor: help !important; + text-align: left !important; + font-size: 80% !important; + color: #fff !important; + } + + .cbi-tooltip { + position: absolute; + z-index: 1000; + left: -1000px; + transition: opacity 0.25s ease-out; + white-space: pre; + pointer-events: none; + opacity: 0; + border-radius: 20px; + background: #54545450; + box-shadow: 0 0 2px #444; + padding: 2px 5px; + -webkit-backdrop-filter: blur(20px); + backdrop-filter: blur(20px); + + } + + .cbi-tooltip-container:hover .cbi-tooltip { + left: auto; + transition: opacity 0.25s ease-in; + opacity: 1; + } + + .zonebadge .cbi-tooltip { + background: inherit; + margin: -1.5rem 0 0 -0.5rem; + padding: 0.25rem; + } + + .zonebadge-empty { + color: #404040; + background: repeating-linear-gradient(45deg, + rgba(204, 204, 204, 0.5), + rgba(204, 204, 204, 0.5) 5px, + rgba(255, 255, 255, 0.5) 5px, + rgba(255, 255, 255, 0.5) 10px); + } + + .zone-forwards { + display: flex; + min-width: 10rem; + } + + .zone-forwards>* { + flex: 1 1 45%; + } + + .zone-forwards>span { + flex-basis: 10%; + text-align: center; + padding: 0 0.25rem; + } + + .zone-forwards .zone-src, + .zone-forwards .zone-dest { + display: flex; + flex-direction: column; + } + + label>input[type="checkbox"], + label>input[type="radio"] { + position: relative; + top: 0.4rem; + right: 0.2rem; + vertical-align: bottom; + margin: 0; + } + + label[data-index][data-depends] { + padding-right: 2em; + } + + .darkMask { + position: fixed; + z-index: 99; + width: 100%; + height: 100%; + content: ""; + transition: opacity 400ms, visibility 400ms; + visibility: hidden; + opacity: 0; + background-color: #2222359a; + } + + #diag-rc-output>pre, + #command-rc-output>pre, + [data-page="admin-services-wol"] .notice code { + font-size: 1.2rem; + font-size-adjust: 0.35; + line-height: normal; + display: block; + overflow-y: hidden; + width: 100%; + white-space: pre; + color: #eee; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + padding: 8.5px; + } + + input[name="ping"], + input[name="traceroute"], + input[name="nslookup"] { + width: 80%; + } + + .node-main-login>.main fieldset { + display: inline; + overflow: hidden; + margin-bottom: 1rem; + border: 0; + background: none; + box-shadow: none; + padding: 0.5rem; + } + + .node-main-login>.main .cbi-value-title { + width: 9.5rem; + } + + .node-main-login>.main #maincontent { + text-align: center; + } + + .node-main-login>.main .container { + display: inline-block; + margin-top: 2rem !important; + text-align: left; + background-color: #2e2b2b00; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + padding: 1rem 3.5rem 2rem; + } + + .node-main-login>.main .cbi-value>* { + display: inline-block !important; + } + + .node-main-login>.main .cbi-input-text { + width: 100% !important; + min-width: 15rem; + } + + .node-status-overview>.main fieldset:nth-child(4) .td:nth-child(2), + .node-status-processes>.main .table .tr .td:nth-child(3) { + white-space: normal; + } + + [data-page="admin-system-reboot"] p { + padding-left: 2rem; + } + + [data-page="admin-system-reboot"] p>span { + position: relative; + top: 0.1rem; + left: 1rem; + } + + #cbi-samba [data-tab="template"] .cbi-value-title { + width: auto; + padding-bottom: 0.6rem; + } + + .controls>*>.btn:not([aria-label$="page"]) { + flex-grow: initial !important; + margin-top: 0.1rem; + } + + .controls>#pager>.btn[aria-label$="page"] { + font-size: 1.4rem; + font-weight: 700; + } + + .controls>*>label { + margin-bottom: 0.2rem; + } + + [data-page="admin-system-opkg"] div.btn { + display: inline; + padding: 0.3rem 0.6rem; + } + + [data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), + [data-page="admin-system-opkg"] #maincontent>.container { + margin-top: 2rem; + padding-top: 0.1rem; + } + + [data-page="admin-system-opkg"] #maincontent>.container { + margin: 2rem 2rem 1rem; + } + + .td.version, + .td.size { + white-space: normal !important; + word-break: break-word; + } + + .cbi-tabmenu+.cbi-section { + margin-top: 0; + } + + #cbi-wireless>#wifi_assoclist_table>.tr { + box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd; + } + + #cbi-wireless>#wifi_assoclist_table>.tr.placeholder>.td { + right: 33px; + bottom: 33px; + left: 33px; + border-top: thin solid #ddd !important; + } + + #cbi-wireless>#wifi_assoclist_table>.tr.table-titles { + box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd; + } + + #cbi-wireless>#wifi_assoclist_table>.tr.table-titles>.th { + border-bottom: thin solid #ddd; + box-shadow: 0 -1px 0 0 #ddd; + } + + #wifi_assoclist_table>.tr>.td[data-title="RX Rate / TX Rate"] { + width: 23rem; + } + + #iptables { + margin: 0; + } + + .Firewall form { + box-shadow: none; + margin: 2rem 2rem 0 0; + padding: 0; + } + + #cbi-firewall-redirect table *, + #cbi-network-switch_vlan table *, + #cbi-firewall-zone table * { + font-size: small; + } + + #cbi-firewall-redirect table input[type="text"], + #cbi-network-switch_vlan table input[type="text"], + #cbi-firewall-zone table input[type="text"] { + width: 5rem; + } + + #cbi-firewall-redirect table select, + #cbi-network-switch_vlan table select, + #cbi-firewall-zone table select { + min-width: 3.5rem; + } + + #cbi-network-switch_vlan .th, + #cbi-network-switch_vlan .td { + flex-basis: 12%; + } + + #applyreboot-container { + margin: 2rem; + } + + #applyreboot-section { + line-height: 300%; + margin: 2rem; + } + + .OpenVPN a { + line-height: initial !important; + } + + .commandbox { + width: 24% !important; + border-bottom: thin solid #ccc; + background: #eee; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), + 0 1px 2px rgba(0, 0, 0, 0.05); + margin: 10px 0 0 10px !important; + padding: 0.5rem 1rem; + } + + .commandbox h3 { + line-height: normal !important; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin: 6px 0 !important; + } + + .commandbox div { + left: auto !important; + } + + .commandbox code { + position: absolute; + overflow: hidden; + max-width: 60%; + margin-left: 4px; + white-space: nowrap; + text-overflow: ellipsis; + padding: 2px 3px; + } + + .commandbox code:hover { + overflow-y: auto; + max-height: 50px; + white-space: normal; + } + + .commandbox p:first-of-type { + margin-top: -6px; + } + + .commandbox p:nth-of-type(2) { + margin-top: 2px; + } + + #command-rc-output .alert-message { + line-height: 1.42857143; + position: absolute; + top: 40px; + right: 32px; + max-width: 40%; + animation: anim-fade-in 1.5s forwards; + word-break: break-word; + opacity: 0; + margin: 0; + } + + .table[width="100%"], + .th[width="100%"], + .td[width="100%"], + .cbi-section-table-row>.cbi-value-field .cbi-dropdown, + .cbi-section-table-row>.cbi-value-field .cbi-input-select, + .cbi-section-table-row>.cbi-value-field .cbi-input-text, + .cbi-section-table-row>.cbi-value-field .cbi-input-password, + .cbi-dropdown[open]>ul.dropdown>li>input.create-item-input:first-child:last-child, + .cbi-dropdown .zonebadge, + .node-main-login>.main>.main-right, + #cbi-firewall-zone .td, + #cbi-network-switch_vlan .td { + width: 100%; + min-width: 60px; + } + + .cbi-rowstyle-2 { + background-color: ; + } + + .pull-right, + .node-main-login>.main form>div:last-child { + float: right; + } + + .pull-left, + .cbi-page-actions .cbi-button-link:first-child { + float: left; + } + + #modemenu>li>a, + .label { + background-color: rgb(104, 104, 104); + color: #fff !important; + font-size: 0.8rem; + font-weight: 700; + text-decoration: none; + text-shadow: none; + text-transform: uppercase; + white-space: nowrap; + padding: 0.3rem 0.8rem; + border-radius: 10px; + } + + [data-indicator="poll-status"][data-style="active"] { + position: absolute; + right: 14px; + width: 32px; + height: 32px; + content: ""; + background: url(./icon/loading.svg) no-repeat; + text-indent: -9999px; + animation: anim-rotate 5s infinite ease-in-out; + background-size: 32px; + } + + [data-indicator="poll-status"][data-style="inactive"] { + position: absolute; + right: 14px; + width: 32px; + height: 32px; + content: ""; + background: url(./icon/pause.svg) no-repeat; + text-indent: -9999px; + background-size: 32px; + } + + + [data-indicator="uci-changes"][data-style="active"] { + position: absolute; + width: 32px; + height: 32px; + content: ""; + background: url(./icon/save.svg) no-repeat; + text-indent: -9999px; + background-size: 32px; + } + + #modemenu>li>a.active, + .notice { + background-color: rgb(66, 66, 66) !important; + } + + #xhr_poll_status, + .cbi-value-field>ul>li { + display: flex; + } + + .alert-message .btn, + .modal .btn { + padding: 0.3rem 0.6rem; + } + + .container .alert, + .container .alert-message, + .cbi-map-descr+fieldset { + margin-top: 1rem; + } + + .main>.main-left>.nav, + .cbi-value-field>ul>li>label { + margin-top: 0.5rem; + } + + .main>.main-left>.nav>li.active>a, + .main>.main-left>.nav>.slide>.slide-menu>.active>a { + color: #fff; + } + + .main>.main-left>.nav>li.active, + .main>.main-left>.nav>.slide>.slide-menu>.active { + + background-color: var(--submenu-bg-hover-active); + border-radius: 10px; + } + + .main>.main-left>.nav>.slide>ul, + .main>.main-left[style*="overflow: hidden"]>.nav>.slide>.menu::before, + .tr.placeholder .td[data-title]::before, + .cbi-dropdown>ul.preview, + .cbi-dropdown>ul>li .hide-close, + .cbi-dropdown[open]>ul.dropdown>li .hide-open, + .hidden, + .showSide, + .node-main-login>.main>.main-left, + [data-page^="admin-system-commands"] .panel-title, + [data-page^="command-cfg"] .mobile-hide, + [data-page^="command-cfg"] .showSide { + display: none; + } + + .main>.main-left>.nav>.slide.active>ul, + .cbi-dropdown[empty]>ul>li, + .cbi-dropdown[optional][open]>ul.dropdown>li[placeholder], + .cbi-dropdown[multiple][open]>ul.dropdown>li>form, + .node-main-login>.main .cbi-value, + #cbi-samba [data-tab="template"] .cbi-value-field, + #cbi-firewall-zone .table, + #cbi-network-switch_vlan .table { + display: block; + } + + .main>.main-left>.nav>li:hover, + .main>.main-left>.nav>.slide>.menu:hover, + .main>.main-left>.nav>.slide>.slide-menu>li:hover { + background: var(--submenu-bg-hover); + border-radius: 10px; + } + + table>tbody>tr>td, + table>tbody>tr>th, + table>tfoot>tr>td, + table>tfoot>tr>th, + table>thead>tr>td, + table>thead>tr>th, + .table>.tbody>.tr>.td, + .table>.tbody>.tr>.th, + .table>.tfoot>.tr>.td, + .table>.tfoot>.tr>.th, + .table>.thead>.tr>.td, + .table>.thead>.tr>.th, + .table>.tr>.td.cbi-value-field, + .table>.tr>.th.cbi-section-table-cell, + .uci-change-list var, + .uci-change-list del, + .uci-change-list ins, + .cbi-section-remove { + padding: 0.5rem; + } + + #cbi-wireless .td, + #cbi-network .tr:first-child>.td, + .table[width="100%"]>.tr:first-child>.td, + [data-page="admin-network-diagnostics"] .tr>.td, + .tr.table-titles>.th, + .tr.cbi-section-table-titles>.th, + #iwsvg, + [data-page="admin-status-realtime-bandwidth"] #bwsvg { + border-top: 0 !important; + } + + .cbi-section-table-row .td, + .center, + .center::before { + text-align: center !important; + } + + div>table>tbody>tr:nth-of-type(2n), + div>.table>.tr:nth-of-type(2n), + .cbi-section .cbi-section-remove:nth-of-type(2n), + .container>.cbi-section .cbi-section-node:nth-of-type(2n), + .cbi-section[id] .cbi-section-remove:nth-of-type(4n + 3), + .cbi-section[id] .cbi-section-node:nth-of-type(4n + 4), + .cbi-tabcontainer>.cbi-value:nth-of-type(2n), + .cbi-rowstyle-1 {} + + .cbi-dropdown>ul>li .hide-open, + .cbi-dropdown[open]>ul.dropdown>li .hide-close { + display: initial; + } + + .network-status-table, + .network-status-table .ifacebox-body>div { + display: flex; + flex-wrap: wrap; + } + + [data-page="admin-network-diagnostics"] .table, + .node-main-login .cbi-section { + box-shadow: none; + } + + @keyframes down { + from { + margin-left: 50%; + opacity: 0; + } + + to { + margin-left: 0%; + opacity: 1; + } + } + + @keyframes anim-rotate { + 0% { + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + -ms-transform: rotate(360deg); + transform: rotate(360deg); + } + } + + @media screen and (min-height: 585px) { + .node-main-login footer { + position: absolute; + bottom: 0; + width: 100%; + } + } + + @keyframes anim-fade-in { + 100% { + opacity: 1; + } + } + + @media all and (-ms-high-contrast: none) { + .main>.main-left>.nav>.slide>.menu::before { + top: 30.25%; + } + + .main>.main-left>.nav>li:last-child::before { + top: 20%; + } + + .showSide::before { + top: -12px; + } + } + + @media screen and (max-width: 1600px) { + header>.fill>.container { + display: flex; + align-items: center; + margin-top: 0; + } + + header>.fill>.container>#logo { + width: calc(13rem); + } + + .main>.main-left { + width: calc(0% + 13rem); + } + + .main>.main-right { + width: calc(100% - 13rem); + } + + .btn:not(button), + .cbi-button { + font-size: 0.8rem; + padding: 0.3rem 0.6rem; + position: relative; + /*bottom: -0.5rem;*/ + } + + .label, + [data-indicator] { + padding: 0.2rem 0.6rem; + } + + fieldset, + .cbi-section { + padding: 1rem; + } + + .cbi-value-title { + width: 15rem; + padding-right: 0.6rem; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 22rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 9rem; + } + + .cbi-input-textarea { + font-size: small; + } + + .node-admin-status>.main fieldset li>a { + padding: 0.3rem 0.6rem; + } + } + + @media screen and (max-width: 2000000000px) { + header { + height: 3.5rem; + } + + header>.fill>.container { + margin-top: 0.25rem; + cursor: default; + padding: 0.5rem 1rem; + } + + .main { + top: 3.5rem; + height: calc(100% - 3.5rem); + } + + .main>.main-left { + top: 4.3rem; + width: calc(0% + 13rem); + height: calc(100% - 3.5rem); + } + + .main>.main-right { + width: calc(100% - 13rem); + } + + .tabs>li>a, + .cbi-tabmenu>li>a { + padding: 0.2rem 0.5rem; + } + + .cbi-section>h3:first-child, + .panel-title { + font-size: 1.1rem; + padding-bottom: 1rem; + } + + table { + font-size: 0.7rem !important; + width: 100% !important; + } + + .table .cbi-input-text { + width: 100%; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 19rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 4rem; + } + + .main>.main-left>.nav>li, + .main>.main-left>.nav>li a, + .main>.main-left>.nav>.slide>.menu, + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { + font-size: 1rem; + color: #fff; + } + + .main>.main-left>.nav>.slide>.slide-menu>li>a { + font-size: 0.7rem; + color: #fff; + } + + #modal_overlay { + top: 3.5rem; + } + + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) { + display: block; + } + + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table), + [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table), + [data-page="admin-network-hosts"] .table, + [data-page="admin-network-routes"] .table { + overflow-y: visible; + } + + .commandbox { + width: 32% !important; + } + } + + @media screen and (max-width: 1152px) { + header>.fill>.container>.brand { + position: relative; + } + + html, + .main { + overflow-y: visible; + } + + .main>.loading>span { + top: 25%; + } + + .main>.main-left { + position: fixed; + z-index: 100; + visibility: hidden; + } + + .main>.main-right { + width: 100%; + } + + .showSide { + position: -webkit-sticky; + position: sticky; + top: 0rem; + display: inline-flex; + align-items: center; + height: 100%; + margin-right: 0.7rem; + cursor: pointer; + } + + body:not(.logged-in) .showSide { + visibility: hidden; + width: 0; + margin: 0; + } + + .cbi-value-title { + width: 12rem; + padding-right: 1rem; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"] { + width: 16rem; + min-width: 16rem; + color: rgb(255, 255, 255); + } + + .cbi-value input[type="password"], + .cbi-value input[name^="pw"], + .cbi-value input[data-update="change"]:nth-child(2) { + width: 13rem !important; + min-width: 13rem; + color: #fff; + } + + #diag-rc-output>pre, + #command-rc-output>pre, + [data-page="admin-services-wol"] .notice code { + font-size: 1rem; + } + + .Interfaces .table { + overflow-x: hidden; + } + + #packages.table { + display: grid; + } + + .tr { + display: flex; + flex-direction: row; + flex-wrap: wrap; + } + + .Overview .table[width="100%"]>.tr { + flex-wrap: nowrap; + } + + .tr.placeholder { + border-bottom: thin solid #ddd; + } + + .tr.placeholder>.td, + #cbi-firewall .tr>.td, + #cbi-network .tr:nth-child(2)>.td, + .cbi-section #wifi_assoclist_table .tr>.td { + border-top: 0; + } + + .th, + .td { + display: inline-block; + align-self: flex-start; + flex: 2 2 25%; + text-overflow: ellipsis; + word-wrap: break-word; + } + + .td select, + .td input[type="text"] { + width: 100%; + word-wrap: normal; + } + + .td [data-dynlist]>input, + .td input.cbi-input-password { + width: calc(100% - 1.5rem); + } + + .td[data-type="button"], + .td[data-type="fvalue"] { + flex: 1 1 12.5%; + text-align: left; + } + + .th.cbi-value-field, + .td.cbi-value-field, + .th.cbi-section-table-cell, + .td.cbi-section-table-cell { + flex-basis: auto; + padding-top: 1rem; + } + + .cbi-section-table-row { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + } + + .td.cbi-value-field, + .cbi-section-table-cell { + display: inline-block; + flex: 10 10 auto; + flex-basis: 50%; + text-align: center; + } + + .td.cbi-section-actions { + vertical-align: bottom; + } + + .tr[data-title]::before, + .tr.cbi-section-table-titles.named::before { + font-size: 0.9rem; + display: block; + flex: 1 1 100%; + border-bottom: thin solid rgba(0, 0, 0, 0.26); + background: #90c0e0; + } + + .cbi-button+.cbi-button { + margin-left: 0; + } + + .td.cbi-section-actions>*>*, + .td.cbi-section-actions>*>form>* { + margin: 2.1px 3px; + } + + .Firewall form { + position: static !important; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + margin: 0 0 2rem; + padding: 2rem; + } + + .Firewall form input { + width: 100% !important; + margin: 1rem 0 0; + } + + .Firewall .center, + .Firewall .center::before { + text-align: left !important; + } + + .commandbox { + width: 100% !important; + margin-left: 0 !important; + } + + .tr.table-titles, + .tr.cbi-section-table-titles, + .tr.cbi-section-table-descr { + display: none; + } + + .node-main-login>.main .cbi-value-title, + .td[data-title], + [data-page^="admin-status-realtime"] .td[id] { + text-align: left; + color: #ffffff; + } + + .table, + .td[data-title]::before { + display: block; + } + } + + @media screen and (max-width: 600px) { + header>.fill>.container>#logo { + padding: 1rem; + margin: 0; + position: absolute; + left: 50%; + top: 0; + width: 100px; + transform: translateX(-50%); + } + + header>.fill>.container>#logo>img { + width: 100%; + margin-top: 0; + } + + .cbi-progressbar::after { + font-size: 0.95em; + line-height: 1.5; + } + + fieldset, + .cbi-section { + margin: 1rem 0 0; + } + + } + + #maincontent>.container { + margin: 0 0.5rem 1.5rem; + } + + .main>.main-left>.nav>.slide>.menu, + .main>.main-left>.nav>li>[data-title="Logout"], + .main>.main-left>.nav>li>[data-title="iStore"] { + font-size: 1.1rem; + } + + .cbi-value-title { + display: block; + min-width: 0 !important; + text-align: left; + margin: 0.5rem 0; + } + + .cbi-value>.cbi-value-field { + display: inline-block; + } + + .tabs>li>a, + .cbi-tabmenu>li>a { + padding: 0.2rem 0.3rem; + } + + .cbi-page-actions>.cbi-button { + margin-top: 0.2rem; + } + + .node-main-login>.main .container { + margin: 2rem 1.2rem 1.5rem !important; + padding: 0.3rem 1.7rem 2rem 1.6rem; + } + + .node-main-login>.main .cbi-value { + padding: 0; + } + + .node-main-login>.main form>div:last-child { + margin-top: 2rem; + } + + .node-main-login>.main .cbi-value-title { + font-size: 1.2rem; + width: 100% !important; + } + + .node-main-login>.main fieldset { + margin: 0; + padding: 0.5rem; + } + + .commandbox p:first-of-type { + margin-top: -8px; + } + + #syslog, + #diag-rc-output>pre, + #command-rc-output>pre, + [data-page="admin-services-wol"] .notice code { + font-size: 0.8rem !important; + } + + h2 {} + + .cbi-section>h3:first-child, + .panel-title { + font-size: 1.2rem; + padding-bottom: 1rem; + } + + .node-system-packages>.main .cbi-value.cbi-value-last>div { + width: 100% !important; + } + + .th, + .td { + flex-basis: 50%; + color: #fff; + } + + .tr>.td[data-title="Sensor"] { + text-align: center; + } + + .tr>.td[data-title="Temperature"] { + text-align: center; + } + + .tr>.td[data-title="Hostname"] { + text-align: center; + } + + .tr>.td[data-title="IPv4 address"] { + text-align: center; + } + + .tr>.td[data-title="MAC address"] { + text-align: center; + } + + .tr>.td[data-title="Lease time remaining"] { + text-align: center; + } + + + .td.cbi-value-field { + flex-basis: 100%; + } + + .td.cbi-value-field[data-type="button"], + .td.cbi-value-field[data-type="fvalue"] { + flex-basis: 25%; + text-align: left; + } + + td>.ifacebadge, + .td>.ifacebadge { + font-size: 0.62rem; + } + + #cbi-wireless>#wifi_assoclist_table .td { + overflow: hidden; + } + + #cbi-wireless>.cbi-section-node .td, + .Interfaces .td.cbi-section-actions { + text-align: center !important; + } + + .cbi-modal { + padding: 0.5rem; + } + + .cbi-modal .cbi-value { + padding: 0 0 0.25rem; + } + + .cbi-modal [data-tab-title] { + padding: 0 0.25rem !important; + } + + [data-tab-title] { + padding: 0 0.5rem !important; + } + + body, + code { + font-size: 0.8rem; + } + + .main>.main-left>.nav>.slide>.slide-menu>li>a, + .tr[data-title]::before, + .tr.cbi-section-table-titles.named::before { + font-size: + } + + .cbi-value-title, + .cbi-value-description, + .cbi-value-field, + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .node-system-packages>.main .cbi-value .cbi-value-field input { + width: 30%; + color: #fff; + } + + .cbi-page-actions>div>input, + .mobile-hide, + [data-page="admin-status-processes"] .td[data-title="Hang Up"]::before, + [data-page="admin-status-processes"] .td[data-title="Terminate"]::before, + [data-page="admin-status-processes"] .td[data-title="Kill"]::before, + .hide-sm, + .hide-xs:not([data-title="MAC-Address"]) { + display: none; + } + + .tabs>li>a, + select, + input { + font-size: 0.9rem; + } + + @media screen and (min-width: 600px) { + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + + ::-webkit-scrollbar, + ::-webkit-scrollbar-corner { + background: transparent; + } + + ::-webkit-scrollbar-thumb { + background: #9e9e9e; + } + + ::-webkit-scrollbar-thumb:hover { + background: #757575; + } + + ::-webkit-scrollbar-thumb:active { + background: #424242; + } + } diff --git a/luci-theme-alpha/luasrc/gaya/icon/arrow.svg b/luci-theme-alpha/luasrc/gaya/icon/arrow.svg new file mode 100644 index 000000000..be864c5ac --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/luci-theme-alpha/luasrc/gaya/icon/loading.svg b/luci-theme-alpha/luasrc/gaya/icon/loading.svg new file mode 100644 index 000000000..0112b31a4 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/loading.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/logout.svg b/luci-theme-alpha/luasrc/gaya/icon/logout.svg new file mode 100644 index 000000000..78c0fe42b --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/logout.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/menu_icon.svg b/luci-theme-alpha/luasrc/gaya/icon/menu_icon.svg new file mode 100644 index 000000000..1833cee96 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/menu_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/interface.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/interface.png new file mode 100644 index 000000000..d5888cca9 Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/interface.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/modem.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/modem.png new file mode 100644 index 000000000..aa2d96a61 Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/modem.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/nas.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/nas.png new file mode 100644 index 000000000..de168033e Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/nas.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/neko.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/neko.png new file mode 100644 index 000000000..1fbab6bdd Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/neko.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/oc.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/oc.png new file mode 100644 index 000000000..7a7ded8b8 Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/oc.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/status.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/status.png new file mode 100644 index 000000000..1da03903e Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/status.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/navbar/terminal.png b/luci-theme-alpha/luasrc/gaya/icon/navbar/terminal.png new file mode 100644 index 000000000..4594e8c0c Binary files /dev/null and b/luci-theme-alpha/luasrc/gaya/icon/navbar/terminal.png differ diff --git a/luci-theme-alpha/luasrc/gaya/icon/pause.svg b/luci-theme-alpha/luasrc/gaya/icon/pause.svg new file mode 100644 index 000000000..862a712db --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/pause.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/save.svg b/luci-theme-alpha/luasrc/gaya/icon/save.svg new file mode 100644 index 000000000..690905dbd --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/save.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/app.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/app.svg new file mode 100644 index 000000000..366ace333 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/app.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/docker.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/docker.svg new file mode 100644 index 000000000..c28d199d9 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/docker.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/istore.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/istore.svg new file mode 100644 index 000000000..289c42094 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/istore.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/modem.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/modem.svg new file mode 100644 index 000000000..c270cbfe3 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/modem.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/nas.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/nas.svg new file mode 100644 index 000000000..273fadb71 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/nas.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/network.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/network.svg new file mode 100644 index 000000000..5131c1704 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/network.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/services.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/services.svg new file mode 100644 index 000000000..5280c990c --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/services.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/status.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/status.svg new file mode 100644 index 000000000..f1e3c2c8f --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/status.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/system.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/system.svg new file mode 100644 index 000000000..ba932d479 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/system.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/vpn.svg b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/vpn.svg new file mode 100644 index 000000000..0f48cba43 --- /dev/null +++ b/luci-theme-alpha/luasrc/gaya/icon/sidebar-icon/vpn.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/luci-theme-alpha/luasrc/style/brand.png b/luci-theme-alpha/luasrc/style/brand.png new file mode 100644 index 000000000..243457d8c Binary files /dev/null and b/luci-theme-alpha/luasrc/style/brand.png differ diff --git a/luci-theme-alpha/luasrc/style/catatan.txt b/luci-theme-alpha/luasrc/style/catatan.txt new file mode 100644 index 000000000..c74e132ee --- /dev/null +++ b/luci-theme-alpha/luasrc/style/catatan.txt @@ -0,0 +1 @@ +buat tambah login page disini diff --git a/luci-theme-alpha/luasrc/style/indo-wrt.png b/luci-theme-alpha/luasrc/style/indo-wrt.png new file mode 100644 index 000000000..fde99ef17 Binary files /dev/null and b/luci-theme-alpha/luasrc/style/indo-wrt.png differ diff --git a/luci-theme-alpha/luasrc/style/style.css b/luci-theme-alpha/luasrc/style/style.css new file mode 100644 index 000000000..a162c1051 --- /dev/null +++ b/luci-theme-alpha/luasrc/style/style.css @@ -0,0 +1,416 @@ +/*-------------------- +catatan usahakan untuk mengganti bg pakai format png, kalo jpg ganti aja di bagian body, sesuaikan aja nama formatnya +---------------------*/ +*, +*::before, +*::after { + box-sizing: border-box; +} + +body, +html { + height: 100%; + font-family: 'Segoe UI', Arial, Helvetica, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + height: 100%; + background-position: center; + background-repeat: no-repeat; + background-size: cover; + background-attachment: fixed; +} + + +/*-------------------- +Text +---------------------*/ + +h2, +h3 { + font-size: 16px; + letter-spacing: -1px; + line-height: 20px; +} + +h2 { + color: #fff; + text-align: center; +} + +h3 { + color: #032942; + text-align: right; +} + +/*-------------------- +Icons +---------------------*/ +.i { + width: 20px; + height: 20px; +} + +.i-login { + margin: 13px 0px 0px 15px; + position: relative; + float: left; + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCIgdmlld0JveD0iMCAwIDQxNi4yMjkgNDE2LjIyOSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDE2LjIyOSA0MTYuMjI5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPGc+CgkJPHBhdGggZD0iTTQwMy43MjksMjkuNjVINzEuODAyYy02LjkwMywwLTEyLjUsNS41OTctMTIuNSwxMi41djg2LjM2M2MwLDYuOTAzLDUuNTk3LDEyLjUsMTIuNSwxMi41czEyLjUtNS41OTcsMTIuNS0xMi41VjU0LjY1ICAgIGgzMDYuOTI3djMwNi45MjhIODQuMzAydi03My44NjFjMC02LjkwMy01LjU5Ny0xMi41LTEyLjUtMTIuNXMtMTIuNSw1LjU5Ny0xMi41LDEyLjV2ODYuMzYxYzAsNi45MDMsNS41OTcsMTIuNSwxMi41LDEyLjUgICAgaDMzMS45MjdjNi45MDIsMCwxMi41LTUuNTk3LDEyLjUtMTIuNVY0Mi4xNUM0MTYuMjI5LDM1LjI0Nyw0MTAuNjMxLDI5LjY1LDQwMy43MjksMjkuNjV6IiBmaWxsPSIjODczMTRlIi8+CgkJPHBhdGggZD0iTTE4NS40MTcsMjg3LjgxMWMwLDUuMDU3LDMuMDQ1LDkuNjEzLDcuNzE2LDExLjU1YzEuNTQ3LDAuNjQyLDMuMTcsMC45NSw0Ljc4MSwwLjk1YzMuMjUzLDAsNi40NTEtMS4yNyw4Ljg0Mi0zLjY2ICAgIGw3OS42OTctNzkuNjk3YzIuMzQ0LTIuMzQ0LDMuNjYtNS41MjMsMy42Ni04LjgzOWMwLTMuMzE2LTEuMzE2LTYuNDk1LTMuNjYtOC44MzlsLTc5LjY5Ny03OS42OTcgICAgYy0zLjU3NS0zLjU3NS04Ljk1MS00LjY0Ni0xMy42MjMtMi43MWMtNC42NzEsMS45MzYtNy43MTYsNi40OTMtNy43MTYsMTEuNTQ5djY3LjE5N0gxMi41Yy02LjkwMywwLTEyLjUsNS41OTctMTIuNSwxMi41ICAgIGMwLDYuOTAzLDUuNTk3LDEyLjUsMTIuNSwxMi41aDE3Mi45MTdWMjg3LjgxMUwxODUuNDE3LDI4Ny44MTF6IE0yMTAuNDE3LDE1OC41OTRsNDkuNTIxLDQ5LjUybC00OS41MjEsNDkuNTIxVjE1OC41OTR6IiBmaWxsPSIjODczMTRlIi8+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==); + background-size: 18px 18px; + background-repeat: no-repeat; + background-position: center; +} + +.i-more { + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCIgdmlld0JveD0iMCAwIDYxMiA2MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDYxMiA2MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGc+Cgk8ZyBpZD0ibW9yZSI+CgkJPGc+CgkJCTxwYXRoIGQ9Ik03Ni41LDIyOS41QzM0LjMsMjI5LjUsMCwyNjMuOCwwLDMwNnMzNC4zLDc2LjUsNzYuNSw3Ni41UzE1MywzNDguMiwxNTMsMzA2UzExOC43LDIyOS41LDc2LjUsMjI5LjV6IE03Ni41LDM0NC4yICAgICBjLTIxLjEsMC0zOC4yLTE3LjEwMS0zOC4yLTM4LjJjMC0yMS4xLDE3LjEtMzguMiwzOC4yLTM4LjJzMzguMiwxNy4xLDM4LjIsMzguMkMxMTQuNywzMjcuMSw5Ny42LDM0NC4yLDc2LjUsMzQ0LjJ6ICAgICAgTTUzNS41LDIyOS41Yy00Mi4yLDAtNzYuNSwzNC4zLTc2LjUsNzYuNXMzNC4zLDc2LjUsNzYuNSw3Ni41UzYxMiwzNDguMiw2MTIsMzA2UzU3Ny43LDIyOS41LDUzNS41LDIyOS41eiBNNTM1LjUsMzQ0LjIgICAgIGMtMjEuMSwwLTM4LjItMTcuMTAxLTM4LjItMzguMmMwLTIxLjEsMTcuMTAxLTM4LjIsMzguMi0zOC4yczM4LjIsMTcuMSwzOC4yLDM4LjJDNTczLjcsMzI3LjEsNTU2LjYsMzQ0LjIsNTM1LjUsMzQ0LjJ6ICAgICAgTTMwNiwyMjkuNWMtNDIuMiwwLTc2LjUsMzQuMy03Ni41LDc2LjVzMzQuMyw3Ni41LDc2LjUsNzYuNXM3Ni41LTM0LjMsNzYuNS03Ni41UzM0OC4yLDIyOS41LDMwNiwyMjkuNXogTTMwNiwzNDQuMiAgICAgYy0yMS4xLDAtMzguMi0xNy4xMDEtMzguMi0zOC4yYzAtMjEuMSwxNy4xLTM4LjIsMzguMi0zOC4yYzIxLjEsMCwzOC4yLDE3LjEsMzguMiwzOC4yQzM0NC4yLDMyNy4xLDMyNy4xLDM0NC4yLDMwNiwzNDQuMnoiIGZpbGw9IiNkZjQwNWEiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==); + background-size: 20px 20px; + background-repeat: no-repeat; + background-position: center; +} + +.i-save { + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCIgdmlld0JveD0iMCAwIDYxMiA2MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDYxMiA2MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGc+Cgk8ZyBpZD0idGljayI+CgkJPGc+CgkJCTxwYXRoIGQ9Ik00MzYuNywxOTYuNzAxTDI1OC4xODgsMzc1LjIxM2wtODIuODY5LTgyLjg4N2MtNy4yODctNy4yODctMTkuMTI1LTcuMjg3LTI2LjQxMiwwcy03LjI4NywxOS4xMjUsMCwyNi40MTIgICAgIGw5My44MDgsOTMuODA4YzAuNjMxLDAuODk5LDEuMDE0LDEuOTMyLDEuODE3LDIuNzM1YzMuNzY4LDMuNzY4LDguNzIxLDUuNTA4LDEzLjY1NSw1LjM3NGM0LjkzNCwwLjExNSw5LjkwNy0xLjYwNiwxMy42NzQtNS4zNzQgICAgIGMwLjgwMy0wLjgwNCwxLjE4Ni0xLjgzNiwxLjgxNy0yLjczNWwxODkuNDM0LTE4OS40MzNjNy4yODYtNy4yODcsNy4yODYtMTkuMTI1LDAtMjYuNDEyICAgICBDNDU1LjgwNiwxODkuNDE0LDQ0My45ODcsMTg5LjQxNCw0MzYuNywxOTYuNzAxeiBNMzA2LDBDMTM2Ljk5MiwwLDAsMTM2Ljk5MiwwLDMwNnMxMzYuOTkyLDMwNiwzMDYsMzA2ICAgICBjMTY4Ljk4OCwwLDMwNi0xMzYuOTkyLDMwNi0zMDZTNDc1LjAwOCwwLDMwNiwweiBNMzA2LDU3My43NUMxNTguMTI1LDU3My43NSwzOC4yNSw0NTMuODc1LDM4LjI1LDMwNiAgICAgQzM4LjI1LDE1OC4xMjUsMTU4LjEyNSwzOC4yNSwzMDYsMzguMjVjMTQ3Ljg3NSwwLDI2Ny43NSwxMTkuODc1LDI2Ny43NSwyNjcuNzVDNTczLjc1LDQ1My44NzUsNDUzLjg3NSw1NzMuNzUsMzA2LDU3My43NXoiIGZpbGw9IiMyMGMxOTgiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+Cg==); + background-size: 20px 20px; + background-repeat: no-repeat; + background-position: center; +} + +.i-warning { + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTguMS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMi44MTYgNjEyLjgxNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjEyLjgxNiA2MTIuODE2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCI+CjxnPgoJPHBhdGggZD0iTTMwNi40MDgsMEMxMzcuMzY4LDAsMC4zNzEsMTM2Ljk5NywwLjM3MSwzMDYuMDM3czEzNi45OTcsMzA2Ljc3OSwzMDYuMDM3LDMwNi43NzlzMzA2LjAzNy0xMzcuODEzLDMwNi4wMzctMzA2LjAzNyAgIEM2MTIuNDQ1LDEzNy43MzksNDc1LjQ0OCwwLDMwNi40MDgsMHogTTMwNi40MDgsNTgzLjE0N2MtMTUyLjIwMywwLTI3Ni4zNjgtMTI0LjE2NS0yNzYuMzY4LTI3Ni4zNjggICBTMTU0LjIwNSwyOS41OTUsMzA2LjQwOCwyOS41OTVTNTgyLjc3NiwxNTMuNzYsNTgyLjc3NiwzMDYuNzc5UzQ1OC42MTEsNTgzLjE0NywzMDYuNDA4LDU4My4xNDd6IE0zMjEuNjEzLDQzMS43NiAgIGMwLDguODI3LTcuMTk1LDE2LjAyMS0xNi4wMjEsMTYuMDIxYy04LjgyNywwLTE2LjAyMS03LjE5NS0xNi4wMjEtMTYuMDIxYzAtOC44MjcsNy4xOTUtMTYuMDIxLDE2LjAyMS0xNi4wMjEgICBTMzIxLjYxMyw0MjIuOTM0LDMyMS42MTMsNDMxLjc2eiBNMjkwLjM4NywzNTMuMjExdi0xODAuMjRjMC04LjAxMSw2LjM3OS0xNC4zOSwxNC4zOS0xNC4zOWM4LjAxMSwwLDE0LjM5LDYuMzc5LDE0LjM5LDE0LjM5ICAgdjE4MC4yNGMwLDguMDExLTYuMzc5LDE0LjM5LTE0LjM5LDE0LjM5QzI5Ni43NjYsMzY4LjQ5MSwyOTAuMzg3LDM2MS4yMjIsMjkwLjM4NywzNTMuMjExeiIgZmlsbD0iI2Y1ZDg3OCIvPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=); + background-size: 20px 20px; + background-repeat: no-repeat; + background-position: center; +} + +.i-close { + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTguMS4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMi40NDUgNjEyLjQ0NSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjEyLjQ0NSA2MTIuNDQ1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCI+CjxnPgoJPHBhdGggZD0iTTUyMi42NDIsODkuODA0QzQ2NC45LDMyLjA2MiwzODguMDExLDAsMzA2LjIyMywwUzE0Ny41NDUsMzIuMDYyLDg5LjgwNCw4OS44MDQgICBjLTExOS40MTYsMTE5LjQxNi0xMTkuNDE2LDMxMy40MjIsMCw0MzIuODM4YzU3Ljc0MSw1Ny43NDEsMTM0LjYzMSw4OS44MDQsMjE2LjQxOSw4OS44MDRzMTU4LjY3OC0zMi4wNjIsMjE2LjQxOS04OS44MDQgICBDNjQyLjA1OCw0MDMuMjI1LDY0Mi4wNTgsMjA5LjIyLDUyMi42NDIsODkuODA0eiBNNTAxLjc4Nyw1MDEuNzg3Yy01Mi4xMDEsNTIuMTAxLTEyMS43OTEsODAuOTcyLTE5NS41NjQsODAuOTcyICAgcy0xNDMuNDYzLTI4Ljg3MS0xOTUuNTY0LTgwLjk3MlMyOS42ODcsMzc5Ljk5NSwyOS42ODcsMzA2LjIyM3MyOC44NzEtMTQzLjQ2Myw4MC45NzItMTk1LjU2NHMxMjEuODY2LTgwLjk3MiwxOTUuNTY0LTgwLjk3MiAgIHMxNDMuNDYzLDI4Ljg3MSwxOTUuNTY0LDgwLjk3MnM4MC45NzIsMTIxLjg2Niw4MC45NzIsMTk1LjU2NFM1NTMuODg3LDQ0OS42ODYsNTAxLjc4Nyw1MDEuNzg3eiBNMzk5LjIxOCwyMzQuODk5bC03NC41MTUsNzQuNTE1ICAgbDc0LjUxNSw3NC41MTVjNS42NDEsNS42NDEsNS42NDEsMTUuMjE1LDAsMjAuODU1Yy0zLjE5MSwzLjE5MS02LjM4Myw0LjAwOC0xMC4zOTEsNC4wMDhjLTQuMDA4LDAtNy4xOTktMS42MzMtMTAuMzktNC4wMDggICBsLTc0LjU4OS03NC41MTVsLTc0LjU4OSw3NC41MTVjLTMuMTkxLDMuMTkxLTYuMzgzLDQuMDA4LTEwLjM5LDQuMDA4cy03LjE5OS0xLjYzMy0xMC4zOS00LjAwOCAgIGMtNS42NDEtNS42NDEtNS42NDEtMTUuMjE1LDAtMjAuODU1bDc0LjUxNS03NC41MTVsLTc0LjUxNS03NC41MTVjLTUuNjQxLTUuNjQxLTUuNjQxLTE1LjIxNSwwLTIwLjg1NSAgIGM1LjY0MS01LjY0MSwxNS4yMTUtNS42NDEsMjAuODU1LDBsNzQuNTE1LDc0LjUxNWw3NC41MTUtNzQuNTE1YzUuNjQxLTUuNjQxLDE1LjIxNS01LjY0MSwyMC44NTUsMCAgIEM0MDQuODU4LDIxOS42ODUsNDA0Ljg1OCwyMjguNDQyLDM5OS4yMTgsMjM0Ljg5OXoiIGZpbGw9IiNmNTVhNGUiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K); + background-size: 20px 20px; + background-repeat: no-repeat; + background-position: center; +} + +.i-left { + background-image: url(data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjY0cHgiIGhlaWdodD0iNjRweCIgdmlld0JveD0iMCAwIDQxNC4yOTggNDE0LjI5OSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDE0LjI5OCA0MTQuMjk5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZD0iTTMuNjYzLDQxMC42MzdjMi40NDEsMi40NCw1LjY0LDMuNjYxLDguODM5LDMuNjYxYzMuMTk5LDAsNi4zOTgtMS4yMjEsOC44MzktMy42NjFsMTg1LjgwOS0xODUuODFsMTg1LjgxLDE4NS44MTEgICBjMi40NCwyLjQ0LDUuNjQxLDMuNjYxLDguODQsMy42NjFjMy4xOTgsMCw2LjM5Ny0xLjIyMSw4LjgzOS0zLjY2MWM0Ljg4MS00Ljg4MSw0Ljg4MS0xMi43OTYsMC0xNy42NzlsLTE4NS44MTEtMTg1LjgxICAgbDE4NS44MTEtMTg1LjgxYzQuODgxLTQuODgyLDQuODgxLTEyLjc5NiwwLTE3LjY3OGMtNC44ODItNC44ODItMTIuNzk2LTQuODgyLTE3LjY3OSwwbC0xODUuODEsMTg1LjgxTDIxLjM0LDMuNjYzICAgYy00Ljg4Mi00Ljg4Mi0xMi43OTYtNC44ODItMTcuNjc4LDBjLTQuODgyLDQuODgxLTQuODgyLDEyLjc5NiwwLDE3LjY3OGwxODUuODEsMTg1LjgwOUwzLjY2MywzOTIuOTU5ICAgQy0xLjIxOSwzOTcuODQxLTEuMjE5LDQwNS43NTYsMy42NjMsNDEwLjYzN3oiIGZpbGw9IiM4NzMxNGUiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K); + background-size: 16px 16px; + background-repeat: no-repeat; + background-position: center; +} + +/*-------------------- +Login Box +---------------------*/ + +.box { + width: 330px; + position: absolute; + top: 50%; + left: 50%; + + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.box-form { + width: 320px; + position: relative; + z-index: 1; +} + +.box-login-tab { + width: 50%; + height: 40px; + background: #00000044; + position: relative; + float: left; + z-index: 1; + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; + + -webkit-transform: perspective(5px) rotateX(0.93deg) translateZ(-1px); + transform: perspective(5px) rotateX(0.93deg) translateZ(-1px); + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + + -webkit-box-shadow: 15px -15px 30px rgba(0, 0, 0, 0.32); + -moz-box-shadow: 15px -15px 30px rgba(0, 0, 0, 0.32); + box-shadow: 15px -15px 30px rgba(0, 0, 0, 0.32); +} + +.box-login-title { + width: 35%; + height: 40px; + position: absolute; + float: left; + z-index: 2; +} + +.box-login { + position: relative; + top: -4px; + width: 320px; + background: #00000044; + text-align: center; + overflow: hidden; + z-index: 2; + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + -webkit-border-radius: 20px: -moz-border-radius=20px; + border-radius: 20px; + -moz-box-shadow: 15px 30px 30px rgba(0, 0, 0, 0.32); + box-shadow: 15px 30px 30px rgba(0, 0, 0, 0.32); +} + +.box-info { + width: 260px; + top: 60px; + position: absolute; + right: -5px; + padding: 15px 15px 15px 30px; + background-color: rgba(255, 255, 255, 0.6); + border: 1px solid rgba(255, 255, 255, 0.2); + z-index: 0; + + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + + -webkit-box-shadow: 15px 30px 30px rgba(0, 0, 0, 0.32); + -moz-box-shadow: 15px 30px 30px rgba(0, 0, 0, 0.32); + box-shadow: 15px 30px 30px rgba(0, 0, 0, 0.32); +} + +.line-wh { + width: 100%; + height: 1px; + top: 0px; + margin: 12px auto; + position: relative; + border-top: 1px solid rgba(255, 255, 255, 0.3); +} + +/*-------------------- +Form +---------------------*/ + +a { + text-decoration: none; +} + +button:focus { + outline: 0; +} + +.b { + height: 24px; + line-height: 24px; + background-color: transparent; + border: none; + cursor: pointer; +} + +.b-form { + opacity: 0.5; + margin: 10px 20px; + float: right; +} + +.b-info { + opacity: 0.5; + float: left; +} + +.b-form:hover, +.b-info:hover { + opacity: 1; +} + +.b-support, +.b-cta { + width: 100%; + padding: 0px 15px; + font-family: 'Quicksand', sans-serif; + font-weight: 700; + letter-spacing: -1px; + font-size: 16px; + line-height: 32px; + cursor: pointer; + + -webkit-border-radius: 16px; + -moz-border-radius: 16px; + border-radius: 16px; +} + +.b-support { + border: #87314e 1px solid; + background-color: transparent; + color: #87314e; + margin: 6px 0; +} + +.b-cta { + border: #df405a 1px solid; + background-color: #df405a; + color: #fff; +} + +.b-support:hover, +.b-cta:hover { + color: #fff; + background-color: #87314e; + border: #87314e 1px solid; +} + +.fieldset-body { + display: table; +} + +.fieldset-body p { + width: 100%; + display: inline-table; + padding: 5px 20px; + margin-bottom: 2px; +} + +label { + float: left; + width: 100%; + top: 0px; + color: #fff; + font-size: 13px; + font-weight: 700; + text-align: center; + line-height: 2.5; +} + +label.checkbox { + float: left; + padding: 5px 20px; + line-height: 1.7; +} + +input[type=text], +input[type=password] { + width: auto; + height: 32px; + padding: 0px 10px; + background-color: rgb(0 0 0 / 28%); + border: none; + display: inline; + color: #bdbdbd; + font-size: 16px; + font-weight: 400; + float: none; + border-radius: 10px; +} + +input[type=text]:focus, +input[type=password]:focus { + background-color: #f8f8c6; + outline: none; +} + +input[type=submit] { + width: 100%; + height: 48px; + margin-top: 24px; + padding: 0px 20px; + font-family: 'Segoe UI', Arial, Helvetica, sans-serif; + font-weight: 700; + font-size: 18px; + color: #fff; + line-height: 40px; + text-align: center; + background-color: #0c5091; + border: 1px #075fa7 solid; + opacity: 1; + cursor: pointer; +} + +input[type=submit]:hover { + background-color: #df405a; + border: 1px #df405a solid; +} + +input[type=submit]:focus { + outline: none; +} + +p.field span.i { + width: 24px; + height: 24px; + float: right; + position: relative; + margin-top: -26px; + right: 2px; + z-index: 2; + display: none; + + -webkit-animation: bounceIn 0.6s linear; + -moz-animation: bounceIn 0.6s linear; + -o-animation: bounceIn 0.6s linear; + animation: bounceIn 0.6s linear; +} + +/*-------------------- +Transitions +---------------------*/ + +.box-form, +.box-info, +.b, +.b-support, +.b-cta, +input[type=submit], +p.field span.i { + + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + -ms-transition: all 0.3s; + -o-transition: all 0.3s; + transition: all 0.3s; +} + +/*-------------------- +Credits +---------------------*/ + +.icon-credits { + width: 100%; + position: absolute; + bottom: 4px; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, sans-serif; + font-size: 12px; + color: rgba(255, 255, 255, 0.1); + text-align: center; + z-index: -1; +} + +img.tengah { + display: block; + margin-left: auto; + margin-right: auto; + text-align: center; + padding: 20px; + text-decoration: none; + width: 200px; +} + +img.bawah { + position: absolute; + bottom: 0; + left: 50%; + transform: translateX(-50%); + padding: 2rem; +} + +.icon-credits a { + text-decoration: none; + color: rgba(255, 255, 255, 0.2); +} \ No newline at end of file diff --git a/luci-theme-alpha/mobileview1.png b/luci-theme-alpha/mobileview1.png new file mode 100644 index 000000000..b4027a2a5 Binary files /dev/null and b/luci-theme-alpha/mobileview1.png differ diff --git a/luci-theme-alpha/mobileview2.png b/luci-theme-alpha/mobileview2.png new file mode 100644 index 000000000..cc7a2e59c Binary files /dev/null and b/luci-theme-alpha/mobileview2.png differ diff --git a/luci-theme-alpha/mobileview3.png b/luci-theme-alpha/mobileview3.png new file mode 100644 index 000000000..0bfac0c98 Binary files /dev/null and b/luci-theme-alpha/mobileview3.png differ diff --git a/luci-theme-alpha/root/etc/config/alpha b/luci-theme-alpha/root/etc/config/alpha new file mode 100644 index 000000000..4e9a19522 --- /dev/null +++ b/luci-theme-alpha/root/etc/config/alpha @@ -0,0 +1,7 @@ + +config alpha 'config' + option nav_01 '/cgi-bin/luci/admin/status/overview' + option nav_02 '/cgi-bin/luci/admin/services/ttyd' + option nav_03 '/cgi-bin/luci/admin/network/network' + option blur '20' + option color '#2222359a' diff --git a/luci-theme-alpha/ss1.png b/luci-theme-alpha/ss1.png new file mode 100644 index 000000000..075f22d11 Binary files /dev/null and b/luci-theme-alpha/ss1.png differ diff --git a/luci-theme-alpha/ss2.png b/luci-theme-alpha/ss2.png new file mode 100644 index 000000000..d871e9e09 Binary files /dev/null and b/luci-theme-alpha/ss2.png differ diff --git a/luci-theme-alpha/ss3.png b/luci-theme-alpha/ss3.png new file mode 100644 index 000000000..542ec2e5e Binary files /dev/null and b/luci-theme-alpha/ss3.png differ diff --git a/luci-theme-alpha/template/footer.htm b/luci-theme-alpha/template/footer.htm new file mode 100644 index 000000000..0166861db --- /dev/null +++ b/luci-theme-alpha/template/footer.htm @@ -0,0 +1,108 @@ +<%# + Alpha os is made from me for all .. especially for indo wrt members and fan of OpenWrt or DBAI Community + luci-theme-alpha + Copyright 2024 derisamedia + Have a bug? Please create an issue here on GitHub! + + luci-theme-material + Copyright 2015 Lutty Yang + + luci-theme-bootstrap: + Copyright 2008 Steven Barth + Copyright 2008 Jo-Philipp Wich + Copyright 2012 David Menting + + MUI: + https://github.com/muicss/mui + + Licensed to the public under the Apache License 2.0 +-%> +<% +local ver = require "luci.version" +local uci = require "luci.model.uci".cursor() +local config = uci:get_all("alpha", "config") +local icon = { + ['/cgi-bin/luci/admin/status/overview'] = '/gaya/icon/navbar/status.png', + ['/cgi-bin/luci/admin/services/ttyd'] = '/gaya/icon/navbar/terminal.png', + ['/cgi-bin/luci/admin/services/openclash'] = '/gaya/icon/navbar/oc.png', + ['/cgi-bin/luci/admin/nas/tinyfm'] = '/gaya/icon/navbar/nas.png', + ['/cgi-bin/luci/admin/modem/main'] = '/gaya/icon/navbar/modem.png', + ['/cgi-bin/luci/admin/network/network'] = '/gaya/icon/navbar/interface.png', + ['/cgi-bin/luci/admin/services/neko'] = '/gaya/icon/navbar/neko.png' +} + +local function getLink(nav) + local link = config[nav] + return (link and link ~= "none") and link or nil +end + +local num_links = 0 +for i = 1, 6 do + local nav_key = 'nav_0' .. i + local link = getLink(nav_key) + if link then + num_links = num_links + 1 + end +end + +local link_width = string.format("calc(100%% / %d)", num_links) +local blur_value = tonumber(config.blur) +local link_blur = string.format("blur(%dpx)", blur_value) +local background_color = config.color +%> + + + +
    + +
    + + +
    + + + + diff --git a/luci-theme-alpha/template/header.htm b/luci-theme-alpha/template/header.htm new file mode 100644 index 000000000..53e5aac9f --- /dev/null +++ b/luci-theme-alpha/template/header.htm @@ -0,0 +1,96 @@ +<%# + Alpha os is made from me for all .. especially for indo wrt members and fan of OpenWrt or DBAI Community + luci-theme-alpha + Copyright 2022 derisamedia + Have a bug? Please create an issue here on GitHub! + + luci-theme-material + Copyright 2015-2017 Lutty Yang + + luci-theme-bootstrap: + Copyright 2008 Steven Barth + Copyright 2008-2016 Jo-Philipp Wich + Copyright 2012 David Menting + + MUI: + https://github.com/muicss/mui + + Licensed to the public under the Apache License 2.0 +-%> + +<% + local sys = require "luci.sys" + local util = require "luci.util" + local http = require "luci.http" + local disp = require "luci.dispatcher" + local ver = require "luci.version" + + local boardinfo = util.ubus("system", "board") or { } + + local node = disp.context.dispatched + local path = table.concat(disp.context.path, "-") + + http.prepare_content("text/html; charset=UTF-8") +-%> + + + + + + + + + + + - LuCI"> + - LuCI"> + + +<% if node and node.css then %> + +<% end -%> + + +<%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI +<% if css then %> +<% end -%> + +node-<%= path %><% else %>node-main-login<% end %>" data-page="<%= pcdata(path) %>" style="background-image:url('/luci-static/alpha/background/dashboard.png')"> +
    +
    +
    + +
    +
    + Keluar +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") and path ~= "admin-system-admin-password" then -%> + <%- end -%> + + + diff --git a/luci-theme-alpha/template/sysauth.htm b/luci-theme-alpha/template/sysauth.htm new file mode 100644 index 000000000..44bda4740 --- /dev/null +++ b/luci-theme-alpha/template/sysauth.htm @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + +Alpha - Login Dulu + + + +
    +
    +
    + + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    + + + + + \ No newline at end of file diff --git a/luci-theme-argon/LICENSE b/luci-theme-argon/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/luci-theme-argon/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/luci-theme-argon/Makefile b/luci-theme-argon/Makefile new file mode 100644 index 000000000..89b7966ec --- /dev/null +++ b/luci-theme-argon/Makefile @@ -0,0 +1,18 @@ +# +# Copyright (C) 2008-2019 Jerrykuku +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Argon Theme +LUCI_DEPENDS:=+curl +jsonfilter +PKG_VERSION:=2.3.1 +PKG_RELEASE:=20230420 + +CONFIG_LUCI_CSSTIDY:= + +include $(TOPDIR)/feeds/luci/luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/luci-theme-argon/README.md b/luci-theme-argon/README.md new file mode 100644 index 000000000..983703cda --- /dev/null +++ b/luci-theme-argon/README.md @@ -0,0 +1,157 @@ + + +[license]: /LICENSE +[license-badge]: https://img.shields.io/github/license/jerrykuku/luci-theme-argon?style=flat-square&a=1 +[prs]: https://github.com/jerrykuku/luci-theme-argon/pulls +[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square +[issues]: https://github.com/jerrykuku/luci-theme-argon/issues/new +[issues-badge]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg?style=flat-square +[release]: https://github.com/jerrykuku/luci-theme-argon/releases +[release-badge]: https://img.shields.io/github/v/release/jerrykuku/luci-theme-argon?include_prereleases&style=flat-square +[download]: https://github.com/jerrykuku/luci-theme-argon/releases +[download-badge]: https://img.shields.io/github/downloads/jerrykuku/luci-theme-argon/total?style=flat-square +[contact]: https://t.me/jerryk6 +[contact-badge]: https://img.shields.io/badge/Contact-telegram-blue?style=flat-square +[en-us-link]: /README.md +[zh-cn-link]: /README_ZH.md +[en-us-release-log]: /RELEASE.md +[zh-cn-release-log]: /RELEASE_ZH.md +[config-link]: https://github.com/jerrykuku/luci-app-argon-config/releases +[lede]: https://github.com/coolsnowwolf/lede +[official]: https://github.com/openwrt/openwrt +[immortalwrt]: https://github.com/immortalwrt/immortalwrt + +
    + + +# A brand new OpenWrt LuCI theme + +Argon is **a clean and tidy OpenWrt LuCI theme** that allows
    +users to customize their login interface with images or videos. +It also supports automatic and manual switching between light and dark modes. + +[![license][license-badge]][license] +[![prs][prs-badge]][prs] +[![issues][issues-badge]][issues] +[![release][release-badge]][release] +[![download][download-badge]][download] +[![contact][contact-badge]][contact] + +**English** | +[简体中文][zh-cn-link] + +[Key Features](#key-features) • +[Branch](#branch-introduction) • +[Version History](#version-history) • +[Getting started](#getting-started) • +[Screenshots](#screenshots) • +[Contributors](#contributors) • +[Credits](#credits) + + +
    + +## Key Features + +- Clean Layout. +- Adapted to mobile display. +- Customizable theme colors. +- Support for using Bing images as login background. +- Support for custom uploading of images or videos as login background. +- Automatically switch between light and dark modes with the system, and can also be set to a fixed mode. +- Settings plugin with extensions [luci-app-argon-config][config-link] + +## Branch Introduction + +There are currently two main branches that are adapted to different versions of the **OpenWrt** source code. +The table below will provide a detailed introduction: + +| Branch | Version | Description | Matching source | +| ------ | ------- | ---------------------------------- | --------------------------------------------------------- | +| master | v2.x.x | Support the latest version of LuCI | [Official OpenWrt][official] • [ImmortalWrt][immortalwrt] | +| 18.06 | v1.x.x | Support the 18.06 version of LuCI | [Lean's LEDE][lede] | + +## Version History + +The latest version is v2.3.1 [Click here][en-us-release-log] to view the full version history record. + +## Getting started + +### Build for Lean's LEDE project + +```bash +cd lede/package/lean +rm -rf luci-theme-argon +git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git luci-theme-argon +make menuconfig #choose LUCI->Theme->Luci-theme-argon +make -j1 V=s +``` + +### Build for OpenWrt official SnapShots and ImmortalWrt + +```bash +cd openwrt/package +git clone https://github.com/jerrykuku/luci-theme-argon.git +make menuconfig #choose LUCI->Theme->Luci-theme-argon +make -j1 V=s +``` + +### Install for LuCI 18.06 ( Lean's LEDE ) + +```bash +wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v1.8.2/luci-theme-argon_1.8.2-20230609_all.ipk +opkg install luci-theme-argon*.ipk +``` + +### Install for OpenWrt official SnapShots and ImmortalWrt + +```bash +opkg install luci-compat +opkg install luci-lib-ipkg +wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.3.1/luci-theme-argon_2.3.1_all.ipk +opkg install luci-theme-argon*.ipk +``` + +### Install luci-app-argon-config + +```bash +wget --no-check-certificate https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.9/luci-app-argon-config_0.9_all.ipk +opkg install luci-app-argon-config*.ipk +``` + +## Notice + +- Chrome browser is highly recommended. There are some new css3 features used in this theme, currently only Chrome has the best compatibility. +- Microsoft has officially retired Internet Explorer, RIP IE🙏Currently, the mainline version of the IE series has bugs that need to be addressed. +- FireFox does not enable the backdrop-filter by default, [see here](https://developer.mozilla.org/zh-CN/docs/Web/CSS/backdrop-filter) for the opening method. + +## Screenshots + +![desktop](/Screenshots/screenshot_pc.jpg) +![mobile](/Screenshots/screenshot_phone.jpg) + +## Contributors + + + + + +Made with [contrib.rocks](https://contrib.rocks). + +## Related Projects + +- [luci-app-argon-config](https://github.com/jerrykuku/luci-app-argon-config): Argon theme config plugin +- [openwrt-package](https://github.com/jerrykuku/openwrt-package): My OpenWrt package +- [CasaOS](https://github.com/IceWhaleTech/CasaOS): A simple, easy-to-use, elegant open-source Personal Cloud system (My current main project) + +## Credits + +[luci-theme-material](https://github.com/LuttyYang/luci-theme-material/) diff --git a/luci-theme-argon/README_ZH.md b/luci-theme-argon/README_ZH.md new file mode 100644 index 000000000..fa1bd999a --- /dev/null +++ b/luci-theme-argon/README_ZH.md @@ -0,0 +1,157 @@ + + +[license]: /LICENSE +[license-badge]: https://img.shields.io/github/license/jerrykuku/luci-theme-argon?style=flat-square&a=1 +[prs]: https://github.com/jerrykuku/luci-theme-argon/pulls +[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square +[issues]: https://github.com/jerrykuku/luci-theme-argon/issues/new +[issues-badge]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg?style=flat-square +[release]: https://github.com/jerrykuku/luci-theme-argon/releases +[release-badge]: https://img.shields.io/github/v/release/jerrykuku/luci-theme-argon?include_prereleases&style=flat-square +[download]: https://github.com/jerrykuku/luci-theme-argon/releases +[download-badge]: https://img.shields.io/github/downloads/jerrykuku/luci-theme-argon/total?style=flat-square +[contact]: https://t.me/jerryk6 +[contact-badge]: https://img.shields.io/badge/Contact-telegram-blue?style=flat-square +[en-us-link]: /README.md +[zh-cn-link]: /README_ZH.md +[en-us-release-log]: /RELEASE.md +[zh-cn-release-log]: /RELEASE_ZH.md +[config-link]: https://github.com/jerrykuku/luci-app-argon-config/releases +[lede]: https://github.com/coolsnowwolf/lede +[official]: https://github.com/openwrt/openwrt +[immortalwrt]: https://github.com/immortalwrt/immortalwrt + +
    + + +# 一个全新的 OpenWrt 主题 + +Argon 是**一款干净整洁的 OpenWrt LuCI 主题**, +允许用户使用图片或视频自定义其登录界面。 +它还支持在浅色模式和深色模式之间自动或手动切换。 + +[![license][license-badge]][license] +[![prs][prs-badge]][prs] +[![issues][issues-badge]][issues] +[![release][release-badge]][release] +[![download][download-badge]][download] +[![contact][contact-badge]][contact] + +[English][en-us-link] | +**简体中文** + +[特色](#特色) • +[分支介绍](#分支介绍) • +[版本历史](#版本历史) • +[快速开始](#快速开始) • +[屏幕截图](#屏幕截图) • +[贡献者](#贡献者) • +[鸣谢](#鸣谢) + + +
    + +## 特色 + +- 干净整洁的布局。 +- 适配移动端显示。 +- 可自定义主题颜色。 +- 支持使用 Bing 图片作为登录背景。 +- 支持自定义上传图片或视频作为登录背景。 +- 通过系统自动在明暗模式之间切换,也可设置为固定模式。 +- 带有扩展功能的设置插件 [luci-app-argon-config][config-link] + +## 分支介绍 + +目前有两个主要的分支,适应于不同版本的**OpenWrt**源代码。 +下表为详细的介绍: + +| 分支 | 版本 | 介绍 | 匹配源码 | +| ------ | ------ | --------------------------- | ----------------------------------------------------- | +| master | v2.x.x | 支持最新和比较新版本的 LuCI | [官方 OpenWrt][official] • [ImmortalWrt][immortalwrt] | +| 18.06 | v1.x.x | 支持 18.06 版本的 LuCI | [Lean's LEDE][lede] | + +## 版本历史 + +当前最新的版本为 v2.3.1 [点击这里][zh-cn-release-log]查看完整的版本历史日志. + +## 快速开始 + +### 使用 Lean's LEDE 构建 + +```bash +cd lede/package/lean +rm -rf luci-theme-argon +git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git luci-theme-argon +make menuconfig #choose LUCI->Theme->Luci-theme-argon +make -j1 V=s +``` + +### 使用官方 OpenWrt SnapShots 和 ImmortalWrt + +```bash +cd openwrt/package +git clone https://github.com/jerrykuku/luci-theme-argon.git +make menuconfig #choose LUCI->Theme->Luci-theme-argon +make -j1 V=s +``` + +### 在 18.06 的 LuCI 上安装 ( Lean's LEDE ) + +```bash +wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v1.8.2/luci-theme-argon_1.8.2-20230609_all.ipk +opkg install luci-theme-argon*.ipk +``` + +### 在官方和 ImmortalWrt 上安装 + +```bash +opkg install luci-compat +opkg install luci-lib-ipkg +wget --no-check-certificate https://github.com/jerrykuku/luci-theme-argon/releases/download/v2.3.1/luci-theme-argon_2.3.1_all.ipk +opkg install luci-theme-argon*.ipk +``` + +### 安装 luci-app-argon-config + +```bash +wget --no-check-certificate https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.9/luci-app-argon-config_0.9_all.ipk +opkg install luci-app-argon-config*.ipk +``` + +## 注意 + +- 强烈建议使用 Chrome 浏览器。这个主题中使用了一些新的 css3 功能,目前只有 Chrome 浏览器有最好的兼容性。 +- 微软已正式退役 Internet Explorer,安息吧 IE🙏目前,IE 系列的主线版本有需要解决的错误。 +- FireFox 默认不启用 backdrop-filter,[见这里](https://developer.mozilla.org/zh-CN/docs/Web/CSS/backdrop-filter)的打开方法。 + +## 屏幕截图 + +![desktop](/Screenshots/screenshot_pc.jpg) +![mobile](/Screenshots/screenshot_phone.jpg) + +## 贡献者 + + + + + +Made with [contrib.rocks](https://contrib.rocks). + +## 相关项目 + +- [luci-app-argon-config](https://github.com/jerrykuku/luci-app-argon-config): Argon 主题的设置插件 +- [openwrt-package](https://github.com/jerrykuku/openwrt-package): 我的 OpenWrt Package +- [CasaOS](https://github.com/IceWhaleTech/CasaOS): 一个简单、易用且优雅的开源个人家庭云系统(我目前主要开发的项目) + +## 鸣谢 + +[luci-theme-material](https://github.com/LuttyYang/luci-theme-material/) diff --git a/luci-theme-argon/RELEASE.md b/luci-theme-argon/RELEASE.md new file mode 100644 index 000000000..795eae7de --- /dev/null +++ b/luci-theme-argon/RELEASE.md @@ -0,0 +1,73 @@ +# Update log for master branch + +## v2.3.1 [ 2023.04.20 ] + +- Fixed the issue where the dropdown menu was being clipped. +- Fixed the problem where the exit icon was replaced with the app store icon. +- Fixed the issue where some colors were out of control in dark mode. +- Fixed the problem where the local startup script textarea could not be scrolled in the startup item. +- Fixed the problem where the Passwall node list button was misaligned. +- Fixed the text overflow problem in dynlist +- Support wallpaper from Unsplashargon +- Fix menu style mis-match on macOS+Chrome +- Fixed the issue of the login page icon becoming larger +- Support wallpaper from wallhaven + > open footer links in new tab +- Remake theme icon + +## v2.3 [ 2023.04.03 ] + +- Updated the style of Loading. +- Fixed a large number of CSS style errors and made the overall more uniform. +- Fixed the problem of uncontrolled individual colors in dark mode. + +## v2.2.9 + +- Unify the settings of css spacing +- Refactored the code of the login page +- Fix the problem that the Minify Css option is turned on when compiling, which causes the +- Fix the problem that the menu could not pop up in mobile mode +- Unify the settings of css spacing +- Refactored the code of the login page + +## v2.2.8 + +- Fix the problem that the Minify Css option is turned on when compiling, which causes the frosted glass effect to be invalid and the logo font is lost. + +## v2.2.5 + +- New config app for argon theme. You can set the blur and transparency of the login page of argon theme, and manage the background pictures and videos.[Chrome is recommended] [Download](https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.8-beta/luci-app-argon-config_0.8-beta_all.ipk) +- Automatically set as the default theme when compiling. +- Modify the file structure to adapt to luci-app-argon-config. The old method of turning on dark mode is no longer applicable, please use it with luci-app-argon-config. +- Adapt to Koolshare lede 2.3.6。 +- Fix some Bug。 + +## v2.2.4 + +- Fix the problem that the login background cannot be displayed on some phones. +- Remove the dependency of luasocket. + +## v2.2.3 + +- Fix Firmware flash page display error in dark mode. +- Update font icon, add a default icon of undefined menu. + +## v2.2.2 + +- Add custom login background,put your image (allow png jpg gif) or MP4 video into /www/luci-static/argon/background, random change. +- Add force dark mode, login ssh and type "touch /etc/dark" to open dark mode. +- Add a volume mute button for video background, default is muted. +- fix login page when keyboard show the bottom text overlay the button on mobile. +- fix select color in dark mode,and add a style for scrollbar. +- jquery update to v3.5.1. +- change request bing api method form wget to luasocket (DEPENDS). + +## v2.2.1 + +- Add blur effect for login form. +- New login theme, Request background imge from bing.com, Auto change everyday. +- New theme icon. +- Add more menu category icon. +- Fix font-size and padding margin. +- Restructure css file. +- Auto adapt to dark mode. diff --git a/luci-theme-argon/RELEASE_ZH.md b/luci-theme-argon/RELEASE_ZH.md new file mode 100644 index 000000000..f3ff9a5ce --- /dev/null +++ b/luci-theme-argon/RELEASE_ZH.md @@ -0,0 +1,71 @@ +# Master 分支的更新日志 + +## v2.3.1 [ 2023.04.20 ] + +- 修复了下拉菜单被裁切的问题 +- 修复了退出图标变成了应用商店图标的问题 +- 修复了暗色模式下个别颜色不受控制的问题 +- 修复了启动项--本地启动脚本文本框不能滑动的问题 +- 修复了Passwall节点列表按钮错位的问题 +- 修复在dynlist中的文本溢出问题 +- 登录页面 支持自来 Unsplash 的在线壁纸 +- 修复在macOS的Chrome中,菜单的style异常 +- 修复在登录页面中,主题图标变大的问题 +- 登录页面 支持自来 wallhaven 的在线壁纸 + > 打开页脚链接时使用新标签页 +- 重制主题图标 + +## v2.3 [ 2023.04.03 ] + +- 更新了 Loading 的样式 +- 修复了大量的 CSS 样式错误,整体更加统一 +- 修复了暗色模式下个别颜色不受控制的问题 + +## v2.2.9 + +- 修复了在手机模式下无法弹出菜单的 bug +- 统一 css 间距的设置 +- 重构了登录页面的代码 +- 为导航菜单添加滑动效果 + +## v2.2.8 + +- 【v2.2.8】修复编译时打开 Minify Css 选项,导致磨砂玻璃效果无效,logo 字体丢失的问题 + +## v2.2.5 + +- 全新的设置 app.你可以设置 argon 主题的登录页面的模糊和透明度,并管理背景图片与视频。[建议使用 Chrome][点击下载](https://github.com/jerrykuku/luci-app-argon-config/releases/download/v0.8-beta/luci-app-argon-config_0.8-beta_all.ipk) +- 当编译固件时,将自动设置为默认主题。 +- 修改文件结构,以适应 luci-app-argon-config,旧的开启暗色模式方法将不再适用,请搭配 luci-app-argon-config 使用。 +- 适配 Koolshare lede 2.3.6。 +- 修复了一些 Bug。 + +## v2.2.4 + +- 修复了在某些手机下图片背景第一次加载不能显示的问题。 +- 取消 luasocket 的依赖,无需再担心依赖问题。 + +## v2.2.3 + +- 修正了在暗色模式下,固件刷写弹窗内的显示错误。 +- 更新了图标库,为未定义的菜单增加了一个默认的图标。 + +## v2.2.2 + +- 背景文件策略调整为,同时接受 jpg png gif mp4, 自行上传文件至 /www/luci-static/argon/background 图片和视频同时随机。 +- 增加强制暗色模式,进入 ssh 输入 "touch /etc/dark" 进行开启。 +- 视频背景加了一个音量开关,喜欢带声音的可以自行点击开启,默认为静音模式。 +- 修复了手机模式下,登录页面出现键盘时,文字覆盖按钮的问题。 +- 修正了暗黑模式下下拉选项的背景颜色,同时修改了滚动条的样式。 +- jquery 更新到 v3.5.1。 +- 获取 Bing Api 的方法从 wget 更新到 luasocket 并添加依赖。 + +## v2.2.1 + +- 登录背景添加毛玻璃效果。 +- 全新的登录界面,图片背景跟随 Bing.com,每天自动切换。 +- 全新的主题 icon。 +- 增加多个导航 icon。 +- 细致的微调了 字号大小边距等等。 +- 重构了 css 文件。 +- 自动适应的暗黑模式。 diff --git a/luci-theme-argon/Screenshots/screenshot_pc.jpg b/luci-theme-argon/Screenshots/screenshot_pc.jpg new file mode 100644 index 000000000..4c355449a Binary files /dev/null and b/luci-theme-argon/Screenshots/screenshot_pc.jpg differ diff --git a/luci-theme-argon/Screenshots/screenshot_phone.jpg b/luci-theme-argon/Screenshots/screenshot_phone.jpg new file mode 100644 index 000000000..8237a0368 Binary files /dev/null and b/luci-theme-argon/Screenshots/screenshot_phone.jpg differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/background/README.md b/luci-theme-argon/htdocs/luci-static/argon/background/README.md new file mode 100644 index 000000000..a86f27b06 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/background/README.md @@ -0,0 +1,2 @@ +Drop background here! +accept jpg png gif mp4 webm diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css b/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css new file mode 100644 index 000000000..afbc491fc --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/css/cascade.css @@ -0,0 +1,9 @@ +/*! +Pure v2.0.3 +Copyright 2013 Yahoo! +Licensed under the BSD License. +https://github.com/pure-css/pure/blob/master/LICENSE.md +*//*! +normalize.css v | MIT License | git.io/normalize +Copyright (c) Nicolas Gallagher and Jonathan Neal +*//*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:sans-serif}.hidden,[hidden]{display:none !important}.pure-img{max-width:100%;height:auto}.pure-g{letter-spacing:-0.31em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-line-pack:start;align-content:flex-start}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-0.43em}.pure-u{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-5-5{width:100%}.pure-button{display:inline-block;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-0.31em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-0.43em}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:rgba(0,0,0,0.8);border:none transparent;background-color:#e6e6e6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:focus,.pure-button:hover{background-image:-webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(40%, rgba(0,0,0,0.05)), to(rgba(0,0,0,0.1)));background-image:linear-gradient(transparent, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,0.15) inset,0 0 6px rgba(0,0,0,0.2) inset;box-shadow:0 0 0 1px rgba(0,0,0,0.15) inset,0 0 6px rgba(0,0,0,0.2) inset;border-color:#000}.pure-button-disabled,.pure-button-disabled:active,.pure-button-disabled:focus,.pure-button-disabled:hover,.pure-button[disabled]{border:none;background-image:none;opacity:.4;cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{margin:0;border-radius:0;border-right:1px solid rgba(0,0,0,0.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=color]:focus,.pure-form input[type=date]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=email]:focus,.pure-form input[type=month]:focus,.pure-form input[type=number]:focus,.pure-form input[type=password]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=text]:focus,.pure-form input[type=time]:focus,.pure-form input[type=url]:focus,.pure-form input[type=week]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129fea}.pure-form input:not([type]):focus{outline:0;border-color:#129fea}.pure-form input[type=checkbox]:focus,.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus{outline:thin solid #129fea;outline:1px auto #129fea}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=color][disabled],.pure-form input[type=date][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=email][disabled],.pure-form input[type=month][disabled],.pure-form input[type=number][disabled],.pure-form input[type=password][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=text][disabled],.pure-form input[type=time][disabled],.pure-form input[type=url][disabled],.pure-form input[type=week][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form select:focus:invalid,.pure-form textarea:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=checkbox]:focus:invalid:focus,.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=color],.pure-form-stacked input[type=date],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=email],.pure-form-stacked input[type=file],.pure-form-stacked input[type=month],.pure-form-stacked input[type=number],.pure-form-stacked input[type=password],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=text],.pure-form-stacked input[type=time],.pure-form-stacked input[type=url],.pure-form-stacked input[type=week],.pure-form-stacked label,.pure-form-stacked select,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned select,.pure-form-aligned textarea,.pure-form-message-inline{display:inline-block;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form .pure-input-rounded,.pure-form input.pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width:480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=color],.pure-group input[type=date],.pure-group input[type=datetime-local],.pure-group input[type=datetime],.pure-group input[type=email],.pure-group input[type=month],.pure-group input[type=number],.pure-group input[type=password],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=text],.pure-group input[type=time],.pure-group input[type=url],.pure-group input[type=week]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0 0}.pure-form-message,.pure-form-message-inline{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-active>.pure-menu-children,.pure-menu-allow-hover:hover>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;padding:.5em 0}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-disabled,.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#eee}.pure-menu-selected>.pure-menu-link,.pure-menu-selected>.pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0}@font-face{font-family:'Google Sans';src:url('data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAFW8ABIAAAAA2DgAAFVQAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGoI0G9x4HKUeBmAAhAIIgTwJnnURDAqB3UiBvQwLhQIAATYCJAOKAAQgBYRnB41NDIQAGz7EJ5hubiR/lNsGgFCW81d/0QXsVni3jdDeRWCO9bMDLTIPKCA+/y/Z//+fkJyM4UAPm1rm+7lslg6TcoycK1yhVF4Fd00lKYMnOBQOl+CKjFHEfIuq31ySSDU87HzeHbmNsgX6LmfjlEVKdIfIiz8bD8xUr+9MmpvlGb1NBxps4YKro8j/gJhCqGbPZIYkd4vYzcfT4a9PuRMK1fqG8BHfIPbCDjeuZ6suWAX5jxolVYEh44GfRhVJC1foEkk8ZPN8ThiPb2Zfje53BraN/ElOXvKI5mxmT3NJ7iJGEsIRQpAHr2BNUKtRatQcqkaVquqL1cT5Maf1erYl2ZYt2Y7NSexwE7dNZtIOdXbTBeauPmsJ8Aj0T4BwIkCe/3//nneufb+MkK7UgargKiNVKhgd+M71OfX3WU46s2sXGR/YVhOl6LTpR46u1rVA7ACCZBUAjp8o3Mb9lkK1dKPgAG3zf8E2llgYIAISdWTLHRx5CMgBCta0Z+Yi8y26//uuIl7Upl9vc3NFk6a+oqmuTstV4J34R2wRW6D7iC1iD4lt5DPMIndJQKjb7i/yLJQwkilFFrz0kxpam69aImwe0hqlvfiZvTRCyIsFK01LLM+5vft/iRJkBjXyID++8zyztHK0ApYyAN3XB5lsaKEsacguL5LNAiXRF8D/oLvjThiR0QEHbnKVpma4F8Ugg/DXnlLKlGXNsOzxP23mSrItA2l9zP8u3ycdwQYI5JSZecHdcFGlalI0R9D0KTqgok5+WAxd6f63u6eRj+q9CXdo69XN5KtJEAtaQtOFkr7K/9/rrE7t7tPTB4HLM8hMgI7y6cM5MBF33OIOaUVPiMtZzSxW79/3pP/ff/rSR+Cxvii5VFBBAocPsn2E7KmWhKtbklV1oMpTB9MhJwEdcCaUp1OIq0l5swghLpazXKawWK6Gf74//FfzZk+oL3saDF7HlHooeFOatUIB++qhUgkCJDmas3+bXh6TsM84QAmoZDsz6TTd5PoA8LOQmdmdDZQ+ALhvhD+oyYFTHHJazVNvizXT+8jAj7G0980AExtN61DFowRRiLv/PHayHp9a0B0WnsjDXSIiXQkllBBCF0oQEff/vSxnF7o5nXlFU5OJPj4V4GwYS234pLXfe5s1USMRFBQQBATU9LoBACfh4oM7vwQvu0sn4cpHYU92pYpIjb4EC92Zetc9xH33aYMe+I74EQ+MN17EJwZhakiSq1R7vY0w1WKrbbbbYaf95ZJbHnkF0TBpPIePCpt/djVsZWR5EC5ahdZT66M1dtMRTj/xncj3hKCBtuhttstvANajW3t2Bffxde26QMwp+b3LwYMGv3Cv+/d8PPnYnuXAMwDAy5E6ulMexR1DNflkFvod7PdoXGrqP3pUWEd+VHhn/szwKwL9hQYgcovi4ZGuvcHmW2mznTY77CzC0MDUDMVIYCHwwUCGZvi3Odz1CVetURG1FGMigUav2tHQlL29GxodFjmMA3S97S4TSQPTPWhmIMwNfHpKpDENIgOuXc+LviRYLaFSGPX7d2IikYGRiZmFDzt/AbxuhkYRSGQ0gMnu4ChAtXo9umo029STHgjT+J5xKDojxNjpNfUVjHgbLwg1ZkAT0CSEBtIidBgVUOXK+t0f0J8o/6BcQNy6w2CE+M3SE44BYUIxQxY8n2EAoodOHTbn3zAEShINLR2PMhUCRif/rCIXUqRPKYF3RF6odwIhpzF93wsQZIRdnzbYNRB9zKWRhKg0iXla1/N4SEAvWQ2NpEHfC1oJF+/YnojlTTEfq5iWEnCjwevU0gri4r9i88tF7WgwUiGkVD/tD1EiFDVB1dBDKWKiN886QDYU+0U24gIcIhHPl0SkJdLR0NMysDLetUGeYcyQOZ+t4wLkZhHKIhwvhkUNFrURcfzFoySgJWIkYaWvCpmyqeRSqkelPrUGVEpIepP14acftUGr3QhjoSqccavFTHNZzF8tFljM35KvsbLD5dZSWGcTle3NqrfHXir7qZxgcYbKnxyucLhBdIXgJpNHFzWJjuyJj+QkR35JnxMgN7dUexMQK/59ATlhgCIy6Gl7j+JtIjVUVoiotBQZvgUaDDljqIsFCJreUYsXU93H7f3BIWH4Xs7cgbtTCpfkRfNO5ahS61VRZ2WTynTcK82OpjwX2DLutqxe8kDLzbJ3tVpbETIjFt5i0c1bZHrtKlNcBAkQYIKCWwEI5zTjyAxXImpDrmCJxJUSg14yQFuawyhohzYjl28VKBVmmQhl8lbLX5TMBDbAksc8zlfiklGQMFEb2BoFGDVXQkOEM40sDBqGEZwLhimh4cDXipjs+t4RkoXziEweUaLttfbzL2iaFMiJPaoQYkeXjT+Zndk0QNdCj6yNkAQwiqp3sSrWQev9CDxmwWOCqwW6ZWG/l6Np7NnoO0bJO7eQPmf5D7VBAKvYlsBPBpVNoq2iXTFVn/SayBX5o8ejvmMNq9TEer1EBsyI61ulMz0eE2hGxm6aNkcLW+mLSt9Lxo5SUAagLYpaiuJV3dxiEHEAXh52/qC1m3I9PuNjakm/bgx14REhjDWacX3cjR4/AJipRwvxYCdJltYUP0iBgzzlB8vrVgMlDMNIMvA90+qCYEjCIDkhvDgUxT8gOcfUBmL6oWdA3wTMyiM3diwB5bjLAYiHADPuj89t2E0QHLshBatAAw68p7GCx/zrj1mAGMsFZTDuAmdOaEl+WGXNtOTQ8prKKNiJGqQ83ETJ0c4YyAgA4INZGWIZ6ofaTE0nL7CrNwkkrpJDueV+GJZSiizdVEw+GLupU7XzfR/51FIWeUgcTg8MMALKwXJuG1ru/NwUSocY65eyrkuSDHsWYIZp9sJxe7OdJVnYTHAugQPkRgShBKOFYISurN+E4YRTiCCIXJWiROPEUImlVoNKTaJaJLVpxNGKp5NAL5FBEqM6TKrQxq3EeJPQJq+cKabhTUeZMdwJL1WqtNtoKZid+DoNMT7Tqg0gjnmJhsDrbwEQIUEEf0l8ASSLAlAHgJddCigg9pjj4thYLg8DazG/8fEICo0hY9UA4AMAIBZAgCDK3uUptpRLOL2876ukphQyqqO/7JNOOcHfvHpxVKKdnIBzRK08X9MqiW5hJMfU4weBqjkwEGjFHgBE/egsgCABrcrtgdwClQ1/xPUAKOlzJkFMJ4DlHXK+T6IR8z5gFSEarS0EzX8gNM5PNJjoJgmai8eVRpjLar6loqVw/jhkSHs0UGwxaCO7UIPDPTU9LPS/RzUx42XW1PveqTa3s7HcbO5zZ3pCJozeQjP5QOu+OQDcCiOjE6m+F5zlxszn6onYZRjr6bARPii1VwI1E9ZhOLfeANB7bM+5IV9SYwulUhY+ETS+U4i0KzvtSKNtKImXiJzbXXy44wTXL6OFG1pjRl9nsEuR2u3XrBbOz8DUSiVPV95Apkmbwd5S0/ZXG2ebGG4OChhPecLXNYkrFPOBmSJvsywSji+xyDEZGMaAollBZ5HR8ZglBOjHZpDgOYGWfygwMZUy1O0mQEZxNLrw6VjXuS1A02MuG8a43W4jjKvvwzAk0m6hoZJrdkbuCzAqv7smhjUxEtA3w8Y571NNvZ9zn16mKq/vSQqUuAEjDPXox7GRlKo3oakoLz01Ga3nhAYX5uayOa8TuP6tBIJG2a+P7K6JL4gkGQOUichCyUbLwcjFyiPKxysgKKRUtKoUq0tUj6Q+jQa0GtIpodeIQSmjxkyaMGvKohkfzVn1Y7QMZy3aupVYbxPa5pW3xTYK29nsGPHWJ+lzyQGHGR0BH0ehY3wcp3YS7Qn0FOMZ9JzoBd5LgleUXlN5w+At0Tu89wQfKH2k8mk1+OwLxlcG3zC+X25A5FDwo2Ij8aXlS8fMwp9VCCeD2gLEc0kQKImbl0oym1Q+0qGMJ1qZ3EWi0qY+aB4U0bKWLjp9dKaY2Cxx8SkStlJLYtONUz96QwSrJFvCbdlob+3C62yeEq/Qp5KtthE5zZouOjpLQtqE07o7f4LRX4L8ff3Gbxv9C0H+43CBr4ucLgl2jd2tvzN74hPis690vvmOReRVuuagoC9bLbOXzX7HxWacpAc0P66DDGiNBuyYfg+YBJjZ/4OXLnH5Xqd1d2JA1rbvgxsFW6f4hDhcP0+4NSBgNA9UwBUqzHpLS5TudCMpe/3EymcWNERMAjqAFPacDiG7qEs0ggNa4J2NU4qNMezqqwUAsh7E9YCa9y75E/D1YTYZwb4xAHo/jt3UpjuXC1zHC9nAaRUvcBNDEYx975NNMzEa6WAMY0NwXsEBGjopxKrnAklrztkM76JkdGzy8+neLexww/SDoCUHsKUJIqp33q4tscdwNA4wo69nJhz7K8KJng4MNZaeQE0FqZNwNChaHN0q8uVAOCl4aSRDqYxaQm3odMOoQBmANwSrcgyP5IZqjClTJaRMtQX/E60LOBcxLg3rPhQRXgYwceG4SUJPSo+FkpJi0sRGpdi0OuCUPrJpSQjHbFeyDjEq+SZkSciRT9r80qVPlXr82/hYHhrFJSYlJaWJTh7BZ8ueLWW+CQn5jdqnHt+ry5G6EbqMY2Ah4xhMSJhv8KQWChLRA7MESirqx5AoEeakx104WaoyLbXRTYUBhjyRPNNf/vaPf/3nfxdcfMzsEpfcdoCOhiqlCjTodEbc0pY9KwkrbMzU+FhOITIvCAo/oCiggAMhckHhiNpo8RgJWIkESTiN8ZqNgrNwKG6GozcFNUIr5mL+4gJ00R1xFA0gVAykfrajeIiJkcH51hAsJMyP4WSio6Oih74JiYmNi0+RMEo5n1QhHiK06OjoODy28q4D2R9VQeIu3BoRgQZg4kZBUmsJnWkEczVdPHUGdayAszgDntZSljwRBxBmjRJFmeUq9F+PuaGuDeLJ+QPOj0xr0MLWjnEz5fmfxuLwuy8NAW69ZQMZ5IA7opCv+egju/aGuGOqKrqB5/9pvC5IP6VTh1bQ+pTyPt2g4ykVbbpC+TrWE3qfsUkMPOethkMpgyMaWw1rM0NcUbNKPFb6N9VSoBLF30x0LGIkSNXXUGNMNvuPI5zzk19hUUQTFgAS8XCE9bvanCZ5UUM7mhrfh6aH9nnRt0nfg/0c/Xr3O9/f0L+s/8L+1waoeM+AtgPGD1g54HD6rgF7F+0//5etA0O1jv7tWwfxWmf/la2D60W64A+YxiFOp4VqMdtGoC8dyl86nL71iGGA2rTgJkCNEgaBKbkPGqGKfNsDvu8jsvnfxJU/4BynJWnm/5fKorTVHueqdjoQ3TTPPjJ/fnopx+uEINHGCnBqYgkoSsFiJMlUrIm2yvU3wkTICQAAIR0C6dnBV5FFUe7YlhOTHpqdwC1KgnSFSrXWVV/DuXIYBShpyDhUENwVXCLESZWvREud9YYcoOeWXjpys7NueE5hakmWq4EyHeGRDbQSC3s+Yqafc2ShavDIVk8zyAr6WEpqzcEBnyyHUgxkQT9lnZg7LLB1Az5l2Kv3e8iEMj62lgmqHpDHNGtF/SgyoLFjaBjSYyY+oFhEjivOass10aWYoz8mTGQjw6MfstTEBUZAmd9DIohMdeKRuvsYWVN2u+CMJrxc2mNkj1PyTy6T7YgotWNwfxYONZGPTajaCwlhSU8saBUKClaA71kxmm0KdrAf2LFNMFKwA/+IA2c9ogd7lh/KeE38DdvrHuwZs7OYk6KxPFx6Ghwe/NkXdxFa+MNxqKrw4EciqkzpNicDmPNuJy67/JR+hgWsYmpuhKq9y1nH5bddsR7w7p+knReQnzYoQhgZEBAIRWKJVCZXKCFYp9FiFE6bDHqOJ1EmoZA/6rz3lEUSLU7EqPzQuG21I9kBo+V6+XfHVTdh3uCZ9Dc3ckZkeY7nFgovQm68t3a5XEWyPX6V9Rzk/yKSrpFSDWW7S73/yPFSJsdTh6cS0R6kvBNJZMGixEmWrVipMm111l1fg43wBiVHI6+XziKvOgu97CzwojPf8848z/IzfEQUce4Wet99UeBdvrd5PjXyNMcThu+GzCDhPvHwnn2ER/fsY0Q3oWHypdNFfcVPP+cTLJXvG/pNoZbJbFa5YNMaagQTs5KOR7GVdjub0pgD7aJ3sSyWb166NIFTDZnJtfxe/dBu8VwPM9R/5HZ+jIhXlt2jUqq+bA1BjVBptzYXRrGEiN4uae6ED9LulJzxN2+ndDkc8qhAAZWoQjWKKKEmUJ2I2Pw5P/1SHQEGCVJII4MsEMRQuQB63BJEF49TMYBcXqUA8pZfbTxMg8QAMpihKIbQhAYAzuvdlLV7URYcpZ41ljrZuweoH+KYAXgPAMBe/QFApjMraQr0OYAfKADwsv74BKhBRjNQG6o6mpD6dbqu1Y0ZRB4oD5bHyFbZITtlt5wgp1N6Uzb6O/2n+c9w6pzG6i4EarKliU69hDuMli2y/R7E/8F8+729tf3W03r8fLV/+f/5F6fvHL1zpAPtbU8729bS5lRY+O1iOVbO+/utc4Bee7Af/FwQsO4eAdxP9WFY7i/2ifwVP5G/7Ot/CRpTU2l0BpPF5nB5AF8gFIklUplcoVSpNVqd3mBMM4GQ2QJbbXaH04W40z1eX4YfDQRDmVnhSHaSJRpJW2DMhHETZsxdvGL5ytWr1qzbsH7jpi2bt27bsWvn7r17Dh44dBjq2u7Y1XqurEH39nKoWgz1AMf3A8Apg2Htoco2FIBTh9jD6HFzTnBtXVNzfUM2J7k8nRiAC//+h1FTR04aP2XqtMmzZsPcpYsWHD+sbFgP4PRFAJBX8L5DUxsD+XU7UN0KtBj3xJrfb8i6Q7ChAvw+WqzBIEtE1iNVckRyjs7kMUyMvBiuIaqpAOc2kckHipTIRMhMBPMVjWbJ2cr62J4hV8GOSTzSZMpH/z4/UmTJU6B4i9x5vXNmjx0zetTIEZXDhyVDBg8aONh1HrvRSgrOKMEIgm1d5mkc+q5tBLIj4azMUDCA+jO8nnQ34nI67DYrzCZv70+3t54lMQpTvp1vVysiYrSaOyYvgUyhdN4QtGmC7xrV6ZnsTiplJSt4cJstr/azMKVr2kopLiQg3a/U6XOnmxvKwjjoSe1AIazix8bhfRKUiotaLaV9Wmd0SH0ZQIOAJZkA7SGfjsBsbtzLiLtTi/SnAbRpy5jUrNjM62ZEDbuVgbu9t8RLJdQApVRcEBO/b/oRFwgzcgPjFrZJqnIcyOLtoH4Bz/nz/KIczJQI0vLkQxMqwHGWxWDP8PITMlRYkbVF+Zc9Zo+3S7USCW5ikvzQEX3yQ1dulheEMD90m58JKXU3Nj7IswwY6n2ECcY+s110kk7PpzNWLn0ZzRQ/4sn4tgLhuUUHEvBT9EIn1LEsKfk59TqRVb+OZpDaI7Lpu5B3D4QgMvGSiDApp6ttr/nN2lZtt1RFtyMey59N0T2CCBB+WSLYHmS0lykw+1c3LJdY7N4DyfCUZvypnaAUiWk/xKCreqg/UuTmlxj28PanfmrdvLyQaiWL1KpZpplPguwO4Jizkn8Ck8TsKNE3cFc4qaw69u4aKtYtJsNzyTZeeRjWM7RpjhPrbzgdJAyfkpyeUhGYbU257s664FZl6zk5HZFxJ51eJyith1oVsDzkWwXXIjEbkdvkUlxGJBkXYTK/QZTcVH7DlbjySVCXAa/x+HXOOKPy0zDFEyL4D80TubAeZgrPHjy5ub1eHG6UsuWkWqEsQqu+q1Y63eg/0B+OTQIYopBX08TqG37qD4fcKckqlD9ycndnoc2MncLXSHcayCxHJXknW8OeZtmZXXBLgC5eE3kO7x3kJsTTPDh989VbCxM09bKftDIMTPmbuatWEgVRtWaLwolV0nDXThefBxdGTBxPjlAXKz7XfRLJRUVZlOB2V/ybYi40cjY7xXfT26NY2jOKZlZCEtBuJY6xwUA0aU9ZxHvChbOChrrR20VCMZe0zlv19+0O3D7mScIR0gdSWJRYtrp+OY9skoJJ+ZQ/+IWkAQ0p5lQ25U2RJdVOfyLtQjITqSy4ezEWlI0ZPTZ6WYhVjY4b0OnYbRTIDsWDrJ2cVeky0OEoGYhI0cJLFhpZ9eFY2BTMDbk+dF2zYL7kJFS3KUrOWUV4qixPcVKw21O1AV0GcDvkSShwIJH1wiKCcJCu9aW3Reua/RzG9WUaYDu9JBo4g5iyMmNld3WHfESmjRUEk4931jQknjDiNIQ9DJeCOQn99zCSCsHddOQ0K0qpTmJ2vIyQAVYLOPYMolEgsLwtfzvKYUXHkY3XTwwwsqYbtmt3OAE6DdrrlYpAmBuJS9ePD3DgSezMb4oLKQFWl205gr+SULLlOIG6I5s/Wq3LbHkC3C+5kbXUS4RWGoU7VPKNxhCAdlY12CvhOksNJYIPcyRYwAOLbhCPMXZjU6VP2O5Hitv5o1j8kHic9JT3/O6RRflnsVkSjgFj7FrpThCao1XhgIPF++NrNmCl8eaLVIv8sjIVRkrRi9ViODWC6Qbnxpfln8A1fhAZVqaZ/V4jwzoHMzAfnbWw1623SzRt2afqhhbmuCSnWG3IHUIHe0KXDlPjin7P0WjbMujLtSips6hDJEVwTQCSZvKREQS0DohbkyL+mSDRyfEtBNMjoSrwmiHypHu7+RTriJsty1M/NIBX8nwfGSED5tNq7ZqlvG6zJletvLAkuidO5T6x1kisPX2MKS5aujoeUmQivxAkSPxEcPzNFjdDrjsCraI3KwDcEv0k3OZDdEU40baoRtolrLLteTbB3TTkZi0VR/a1043dYc57hNCeQHlBIfJl4lgD2rtV+oTfJgZmEHYksiG7syvTOvWXXOtfiQKpJARmY8vyGTRzSMEAjPAZ30RduCVXTIyktVb9Xbp3qw7CWmTvaGhtbPEN1BDgW4WaOCPCRd5mbKLgROQzDcyqXLMIHaVg9pSXpnuTKnbCm8OtyvkE0J6QR7Yfk8klgBe+5KIwEI5eGjjR1UrIdVVl3c0KtZeGJ9je+xYl4bkwEaaI0tAF3ZIVCP+QxxD2m//szXxuxy2ObwQs21OGtnlWaJEj7TQHs9p85Tg4MN8gl9z/QIFgSjj1LuVvm+gJ1XvXmvZrrW8mVr77VvjZn+ipB08TToy73DWeKvWWGzg35BM7lv8nVi1m2SY6vVD4lfRzwykl5+J87WPzpsJjCNyaneITCxwvyv/ttgrjhG28TxkEQ+nhPgt5R8AJfGRtuFrxKRvTkA5CX/THSMhhkPKi3VLe1Ad32y9z28pta6ynTvjP0zqL2hYBE4zx54oNOfTyF2pnB4ahj41SU+pesiE3g5Vsm0ZG5hPLA/gMfZEfzybh4HY1/4T4awwFThTlL12semo5gk3+Xyzc3zSmIlSwIRxqxRsnfTy+ENy3/hTu0BOGwyCrIYHyfDsVNOBPEPEipMI394MEiOAIrUsAANwCAJCLAe4IjI8B+A4EoG8F1MXA711BAOATrp1+7BQGgdVkISRIIZEVJRo1gadbT04U6UjCsbMm6jh2kdYdeGdsB1E2JAALhT5o4AFKcujkVq7PAhTHcm9LPYYOYEHEgdNRcwzvmalLETJhpyKktZdj2lcjbyFDJU0tuFpaBwatRPMOn8/uYRAwxhFY4OC9QHEfkfOABYTkF3cJu6H8ihyKZAlAWPKLwXUpLVPDeEaouC5LbRoMunQdBnGYYwwIAVi3I61GmobJVmOCJeN0JI2Gf3O7i9koFDbxgMPC0C3801Iz4LmQ0mSTnaQGIoHKucRVn072jURpOYmxpJuH0L6T2IrgJDZjYa6jQiRHxhigFDqH29B5D3PY1WHYCtK5rr/1c8sPPl/+XnDG42Z0O6mzevsw86KfniasB/RTcsAEgjQRZwr8QWrMSO4QB8psh0H3N7ylbf8wYUyGAZ0RBNApQLOQrHwwDw0CVAcdHGwhvoVjGyoZtqs9tzkgi8WkOuVMYV3nUzHTdZcxAsfpww8XTDVnhb95BUtrgtnKzJaVcP/8EFnZYm0bAylrku+nDkbo0dlML89Vl1bnfyVWSxsjj1et63r9dqPkBB57g7xmI4JK2ItCWTb4okXkWw5USq2xT9g1U1ROMjMm12HNcl11lf3MboygixK8892LfBsCsgHoMCChzl9mhnOwe+kifvBxZ7HN6NCpXORmrLft7ptxqciLyt3UWspDtxt29/SWRxonuB8d6zID1Smnl+5ptiSGyFZEwIzZVBaLor1sOlRjL9rmY2HyENCY1jDQMtI8VTdckng579JIjiAvuUgXO43l0niwSvExPyTDpVaxnK/K3Ubv40fouXQ3zyjVNYvLufBdzQ/cr77Pteo7cVlVnQCzixTbBkmwBUYjwReqbWwr2wJJ+iO1rrBUIsrZ86Szs24C6lv7lJ4cRhr6Xh2NEu8IYuRJvbZUoNK1Vol/c0rH9vOWQrtQ+jiGQxJ5wPCzZNIXthqjgl2AEPxX0vHCDetLMCeVt8nGjUkYQSU2F72Gs+E9kld76F+4YH0BimJ33hW3n4/5D40akU31+DXyolYujTDuxKRSiKRGnkOeLEdhgu07AEMcMuwhRQnUsEhTuBkTUVyW2kUSh7W7cH2eKnbpCCY8qFuN0gsNi3m+smXhpbNe8NgqqURh27zJnYOAIQQtrunc0hPVLaWeI6fiSvfgxydll5jS9XQDmR/Qq+Z8sBVGnUkQpGAl/x0dQIM+GeucHIjj6TWHQxQknQJBDGGgsMuD2jDDD77fCDDeb44SKWEBtUFG8WhQECVyBA5GxQxDyqJDZCY1eu2NwkEwkOFVpkXPE/yLsJmexsYiYBwBpxt8FdiEYau5PuWPPE7ctG1OZgxJBqOLWduLp9HOvlOyh5em9MO3Ifb215HR2bEhcP68+fSQAnrwpdGJ6hgD5zOcL3QMmoFKk2iMZBIGamapvlQ/nonsrEIx+4/bvnNb3g0WR95U6TSVCfCgX16JOgG6qjFIoQXqyv4aEGWdXjebLFoYdS9WJDYWBeBriJvYpkb+kLx4D0/0BPs4PYJ19NqE2bB0acXBcFBQtyd/irDL+2pGFjBtqfEAelJ7XDLPZBTsPYuOFPNUCDeqK6b4Ducy1L5SSUIRD6LkqJTXTDa+sNruXIoZMwuQWYVMQk9PgJEi4Fk0GdKLgWfxyYzfKB4nkNV6miudxjJKgmpZhqRDbj7BXws0nx58XjMzI8P2utodzdLaTPWM9PTxRd7oRalFVcjs+F6dgoCBQXVFQIAcWK/0ZDb2E8+cJVqZDZeNPlbrMrOrLNjf8zqnho+3aEvm1ph9XYYCAoRUe3iXt6a5vdSmEmYu8m3a0MjmmjG0vhicX7zxoo2RtR63UTTQ4KtL1ZNire6LQyQW0CJFASwIUN6GEGA/n/4qaWp4Ep+lPqqPuflWVVfBeuEMfzaPpc+4EIXzdE0rgnXdmFfMM7sEXkSrIK8Y5tRrVJuwyRjLHjF8/9xDNl9ljZqR18awJZ1Vw2VJmmwsZdWqIiBK1NMkXz9PPyo0KRu5OrizAJQIqKwLzLyMCAvNBu43lDCztJGs+mKwqA6jhfIiqInr0jkKyI3d5RzDc+JZ+uOxDca7cI/T0HPVvkvGuoLbG+k+U9H4C9GjbwabCKw4UWUo1AO4qYVPc6OMkaRW5xXZzpTV2s9+qXbuOGmcv/5QrYgPuzo4dhHsUiUs1NUp7tRiy/e1NBwf+Gzz3rTUjZDZWGzJnvv/5ektzSX/fwrZcxzNnXN+vWql5Dyh5nAxW/K/bc3VMm3tok6OFNCa+S+cOeGajtQ3Yam526vtaQk2CWK41vGnQ9k5KS33FQ/YsGEcX23+WHFZuqZutIwa1HKXYBWpvznx0/5uYaixF6yGn/OrwQo31djj+zIDfd4R3a6XzOQTVc1S5Qg1gUvGsYaP9Xggbr/mas9KYOW4gjtdIVwx+okzQs/xPamNofTk+nLLP0+n4GeeYHLUcNFCewILomw9zs0L7K/4vKyhSABuxPX4uEWVxVM0yl2u0O7jDLdme6MZrT0xV8TFVj9KtZExFhiP6R2gPWOmH+mlZvBzl7I6RhhtuxIg4YWz6moNF6uVkusElylrkn21rERGhx+y1xR1BWJx4zLT5gR4EOxB3DOWuYcWqGKKBK0ON8v6IUeJfQANVAK9OI/iyEtrpTjj3XzhD1t3taoE1pd6yeUNHIWOHIvb7t3q4lyJpYSl7WaPJO7CwugOa0+rj+dy1MUTGQFuz+QtFB89top/VGh+0zzkw3mDKyqmUxjVwHf/ix+BfnFdfU6nEE3tz0qwyw/42PxbA1c/enTDmnk1NOD7Nf9HEES3CA7t5AJ8pxfqf/v3vL18mzbdM8N7OyOb70d0zCRm4NT3AbGfMGIU9B3ODD4nB+4+epo+lP7xzRJeF3Tt1EOK/eFr54/NjnDCNIAvlZCMeMOIMiJCIRLdWwaID3AA4DRufCkEPI9m6Qr/ubF6rrrwUldXbhjcV1ndV54wljeKhpu//rVnA1cdyjbvC5mZg5Q5vtHoirTx0fRqmJRSBUnXGGv7L2zoOy6AA1v5iB/IRHmzDj2uZ9FRak0a4HVlJOc1JTduDAtygBoAN85d66npuobCaZNkJdnX1F4S3tzVN4dz96Ei7ZrUPQLf2MH3X6jo36f5uuy1622HPUTdm6QrfNX+Z33pbbbeeQxH5Hx2NwlMJB7YUZ6IfxUebXjUvJzkba+aFyNwBcf6q2taca6nC8zMn5enrr8s9TwzwMdM0evy+7oL67SzswRZUT16AOTf+e7/3p8x9bljJhK0g2gmzCQOivkdeYhMfyCbGbLoz46Blva4qZ0DLB3JZ5ykM9PTXR0DSqZ2ki46Uy5Oh9Mz9smc3n7cWj7nluW7BwThANyvKSfO7SRdtVn/+rcvkxbOhgGeO0M6FoWDlgGo+4GDPOVT6fsgPS/oGMrv7f7vXCHz9oESgBHDfJCwusgtANx8PuB2CwQCRMDfOvhu5DcZvv3IfOjwvNRNywXCZTzeVqFgG69sd8PqrQ0+GaS9+0OhbgloAfOtjSZzHWwEa+b0mLYwBeA7EJ5A5zX3tjEJbi3jPwZjxheNqQZkPTnz4uKQdbEevkSY7gMkeJ54setjSz9NmOD72zLuQ57gvbo6Fh75Pja2aYHlI+fXgnWtdBYnVDPiwUqmt9nabKpiruyrl+UqXuQo7qffYdDn9/v2wUclSHxyX8zlhGn4WUY/um4qGKgv1cN6bNM+k5MdcL3LfZcKB3zBDc4BVxUW2q72HJ9PQhsDSwu9Kk+Gjd/pdqMrw6ZWS4B9wP+a8FdkzSgv7dQUxRZ0ENDg9JlhTD1AuvkLR2EyzHWlzJCagyKdMU8uz5SVVVZfuAh5d+Dv4jJpNtffLvLfLqOMaaKU02llIIWtTZcr7QaZyKqWy9aeQyj44oBXlytUoHK53N6AoacEtDpdbqncyGqYbUsz3on8GvKE5vifI5hnLuJTXDbb6vvgIP2XblNBfi9oyvCD9C86lMELDfUmEy6JXIi2UK0tSUvTlZbrIMY1XLlJU6pRAoXLdg2CBJu/RLPksgK1odCgM5aWGw0sD8RkgRw2C4SYbLa5CbA5YH5bEF3xBijXeyDoLIy+hiuTayNqjSHAxvSTuHkKWTBHrNOCBUfBiwtLMGxPQKPWRSqapcmWQXqJxKyRyVnnAr1c5/LBaiV66fUZsFL9KHrtzhQKiGGu0UzgXCsKqtmUucTwmD/EyNtcwiShzsO1Kr9R8zlJaBKl+GwYvt/NGI/hGW6s7ugx+FiLzRA14+jPQGd5vX0XYf/XSxJoGlyfShfdU0o2vEUo9sKQRxcWSVC5UuFaN/gmnRuM0nYfoQkhyu3dVVK8o6zMv892l1RU7Cgp2lEWdjVYGQu/NdiYAnlIKoloNdLsgFTKAilTMaK0PqTnKVxKSBtCZ83yh0Kz/YE5Royah6zt2yxkP+9Pm02vRy+ZzG7X6ZrJlCldebiubOsZhemXfTQutycxH/O+ze2pKurqqSgTK4NKmQw5g/FCQa1GExkqVeNgNj3vRjLxjIm248UxC33Mm5SUv2YzD/8uU+LWtcrbVFYGxquXesZqsedH5vGN7lE219hgEAxrcI/OKr8/YHZ6EJ/edadqdVZwZSEjRoVVd257RsydNWYM3BFjuAcrLvfaP3I8nI9273JOgfzeTIESNbh1rQo2l5YSC6sXpU9WnjrCKQP0zjE299hgEAxvE6ctD6AvIbuN/YtCzkSQ0/FoaPkaeXoXKq+RoxdQuAZGyZHevx6D1kuNgQR3OoXWWKaFvdAf6GenojxPYYw+Wk8rxtRSicGKbbMwJR/9NaOvoezMFe1q7/S3TPtzB0abtF/wn+89gX7rhhsTMyfP+PHZJUuL1Rhq0lb0QqjJD1ZdGCvDrWmTu7m42LMwt6QkL3B5RjocY1GUGM1FkKgZPr3rq65IrsvT60mnjS2lo98a2GeJVCrxLHt5X2IuwcPNwTJvUwnGX5uAac5psd3EXVr5KDDKBKAjx/OrQMxdfue4EZC05Zt2sxIAdav/jvmVjml7ilZDRz/UMdKoFcwe/m+DZdzFFQJIYLCHgmvqNRhQUCOxpfmIl52E3KBbqgwUSA2GMF9h2u6mroG1GiWiF3JNMjD+cxalaChqgbOH8dSaZ22/el95/9eOxv6F6webhmecRs8HwxWBQKQieB49nWEY0Wzx4gf/nrOjb0ImJjHzQN+cPl3BIVG/54wavIN+smJwaOHgJ5ipnpwTXaEFff7EcMuYEL53j+eZxbvjMTtMRc8zv9YWnuJiTnALY3s4vo4s2MfD7Pit4ONIJzqEUTqKWue9kTmKOt77Bt+HSjwHd2A74F+jHtw1zsMDLAVzrmTPdUGHxCWf348xI29nDpp9A36Aze/Klg53YjdKQZ7QJfa2ZmUL3LEusjrdrOfa6GndD4E0rbSxIgfy2jH+oFQpcdh5PDswwhLLgmG1gPtdvLkfLiIrwji9F9DrvWFMcUSmsVRZjO2I29hWZbGkuhAhP6jR8IOIEOC7hIKNeRZeZz7pPq4RNrUhiKm90eLIqHGNcJEFDpGcj4gEQbUaDGvkKxAx30leXof48NdwVRZjmxsxtje/qhZNWNaE6Q1fRy94nZjGsEwjd2H1AohQEFKridG/JQDpDq7ektaG2HUdNXa7sxLUNLoGkWZyxOkuFrdQEram/ldr88w2k7t3Ml2G65K0dUcOkqMU8ax2Jp/3b0b8X/HUn1zBGGTMTlR45nVDhgah/OtWKNIDYb8aM6aJSANWQMZWN2Jsq4BATZZoAsbufdc+YWQ1n+vgA6hWB6AOQCBw5l1aIOD87WgydKHXe1swcJZUkZ1fkWVFNRaLScUGhUwnJxlNCoalSQRJEiGVkEQjcLLRn6jk+J3Xb4UH9jY0DiDvZsIojDhcoMzQhZ76/L0Cc/7XizxM+9W/BYPL0ASD1r+TDT+9TkwgKBWrfPLkLSG5NhQqj1j9GusKNfN+qp1HQdW2FSrmg1QHLwWlQk6xhGWySF4FoGuCjFpOGp/m4JDRpEe4ZivY7nR6FpgrzQsELo9AFNRqmXFaKPRG4H3yeM0Pr0sdLI20PJd6Wx6ijDjJkGfP+KTWtYj8ueTy3kKb40T9P1HDD68P8xZVCGmTIt1sxl06zCGhSctxla5hTirfIeaLICadElj2+BJiVQMyMEiTQqXqDDuVCgW5r1KSdx2yxzhinA6FUA6HGSr7835QVCPEy0QyZ6IzO5HOeO53Bp08MuPVy0TSElzesHwTKrObIBUP5NPtHAr60+vAWMJSWVLfn+Fli3qtmJd5+UdgSN8foZbZPUdOD46c1bNlVmDNj8CY+aPno/gTvbZ/yxt9ZPiRwl3/7O1VMOb06NMFsffI1x5GVrT1WjQworkZGkLPBkroyFQ7UCJHluEPtAdDju2cKVSYOoWz3REMOeNhPPM7sF2YQMTYTKLtwHcmHo6P6kMlFsxEsC/xzN75NlHfABfp613f2fqWRRW8Hz0r/VJ0wgk8xCJWpyTV7TQeK7xQXi5Z2aNH02m+wOvLqcPGpfSPe+8f+Gh9xAH2Q2H0Th4sr4QgeVUefPvO0v8KMu3FLnKK04ortVZ/d5A7JY78SGnEkW+J/auKU9Ugt/eR1BVh/VpZ4dg3SwggTybJish1nnw/CyHvWyNSplkEqS0TFctnRCZbmwZyZc8jyUFmxVYaNP1glgnMPBS9oc1ua9sQvdEOgfaN0RvWmOJptikbngRe0UEWiw6+YjD/FjBZv2/YDG9G/b8/ww9S86e8TsTwEx/n76O2w+vR9fD6jX59+nekA/EjSxHsV35Ia0SLAKV7xND4LDd5SD6iUiE6gdRlCBJCRDRg4gC2CUFZmCtMj0iMchSQgzMR8uo0rZBWdi+BcdyEL6HURAI8uv1l1NQVaXFbanPWJslcuhAx3/FrSlI48gWf8DM+4VFC/OOEGT0e4VOzzwnq/+PK9PoygwEsMFcaZ0h+sVhNiR3yi6wpIimJ9TTDT4Ms7V/chcyS5PrU91umxKUcoVCOpDBG9DcmjFiJc9IBkGepQDwsMIYbJTGpRSzN4KxUZkhhUYS4Up+mbyGIkeQCYr7laTmjR3VOiv4Em9bIhFYqh8Hb8eZBtLxNnexc0sGUhNOWaK2/l6S2n4ACWR2DjWpVtBiVKNbtxoP4pOEHT3FpNN5JH1jJa8ZdRTsUIpFCycktslJLcuwH7j543zJ42Z+17rXugncRL3Vlw8MdRBoL0BdLdLlGI1i/kp6yxp2RmYFEpfVWRRGSvq2wo18wtuDdhVFxLTGxrXH4K7tTI3JPTB93Boe9gJd7CleoVZWaTMx4rtGYe2n2P5kwn097/qQzHk5iRD2W9mFdY7h6diY5zX5w8Eu6OmCU0MHkQmpIG7rrpqiLhnDxHx7C9GzrGbmsMbt75SorkXeYx+viJdoFno5FMTGLohsSM9E5IKdnssfJpkeS7+664vf9lM5iG88UPo0rxpzcL+VPlk83+3tEez3KuF42JHd2/7ntM1bmB56WhyDdH+gVYOpO0VR1LhQwW2FHL6DjU2VywS6zh3rE2O8X4AtfafHDy5jqly8eOj6tWMJaczH43zUNOZHlWJxVkrtpQ0FJ2Ml0zHWA0qdoOFzbbNjFisxz/lsla3gtfr8ZREY4nOP8RXQv7UhYWn9b8m6ziUYk+py1S0NB2Djg7w8uTdtvVPFuos6DaBjTzDQWy03UmdPkYlgv1YI2A6YEY4jOz1WCuhyxLKAsDwGYdCjTZFAPLVGaWJTXJwQ5v9pOs45zK9pKG1qsN1mGymb8zJXpnZWmECHAKziNLXVwD6vHXm3+v3XEeIWvYNqSSZ/z0oW/Q6Hb5sBx7OdqxztDNeIR2/PSczfXLqu1hDw2+XEoscbAD3hIH2POwadInf+nH3qKq7WYGixWsK4qzSiEqQyw/w/uCOWyEHP6FqK1IBkWFwLLIBJkhLaXeg0dNRY74LHzuOkSCddtAwC+A5jp6QhAFO/wb5M3gEKvnvmd0C5419HbG8ODYn5uFlUanf7RBtvCqsNnRRWmn2dJU2/KPZL1k2iddM4gYgYBw09Oegb5AcVZAy7YfzwvnrYLvdUbwjSFQ4KOsKyxHXpsuPMK4IUT4B/oT3SQTNoOrCVzpk2Q1rbC6/jI9XA/OrwrWj8ntZnbDaFuYkNQa/Rhimy14IB35aDZL5xV3C81uNr077+xyebf7Ab/DBs9PHWwqN6pS/fx5WDdvvZlqsM84NC/fwSvJ/NwXNymuNjDsbFHYus/ZQimnRxIdcHMb4lJ5MH/9F/zlKCGc7LHQ6KO8cvZ+IZhYSw244eZGHXxhiGrVeSIOZZANBMGRZhlDuhibBOrV8bO/A8EBULQJBCYwPcCrFs8c4f0yybXi4RNaLNiUwfp/J2PTewW29V90NW9Q3ISYXbEOUoTqYyz58E+Ek4i1YPz4uzZlaM0DhaCf86CjgEpSIePiLyAv9MTE+nf4RdEpNOHgCsQ12oLezcbPATMeaozru5l++uecduIvdLWpqyhF3Egl3y0acHBg4cOLvwAY0sXiPNh4bYGrD56F7wL2wN8PsYdL685XF3tWVi1enVjjdvtT2/0jk9HJnq9YFiz1zaUL+0x8BxU05rNtvKnpFbW7SCOYh+rTh6rrSVGq9b6pijrm5rT9DlQDWSqg2DW418MKKs5PNj+ZOXEYmFTwf49JU08ww+vF5PcUCzDPwv2JqV4UAsR5dzCNVugFjsCNteC5nB1WeXRvFns9KBHbMvUPqi0ekK1C3NSySYax4KLOvhfc/ayQs7vkFIMOtKdTEyOjcoH6y1wi80OtzTAJr6NasPwyu9NnjqxSuBPY9NtfAFCaRwWG1zazuezbCCbTe61gm9wmVu4VvMFx+GkrlbIZmNhyOnYsmYbqwSqSNoEAta5mh2/6qiRuIisEeP0jpnD/LD+uKidOUiOyJEddL251xvCFGfLNObq2cP4oTFTXTrTgHZDY75JOrhWR4hDzFC+jn3qwHzj9yq1V6LCPbfMtfylx9+JBOkJON+KGX3dV382Es2O5gTf3F4dCVYYxFx/y7jgZ0L/88DhD5mE0pKSaFupLuOap8UwLr2a+fe5G2InthcKI3YXhJkTh6lxeEj1zm3QKg6kcW3Lulea/jSoVFCwaVESMZ1HdP6bmejMDqRjI5NH+iXjj5uJHBRyxfnuC5A86r/7nJNQ+fkV6U0Vb+pVsJuVUd5sW9eG/iZX6be01QqChs994RpcgHY7h+aiPJiaK6UjLMbW7di4Et7QfR3v2zORftuRi+Q2Cilf41M/PUejkdE70d3W5ASVOZvDmzD0gb0f4fOKk2KItRRDrRz6slcz/T1Ab5LyNd5MJGdESVJpvFf3xWLND1TsAC3KNWmng0N+HYsDEmVKKQ2TuA8l5f6SukP7l3KbZdCEhmY5LSgWexbSIpElB0t2E88rkdAIjxv9S8qNqm7WpOe7VVUmbOKs8eMt+XFx/yYmCrIPLLFIAIlNIyLLF+XlrdT+GVWB2sU79o2YnkTIS0p0ETkqetL7ePzbeCB5/JkuvhzUCAQPV8jkLqOCeG79FmD7n/oPYpXYYRo9CZM/MaEq4AAunsusICYHSaRAMnt0U+KRy6pFA9FFhBiZ1ayiq0/QiC3oVXUqqTh72LzUQNW46NQ6LMVp30k7ZE0mBpNfYu1RVlICo3Jp6pYBfojb0Pu+VMLRFYQWvMimFYutWlFcC3HFUYI0XS/HP/03Lu5DQuJ7PP6fhMR1IxMTZiYSZiQmjSCq/TXBqrVRmK86SaOf7O+WiE5bicnWZFIwmRgkEad7lr9o+SXjZxle6p0+pKO1sPC+Azty5MbkRVD7tym5b8V2ns4lTNr3flwGA4QEXMehbo3e4LGbXyAMhvs5k3HdzWAgNxg5M47Mlx6eZ/24hULZkkLeDu4h4z418D0/6gXj3VIKZSm5Zp6Q51lumYGzPq4QRqncx/uCiaO3t18erKe8qMGpr6yPLxeb7hvy3XmEt7ZpzrvAU26OizsUG3s4Ng7pGctL/JrbKE1qDv6b5L6L2T0W14N86X/pTMhIbMA25F2pu2b5bORb1c11+4XzvnkW1C94aLq8tNZdN9I5bqRDYFA4ReOEiz3QdOMdOQ00BZptqPiVEKpP6A+XB6ijl+glc1YPPlNmw+VoyQ9GxK4+xa2hOsrXBLtV5DuXBRfQRoMTSxqcVPbBdco42FOmzoTSU+jswVq8PViHLwbr8WGnBu/bQBuaoAE0SwNosi3umYbYEoppM01CO2kS2lqT0DaahLa0VRgoq6moXlNRla2KqWDraKSfqHmhHE8UBivwn8FKPDdYjecHy/BMpwr/sG346A3NRp9qNvseEBjoHftUGxqjnaJe7RSNs7100Be2D9Bnmo9+1nz0jebT3oqe6SstRC9pIXpfC9EbdgjQa3YEqvrvQlBG5eR0R3/4a+jnXRn1p8oH/7SGEf2L/gXzndY553B0TUJbSr5N68k4aPOX7hDlaIHugUT27Q8DvGZQ92GCT9Njan/kqru9+4PGawpN0JRERe6z1UCTqCZHQN8HunbjZu2m5e3mce2Whe0+S5X1TLttZbt9WZt21mO0/Yn2f4H9B9puCO1HA7cWrvaDdptAh3kgLoWby2HeWpDngv8u4LcDlK/gX9MGnab2h869k73c2benOk/1+nSc6fWs8TKDGWp+0btkibd9OydHTy4VYOwf0OK725+LDwhUK4/zhCf6DEpjxpRFJBeYUhI/OnVii73LL+aU2VZ/iK8l3/Oj2l+trP+B/4+hDvHckQC5phsFtCpvpWKAv+WOBViV8QisigLwqK29jvYDS5BzuirhrdUpm9lj41xHJW9bFc4OeB9BINuYTnpscqPuRNp9/42uzsbllIRjAVNv4AAshMwC3GprJfgV4B3HP+o+jIyi2SMDdNyQ2JZ3swMdIb7FfoTBqW6IbAO2GSA8v1IKA7BcW0pz8e2/RmNpW8oSX38gABc1pJh8Bt43gB5XFzjab+qmLxOArSlnAji8qBPxA2s7bsCB6gZG5QwFyh8m2Ips1gxLVGkd1AWQyY0sIeJD0jrX10bpBmlihcc6ZACTMhJGmsoInK1x++aqAULasCsG/plRNFgAOaRWNgdZnm2kecX061S/LazATiOgtapdHdQakLUgNeXe/Lbrolb55oluXpRfYvSTUcZc1dqhknPMWHHF4iPD0JZfb58OOpUpQ7VrloLqRm+na2zcVTZRY6pHulG9La6y+qh5HWe4qurnruo9SP4LTmpEaoCYierT20ptkADaiA2xxEAyw9Y4+dBGo0BmJSLI/LTdlpzYYSZQuzCZDZmd2WZShIlregqRJRsuLjL7s703c0fWfm6iPh1Z2/RZPKJGsULMzrzqe01aDTZ6uoH1kb4h66xLIcuSdSapr6aNBBFRuMhkbmxq7mUaXpZhThau1XP6TW2QqodLGbWfy23pNdoTftEytg2YSIw1syGiG3L2OF/kIEALhwEo6Z5TjDIYib60AwW8fOSIUtJEUqyESxQybNoORSvsFLC2d5HCt6SvimN+s+70sz7Px3/E83pPaLnqqjJFiUmMy/X1WSUrcw4mlqZp6YayWtqGtFWjOCvJLAv7tSQGGJ3+DkGEwEhYf4NZdHE+EfbhNKXjhBSr0L3D8iJL16RuKFLCj7Kjf9wQ7T0d4zqGHP4D18ApX/t0Wm6to+Uq3pOcOtYl45g+sQswUoYRZhEQ7n3pXa05TDDz0MKR/Xobq74UCK4GCIcc7PCosR6kFgXqDaaBrlHw1TiLpnTspz17zuAw8foJD02JBv+Gd/lQhgfLrk1ZDptdTWWdGuuwZx172AqYdEVSpZtBjbO49kHSRnmInp51sQO3KxwOIZgbczTsSozBxBgpZSokNxFJK/Y+tPBsJQrypnaMJgybuG+Ilw5hOAz8UfimMndZYGmoEy3S6/GcL1x0HqcZg3K9RldNS+zTHLshUdh4t22WrCenhiwpnEUf8IRSVNCSHdgKpbi13taIiMsotcqVdXFE0G9kb2ePIO24R7ba2N0SRivslmarpYcxhpaiwUBkNajD9LweZRjlSFoWQ3KTmfIhZpTcSamOynJXAktbU8JqltomN5V2Zw8PVvipPo/qJiY3adf9LZbodwJrDxTjRR6bOj6GhPpoCPDWNV2StrilegU6tfjo78hOpG07qKXV4eUBbcTKuwJT2VQTaUckmju+SYAQqBT5EWGlyNqDmkt/k1rL2lJRCxEVmH3oX8RhSeFpuAwuhQOAutxEfyG45KfdWfVYQlgDqVHCFdPLuNGwpIFogwQEu3e56bJsixAPqYNoiPYQObCzhREW4yYYcywi520YC78f2+NoqQy2NtgjW2iasLIDYLQaV3EESaP3TDYoCL6safNE12UG8A+FQ7PWYDwso6z8mPMOwBYY8Fd4CU6Dg2EOuDch4YgEbt6u0WYqs9XJVTisCXmHumA3CV0ZUvWZnXED9lq69OON463zLY1Y8I/GAdYnV+hbJriSoPUGQ4fif9N2qv1ZDlNhZnimC8Z6v4kgGobbki5V2FYEJRHLwtoVbc2521HVYhwaqCtslavHwevVuUs+U4Ur4JXknKYBUqbubqHVArPVwc2I8komZs3yZZJXEETQAqLukZJVD+WayaUtzJtMzQSFSuT2Ft0eYl9tlZCYDIleEXmCgvcoXLbxWL9Y1/RKqIKoeAkxVXwmJxw4Wcqnlh2rWAZM50x5VJhBYdSmmytLpsttJW+cei/GlyzivyZvT3hPwrcyEGzKjmE6o8rKuSnM32q5gZsLFROFDQYfVHjGuhm2qGQLdg4zzExMxYiraZ/mWNTVScfE5Qm3DQCa3bThdw4XI+mQUqKq2xCqBiPkskMiziIiqrWoXMeBlgoLOBBkhICmPFwDGNzeDaIwU25riH3c1kSZaCe/+RrtJP3z/c86xte3wiofO+/1p5Y6ouO+3uL9CjvgvfDkdHeJyCWmPAmbks9lb6uZn86L22ughHHJiLKyA/CodTTEMa5HppTt1sktn8XfgYHMJrVzNuPYSiiPzP2MyTD0lEUAkLvLgbTa2QAZ3Fe7B0TAg1UdIIOWYM1Rt06Di6HE2C0aKAwXdl/owjaGd8ML8ETCRTMtkSRLplgiGI1saZy1xbTdTVsvhaF05yKiUF+Vw3GeSdvWoyYifCZKQRRXiqWbzSWaLSPLmrXdL2KTHflZyjyI4O2d0Qu1BqDJBDyGiWzgCsDCYAIGbKaOEqbhSfIEE5EMkzdgwBL+2Ti78KKddmR7iDZGHBp6Bv5XBp9RYPAfuBOug9/At869gY/A2hgDxglD7BxbGjPpMM7ud87CGkMPIjDWYu7cjt3LYrnKskMHyzhtHo5qYA+Mu04ewIGwDkNn58AsqXeU90qtfF91fli5jCil2J08TLSkHSo7ejKWfxehcfhFj1U993DWb27l06MzajwS9gjISA7J11264T0LWRlOSbNcQfk5V25sLWSaJF8UAQi/3Np2TJbBBwyqT18vgO2Eaifqivq0UQJFV7EETFqgEU4YiWBjE6g10P6erEPgtQ46Yj+fAUlbFMaK/PG0QKx1k8KRxFoIg4YIUrzIc0I3Z/K+g9xE4+D9KI2EdjeqQVrRrkZpcWmxG+6SRhilK/pkOPAn3cv5JNc4sOWAU9n80NCRpzZBFIowrH4n7nJz3GU3F5MriXYigQMIrBPoE2gQyInMvf5tYmmYH9H60d4zOLbQjH27IU6MlZyPY10a92hLO0XzEeDukxHNiHot88P4gva7k0BXpDFgsSWqSK9lc8LTNa+burqWWd9hmDLbtKP3JVJ40Md6VhW+Bg/BD4/Qdey0pQOh04jlMNCK9ZMHjRgmXlC4oaSGdKlLUUUrH/CZImYANlx155UYInwR1lIsX0zxdoXT+m+kl1PtPxPZm5V6bW2Ffo2+rq4KIQwEC+QGA4Y4rh1ffGERRv6EwOGsuF8QTwGEywYVbuQVcD/gT3ga8Or+JA0STiBst0F0UodieAwU63squl1Tr2osvMuwpDDpVFO44JphYk4T8kJqkCfI87IRh2c3wk1jhXR2VaWKBnq4anMqt1dd1WJAq8YVP0yvo3rd476qyGDAdMtoO1mvnilDort2zxCoaevuo7eVCqxbiJno5aJYqqWgG1Ggtg15OaklsSYYs3AcCmPVFPMTlzWPIYlUv6K7laoKsnJhJOKle4b7Vxohl0Gf3LeLz9dwMuk4HMkbUtM4YqRt7DreZxPIllMF0m1f1XK7CZmt2qCWnWJ4/c5nW2h5VTXTwDQccMJjmK6oYUX3+kx1yLYBp26Z70M2q08HidXNewa58x6/APDHAWsD9m1yEg1Qz45Y/LnCt+AVOAS9N0sLeT10cckCDiTQ4E/O2mJl5g00dkFnF+x1yNdxSD908v6OpvpZWWfKdsE0y8KD5AkDziYmwqdoq/4OMzFDDw1YIFMstfAaqphQTGGTQp2eajK2X86Mx9DvqkHF8GSgamQ48NRLe+tkuZEL9G3nC2o2IgNonZYtc9U277feSR43n0z2XWO8U+GtcAocDDshfKVJkVcpUT7DgANkDHCNwevmZyuqGeiSpLQKharYjgXKa9eoeSAfmJDa03VSa+58gta/xycMPJVuI2v3zOmtF8zck1RSiAIXbVi9p4RRmJnIPhMTZT9uG1BFIreTEKey0LRyBj6GLJGDiu4ylxUpqre0sjOdyEBH3+mybseGAXFaLkgGYkj72lIwtWEoDY8R0XbWgorcTwgLdoD155tNiIBAyOVAnKNAThcEOp8gt1TcQGyq0PcaTdHuVYXwbI5sV5rk7Ta0+zMI92rvcEgvS3f3OKWqzxbbqjOX+FVPuaCvpt/0k1Cgvzbez3AdHA7fgc/DmXBwroYN0A7gG/DB5LNmfQT3wE1wlLkgqKEFdn8AS0f/sY9ZOJSVrtMnA/hikii3gK35+NZEkARYIpnlZ0Za2JfvwrjZg+Hs/SnDh83HAW+AE1VUkf2BdTk+z5y0cwyggJ/Bu2AfM2clTPVodBJNXtDPEX4VdvcF98gzZp+W+JtJccH2IbaMsaEtdqVONbSXE1KWsBG7hBkGk1enYMv4HKIGWIbhEzEU2mJn5RTxcvlcloqRuKtQkZA7CZDPDEUrRnyn/rpXK57qb/nahi++Ur3aU7PnK2r3VLzJhzcht/Cv+1phUeELywffn4XiJfaU5iy/bf62emV3sQXAXLdMdpPaLzC+D9pmOV/xK8TpDU683upXjiAT+anDd5F4Sg9WM+/+7YP57DdC1JRLtLOr/M2c4LIt1igMKdRiQ2hUUKGFBUKstFpqV1iFt8xXAC1+hYiHWcbVODF3Y1IEceCpzCtSahMqeGXprseFHTA5XjJOAR9r6CAWNAuzvRB5odPyQe1IuoUyTHA2v8OKc1oty5FluhPhoQ52qDtNpUgR+xrGPsGGM4EEEibNx90F14xASOBr7joSkM8TrnbGbdXuyiBKmkoaFnjNlr6M5DNN8Gp3IF51XmV2tit7se+cqB8UuGwwosopSqpYycp0dB7Ys9Uo1VKkkKKrC/FpaMi9B7yiYQ5caoxumk3bCNLhymw97HiOwSHt2LUgFtP+s7g8CpCw0dtrfoB0VC1TOZpPTrpR1dq4LJeZavVQiha0QHk4tBWy3OzH6bqsgWj6eIcI9mDef6Y9Qhs/X8kUQbu1tSdU5t5dUwOUMMM+ZkGwYm++uEiiO0KgdcfR0U0HHtLKeCgtT4Wf9W5d2vfMgSGf27LXcBk1nmI+duPtC2kJu+r2XhQigwyU4wXBwmG4B1TUWRHBNkzyYWSTIYJkeErZ+XSol3rjwvCDU/a60RGqxN9cfDxoTyoKYfXRzgqtmFybVftGJlERNTG5cMv6qb1y/5y7FHchFTHEw2ZCiSsT/h4j+vVAbwit5zbIE8mp6vEep0utUJdSUKAIGImhNEWp2+6Bt8kVE6cdDtcM97VUlndWKQ4i6V3m1IKi/tl1Rqg71J+e+XBnSVs4CB1fcNNA7oW8Babl9sXMc12GFRqTwshve8fgNaB5z9rzdGRRpxEmIilsdfMFkSUraHNFYSamRrHit6IhfPBBmYjZSyjOt1a136dSuYQeG9mDyeLZpXhKwkmEGKvYJxrKqRRXAzBWxe01waQyazIPEAp7MJo6Zdtu68qC3ThRCytbZVF0qJBm89kEgivbBlKcYcZmzFrJu1vR4hYSskgFrCSb9RkK0+JhyrEVMrHMN7CMMefXlyQqRdsCttbIMOKePYsRnGostTkePiDS5XhW7qBoRjGwlHH7V6y49f9rCA1tJ3H0WSU91Rq8NvCwRomM4aqsphv3dYgmTzTYOSS+QdDf8KSP9YkYTb5NmkyK/ZlIZ0gnPWLLjFOok/jfE7F3N8H1Ur5zVV3MGiyTDDHhJn76DicgYDutsb8dUjG9rTXvDoCbzQOscvc+TGGxyogayn7NlNOSWX7JnB76nzHU+KrUI//Gbnqj43hu8Z1QUIDStfwqa5OtL8mZpCsTuERhCFFU826a3V3P+q+ea3zY+tmAMeTgFprYlwzD7r9a8yuAF/vX+DqshRg+BffB5bDR7HX73H47d1k8p4Ea7AMmRtz4yAn3oqThUya8X/gKZUm4KwWfUXg/vAinwRHwT/gFfH5V28iNiaGbhmEbHDZOsuaBgJ/1fynvzuSujFcmIz5YwVizGXLJQtgIzbEGp95r7yEN9X/5FeC7v/U+qr+9nhN6m4536F5PCK+sStPzAxs3LrDhZBu221DZ8M6IL0ac2fCt6NPR7RHPsWHZBvuTTaSDrNuknuOm6YrF70TGh+RuMy8K4GaRRC+TRu/X0V1Oi9MCWmm/zubyzs4ppJxVrlSGrGvLrdZQYG95IBAiWsuJxJBwUrlQGDIuKjcaQzlby3NyptWMKq+pKf3saCm9gaKpcS79uuzREwDCqfP5kuO5ON1HrB/1pFHOF/g5p1vxRu+JbdwAeKR6v6kv9/4CqndOoP7J0Ow74haVrgj69/q+UjtpYquSoxwcXaLg6i3MTrFJ4/VnNmSDoIrg8VZs9vE4XzoMqdGiM1h4iZDmc1k3yFgi4UQbDTqiU49P4vKWuytOnfUk5ouwrreatZhUZYrrIeQRyCAPeqvD5/Yr9jHur2Otnorzs61rLU9yT5zwSobcKRXDUdaapSbxVj9it5UWy+uqPqmSuONRHF8d6wnMv1S5AfAqrUvPWU3qXScXmIfYKRnEXg03bw1e99RAv4Z85fV/oOvaVtF9G3BVicTX35V+vLnKmnL2ipZYBLhOAVweUxcNPO8YmHhmLxXv9yuLwHw/bem5Sg3uaiO9kkjWGy6nqFRJKp2AXBNSLoFVR23g2h2nqJM0fiWvFMGYVKZMsiDc1689sz3smSHba+aiILBc4uuGqI71ED+eVyLzvCLAovHuKK4caJAB3T6SoDjQmochdYN/GVSEonJK7eKFS2WAgOU1XomK8nw2KdDN4VKdWOh2HwdZr6GV3Gt/lS+iDCoB5gluMS/Kpek08NVIEkF/Xo8+k4R3z7kyQUKma53J/LMEwHjqDwDkAJ5u1O3cEXn7VAlfaojC2i8+zQQ1G0u0qdXHErYazDfv8Tkh6AtvG7zsxgHA5fv6NRfWPVE/PXiLgK1qMTkgtFKZuv9h7vWBvlKgz5P2brK+kU1krHwB2Nhe9XSQHiRPbkXoA2+fkLZ6KnfE0bWX4hLpweE5U8KIJH/rBqyJY9obxJz4o15D/IiZmImZ2IhZM3O4osaryaSKdCEldtrWbqIlZbmmkSCGrh2RKI0TIYTMqKEsyQDnsjmRRqQ+CSCt7Zp40k32g93ViIy1hylJB+Kfawd+PUPwbqC60Pbr8af0Rqb2ZpD35g3ZBWEQ4BZ2E6SjERqR5gOypWcoBIBo8yMzHanlsQcpre0hOCd7KD6BHpo+qT0MdXp6WbqsRklbH0W6DEAPMpnaQ4h29lBi/NFDc8faw7Cm5PVnuTJcmgrdDdBTJx101JssRpRoNV0uS4WKXLCrdn3z5UsTIVMS0jVeD6F6Kdx2enm3p74i21bFgXc85JxCMPR2Vb4rLYIRW7Yf6/Uv0qkHoY3W16rybRtcTdTPL+8FYeinso/sa6UnEJBBBVxNosLwo244EX5GEzfosx3u0zHF4vgyWsQqLhNVkgNuL51YleemjBAm6VjAssPzTUxEVFQsxLBy1IaJ2Y/06ysNdOAWGsSWrhht1LkOdaC/MU4BXAK5BQkWItRvwoSLEHmGXGyMWDXUVEttceIlSJSkTpt3ZIr8xDTpMmTKqkN7Mk++gpaOYe/Lt576GmioRCOlGmuiqWaaK9NCS61CYIVRRjtktifGmGyCRdZZGQrGu2akGaGRgUlhocoJt8LBYut99MEny21yzhmbtdbGVG39rp2zzvu77T2TT7X3f/t7+m7RwRvT3Asudpt/7qVxOuuki266KrdUhR66F+rfhvvora9+nulvoAEGGWKwvZYZZqjhKr3wyn6XbbXNFTddDY8KFGC7HXbb46SddjllrA0OO+JglKiCiVGjCH+pz4pRHff5lRoA67p3CeqmcoKketMwSrwG/L6d3mD88p8tVpvd4XS5PV6fnwkIYmYBs7Kxc3ByQbil8/DyyeCHCggKyZQlLCJbjlx58g1VoFCRYiVKlSk3TIVKVarV1DjwXTeJtn7zVlCiSTW5T23+WlsCmtoPppQyDAeVdxrmX7LD8Bgbnc/NxqxYjhE2uOO5nlMjrIOHuPuGw4fg/LK+/MyvEDqPBOvGjym7wl3awQcWX3/nMt0ooJAiigPalRsRQCBBgPWcKU+kT8yxRY9A66x06sakIFQJG6RcjCfPksmS0Vk5Xx9Wqubtt7xvVW3/r6C6kbId/4AKnJz9gfIxZ2qgfGxWhXJQRSwjItPBHslLFUgNiJbUkFVBS0ZIS3FIS4DTUiWnpS6RloAKqdtQHPxUcINxYFBR4HqvwlD1gMGhlf7jIPAAcMd9RlP9WyLE4u/FBy8MM393CIi2YUajMdsEekcj3HETHXbmiJ/YOesEw2D1mwtM5BLkdeGSWMq6AYYjeGBAC7yEEXZQepYY0HU4uGJnhZwZ6CYQEb6Lpfwgc7RgJwHNODsKl9gJvwzoDjlBwLih+4hbO2fuIkFZVOyE5Qo8hLlDQOBn5skiVX9BG7IM6/KGuB+N3oeNbQnNM/XXAE/UThEHBAX5PEdxBSINCDuhEk4MQ/5EEzfk+/zv5bmQHBH+Qxd2Cwk7yZlCCTkk6Kb43SRPQEZ5frKf120Tbz1T+oBuXuAfsodrI6dzu7m5aROEayS72H6yk705Dna+l53dzcZxrBwEYJZjYXEvM6uQDDE9IJNCNjHiXmmMbka6Y6DBo6fZyLpUOFpqLqChOmoqHBWlNqCkeBSUTrKcDEdGzgekZEeSQo6Y5AOi5F4Az0jmsB0Gnbx0NjEpQiPaXqkEFZlKcChJlCSndJpsYjdSAgLJ8csR1UmmVRmXz5/7evzi3vf8J/qjF2pZ7blneY2OhoeUDo9savdod7hGq8Ndu2oPaH+4Q9vDDVofJldiuG+37boVdos2hytUGm7akl2p1daS//gbunWnUGXvMnT7GPilsH0567s5pF039ORjExF/Dnz74wfcvengd5f5mcHqsZEo7R4EOMsJLbT2VOgkBuFedTIXSkF4BwQfos3IrF5yEu4bxCoDAAAA') format('woff2'),url('data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAGw8ABIAAAAA2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABsIAAAABwAAAAchAIKSUdERUYAAFhcAAAAiQAAATQq2xtHR1BPUwAAXgAAAA4eAAAueIspnAJHU1VCAABY6AAABRYAABKe0ti5NU9TLzIAAAIQAAAAVQAAAGBo/J16Y21hcAAABWQAAAGYAAACAvsSjndjdnQgAAAQjAAAAIIAAAC8FwsLm2ZwZ20AAAb8AAAICwAAD3VvxKKUZ2FzcAAAWFAAAAAMAAAADAAHABtnbHlmAAATlAAAP2QAAG7Ii71PBmhlYWQAAAGUAAAANgAAADYY+Sd1aGhlYQAAAcwAAAAhAAAAJA8wDDZobXR4AAACaAAAAvsAAAUAjaApAmxvY2EAABEQAAACggAAAoI4BhyQbWF4cAAAAfAAAAAgAAAAIAQ9AhduYW1lAABS+AAAATQAAAJnkYfHqXBvc3QAAFQsAAAEIQAABs0y50E9cHJlcAAADwgAAAGBAAACAM4gBt0AAQAAAAIAxddkoRtfDzz1AB8D6AAAAADVg7ZYAAAAANjaLOj+k/8DDNQDiAAAAAgAAgAAAAAAAHjaY2BkYGA+9u8cAwPPlX+T/wfzXGEAiiADRgcAtmQHfAAAAAABAAABQAC2AAoARAAEAAIAEAAvAJoAAAJBAOoAAwACeNpjYGHiYJzAwMrAwNTFFMHAwOANoRnjGEIYjYCi3KzMzKxMLEwsQDl2BiTg7u/vznCAgVdJlPnIv0cMDMwvGOUUGBjng+QY/zGdAVIKDEIA7CIMcgAAAHjabZPfS1NhGMe/73NWFqhDKye6Zup0Gdv8WW5NnahRVORqpmXpxaK6yAJD8CIrgkJZaJEXXUR1G5QkJPTrosD+gMK6KLwIJTQsRcrIi1zfc84mIg4+fN/z7Hmf9z3P9znSgEYkftNkFpWqHuVyDQ5xwKEFsF264MYIyhkPks3qMVziRQ3mGXtJ1fe4IXIDpaoHHkklNuYcppYTD0kjLnOt5+MPfGoeleJDNTWg/sKtdWGnPIBV2hGSb8x9Q3WRTQhpeo1XCGGBz+nIkosIqX+MR/j8jurj/7Vx3c9YGe+fxbx+BKUbqdow0qjpEmb9KhSqGu7nnakF6gOS1Tig+hHhWXnSyj15cFKdvL9TXYJdjnJdgSAmUIGJ2IRa5HoMQa2DuaWkif83I0Ccqpt9+owsdYH7ShkTJGkbkaSmkCIWbKAWKD9s+Mk7+JEjmShI9J7nOyUFhXIKDbynVc/hXUpUH6r43vnqC4rEiQKpZs/ZeyN2iz2sZ51tjHmxRdUhg+9yzzj7DM95DrsaxD7MwSYa9zrhl3GUaOuJn7VnUWz0fTX3YdXeIsnwwhX3Ig59sOpeYCE2RxXWy034sBrev47neAwvVqJ7Qc8kgEaj72ug3aXmmT6sBJNIInsxGZuiH4tyEN5lH1bDvhiq92Ml9EJa2FeqXsvSz/vO0L+b2K3uIKIGkKse0peo+XnIMdRo1znvX1GcgL54lrmMQ5xRvzoJFwlgKBZWzciWHmxVv+j7KOOj5rejz55e05jhNs7+NMKqk/cX5u9CBl5jh9BHbYwz9AL2dVbYLdOwawMmliFqL/lBnjDniInWST1AhslvBC1FrPmdPOPzI3MeeY4DM5wRN6klTZxVH1XHBRtn0lx3Iod5NubZmGdjXjbjNgMzz1hLlN9tFH3kHGkm9XFtjcfayQllRRnxqhIc55wWJVSuIFPtYX+jaCMtJEzySSReW69xnnSTjni8l1yNP58lueQ0sDRCPgGxVOpT8l7dXhpcIz6Y/BHu/5zu3X4AeNpjYGBgZoBgGQZGBhD4A+QxgvksDA+AtAmDApAlwsDLUMfwn9GQMZjpGNMtpjsKTAqcCtwKIgpSCnIKSgpqClYKLgolCmsUlRQnKk5WElIS/f8fqJsXqHsBUFcQii5hBQkFGbAuS0xd/7/+f/z/0P+J/wv//v/75u/rB8ceHHiw/8GOB1sfbHmw8cG6B3MeTH6Q8kD3/o77Xvc9752+dxLqcpIBIxsDXCsjE5BgQlcADBoWVjZ2Dk4ubh5ePn4BQSFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTS1tHV09fQNDI2MTUzNzC0sraxtbO3sHRydnF1c3dw9PL28fXz//gMCg4JDQsPCIyKjomNi4+IREhrb2zu7JM+YtXrRk2dLlK1evWrN2/boNGzdv3bJtx/Y9u/fuYyhKSc28XLGwIPtWWRZDxyyGYgaG9HKw63JqGFbsakzOA7Fza68kNbVOP3zk9JkLF8+e28lwkOH6zavXgDKV5y8xtPQ093b1T5jYN3Uaw5Q5c2cfOnq8kIHhWBVQGgCq95OkeNqNV19v3MYRX1L3/07B2QhcA1TRJbYkAlDKWwvZNRJCpztZUmufpLNCynZDHu9kO01iJ21lp4lb1a1rY/veut9iab+c8hQ/5MPkU6i/2eWdZMENSizJnT87Mzs7M7sbbvznxb//9ewfT//+tyd/PfzLnx9/8/Wfvnr08OCPf/j9l188uP/5Z5/+7pN7d+/sj0fZME0+/u3tWzf34uij3RuDna3+9Wu/+fXmxvrVtd57P2s36otW3mx0RGfcWFpkeaOJbnNp0VKVjqpqpLoecBVuRe7mdtRddVw3doSrQlXyuvSmI5lNCTFEYBTGQsTmjtjc2ot4VyaaCMzgDcjQl2e0oqfsziBSvQDQKXhNwzPw6hny+pQsuGJ9KUc5m/OAD53c0p1y558xZhILNQyEK6IxePMaa7mDpINea9qz+Bok8kmbDfFmH4mJVfT2IsWT/fgquJntKd12JuwX4pHpJ4pnnKuKJ4b9SLrKSoRTwNsRPGaljnSFy+N4cvx6gbiFC1k2W8mF9XwrD63nO3vRUZsx/nwQvbQtu5OsxPnPQYuOOGOhxtqEJSQBnAC2aWFlXto1ze8chYwdampJIzScYRYaV5viLJZNbINrG0W+VhQyG5SSoYRT7hJwNYM7NNzvFdw1UNpE+ZbZFmOaaB54CSsTNsphLayHLXvexloQ6iUw34K3brFXLWvecnLI3NboiXWY10PnSEvaLjgPwUm4wxkOlhPbKUHQZyZ+42QGN/aiVy0G+foLjhV6lha7uX0tECdhvRVh9bq5dS1IENoEznldjrBW4U5EvImDmEd0ry4tUnTxSIwdEefvvisfdCFG5GnFTwJpgoxCS7QvIzDnvPVM9BLiQKKgrQOV7fJEDZMAXd7uyR7FQUrc7EJuz3m5VfKsD9gH8FSlpRpivKKaYmVG+ZB9aCgVolTFirIuGD93RZdfvCczMUTMhf3ojrMfp5CtQpGqklhx8hJbQYZctDCJbs6uBZjNJqLuetC/ibSk6XMpV3kelvw0SwledZHpsiCJ1dX41IgulypMswQc3VgzI/eA7IqUj+BXTBe+2hHo7u3RmMFeJFsjMRLwaRjKFNN2eBY7Ms60jzEeprGlxfJJPSrKkU1Z7mX7+Ew4GyZiaBCUj2dxd84i9sF1Gic2SJ3+W/ovN0R3BA5605GaQ4y5fBSbIGF9XSn+J5N1ioljTbVw2f7VFLIKCACaVHfeBO/OwB69Cbz2vokVVfIp1iJXfeKoT+NgxpKqwyGXvC0uC/rowWv0JqqMzmGWUjmqUOwBsQEEj4aIXgjsJXIacRhW8mea1OfBGyJRRK0BVNseTUcd9nkS8yQBFvniOlyV8ef7KQUXFdq+mU8f1R6/VO5gLKOUcVQVNX8/HQsX9VlRmhrvk40lWMd2IsUcKYVUFkz0emCGeF9V/HX6oT0IRDrGIpI+no712B7M1d4haU5XuDFYbE/7Eo5DfRjSJ5OIRnUb2Vb2zsnzkl+SqFO3UWJLfrabYCPgbd7jeqlTRDI5YZ2gGIIMY90jRozXzVefBfntqneC0e1+YJhrWios245Uf8pS1Q2dLwJl/2QZRJq8tY39pKQXipxX9tbh3hBR5dBoruxBVCyPHr9OQ53pgplhwOhCSxuhO7W3aew1Siu6tXSre6rmYaFVCTYYcpWmcxIE6MNoM2ZOm2smgD5U8YKiJ5IUQMkb6zmZDZBTwcTRIBX0OpPj7/rYgRNBbxyT+ppWRCO0aGkEk7sqRHybKwpNpjWprespnEY3dKtqm4lmplR+0/GF946Ov2PGc27xUMzQLJ8VWVnk3dhRd+NgZEZVigrOUVFRubMtfb64iWwQbhV1DNNHVnG1E2Db0HN7Zry6YaoDRaXVE6yHGCo67AJTTFy16MOQWuKqsgHOeuKlzayaWKZfXSzntlVFtadi1J5vodDLLBmZrRleZsvOFToMVfRC1/XaHlBpGkRlpxTrkPHVw6CIYvM9CGb0h5ST1akna0STM2JZi3toYsMvvgdB7a2jZO3/U1YrVlPVNY2qkV/7cVVzZoE2zHJt2EbyhqkTwPqZlFTa8tvvUIa2/HPAn4dpl2DkpcJK+OYbmNIn1TWN0SDSrUrmmGXzmiC0wfvahHYTxDasee0YLrSj42N2EEy5jRNgd8MzcV6Qi9EmOh8GMXo9ehOw9OgtMqlZZGnrTNUvxJs1rb9JFDNhtNGLmUSCcquFU2/JKUOjz9tw12XtTx+mApaXc6vqFwxlYrC9y1I2p/Wfyv8RjpxMHydZLM8i1GOsB9Z6/u2U2lnsvEYXqzw/+xOySIdGRzU7dH6hvalOAfA+1vfx90XN0ceJU47RKErF09iL5PvqtCTcD6Zjp37b1yldjD2DHUSPgSVPfU87ibLwL/suvQ65TmujGL8fFEfbx7S6T7S4JwHn93DO6lg4bWGjvEdbFSfumq+LnMSB516a6jqkLy4XcZbapvMwzvyiza0r7Iq5/ojiZoE9oORFV5xLMW4Sk+MfFmJTqmxs8ngHkvP2OZAkP4+rhXqq3VvQhMZhF6/4BRfN4CmS0/CR9S1bbu7ACXQHayw7DbrXTa9UL4IfI3MajyqlPhaPXHKF2hVf4bDQEYrzWyiJQK4txFJiO5WC7k67kfkSyVpcoJMBnWIKXmcBt7ITsLVA4ZZOjl8t0AVppu3rqbYvoY06cqpOZW/VRlFm3TSxhqbNz3/JhNFf8gul8pbcw43QVT8lxYUdAN9ZiLUEWPKCLPkvhv5kWgB42lWHy1IaQRhGewCReNdUkIvwNQIy0MQxxnjXGe+jJCpCJzRjdjxGWFrlRsu3YDu4Mq/Wm18p0NLvqzp1jkN/rRauLQ3PIjStNpS1jMYi4c9Xwm+xCCnqqAtCTXRwVSZUyxqXJRcXJcJ5qYNfJRs/zToqZgdnpsapSXCLhJOixnGBcFTQOCy0cLBA2F/g2MtrOHmCnSPsZgk7WRfb84StjMZmhrCRcbHOW1jjhFXexg+4WIHGdxCW04RvKcLSHKEsbBRNG/mcRs5Mxq+zScJ8Yh2ZBIHHCUi3kY4RUrOEuSghuRHf82Lb0X9eomezPfsSd46cKDU/8xk5zafkjJpS43xMDvGQHFMhNckn5CgfkcM8LA2byQk1osKKqU88IoM8ICMqoIKOM2T8Nx5YXVSehumq4kcuPd+49fO1Hp1q0w/f+kw2vUbXMO7Vzd0dS+1X/Ida4zHIXlR1A4GDaqMbCt4rJpgQgg0uBv5K49373eeb9qNvg/oQ77O32DM2WIGEAAAAeNo9jE0OgjAQhT+7ctljuGZtSIixBIEISjHRw3ghj8JhOIHltYJ5mcy8vzETezNhzQe7+2IhzNuEQ5ij/uN4oRc8rRDvjiGxUXPTPSa/EnPkvMmo15znwSt1n/Jarsq6f8tJb6T1lGrHfZd65qLEwFG/Tso00uPPQqlaTrcAQr8lpQAAAAAAHgAeACYALgBUAG4AwgEcAZIB4gHyAhACLgJYAngCmAKqAsYC2AMUAywDZAO8A+YELgR0BJAE/AVEBXIFpgW+BeAF+AY+BrwG+AdQB4gHtAfgCAIIWAiACJQIugjsCQQJMAlWCZIJyAoSClQKtArQCvwLGgtMC3QLkgu0C84L4Av6DBIMIgw0DMoNEg1MDZIN4A4cDoQOtg7sDzIPWA9sD7QP5BAgEGgQsBDaETwRchGiEbwR5hIIEiQSRhKAEpISzBMUExwTQhOEE+AUOBR8FJIVAhVEFdQWOBZEFloWYhbMFuYXHBdEF0wXVBduF3YXnBe2GBAYGBhSGF4Ybhh+GI4Y1BjsGQQZHBk0GU4ZpBniGloachqKGqIavBrUGuwbBBs8G3gbkBuoG8Ab2BvwHAocKhyGHJ4cthzOHOgdAB06HYwdpB28HdQd7B4GHiAexB8kHzwfVB9sH4Yfnh+2H84gHCB0IIwgpCC8INQg7CEGITwhkiGqIcIh2iH0IgwiViJwIoQi5CNSI6QkBCSIJJAkmCSgJLIkxCTmJQYlECUcJSglNiVQJWAldiWKJaAlqCYQJkYmXCZwJoImiiaSJqwm8Cc6J2wnpCf6KAwoRiiwKQgplCoIKngq+CtcK7AsLCyALM4tMC10LaguAi5YLmQuui8UL3Avpi+wL7ovxC/OL9gv4i/sMAQwDjAYMEwwYjCSMNYw/DE6MXgxkDH0MjQyPDJaMmIyajJyMnoygjKKMpIymjKqMswy1DLcMwozEjMaMyIzKjMyMzozQjNKM1IzWjNiM2ozoDOoM7AzuDPiM+o0XjRmNJw0rjTANNw1SjXiNew1/jYINhI2HDdkAAB42q19CXgb1bXwnBlJI2vfd2tfLEuyZK22ZVuK9yV24sQribMvzkBCIiBNCCn71o1XaF8XtrYPWlp4P+URoNDSlle29lHa/0FLKWlLKe2jO5QubBn/994ZybKdkP7/98fyWDNzl3PPOfcs955zQ9HUOoqCv9HPUAzFUrqHgOVoGUcDlUzGYqnWKOh9jN6nh7/x58AXO/n/pp85tZ8+59QXKfQPqLp/ravvaaqw+A71EGpbSukp1Qml3lBBDcfSqVZjLmNmApZwLpvPpC1mkywwNqlYIwuFnE70Cy+++Sb/zoshpyMUcjhDuDmaysCfQSvCqTkhoyXoWTKZ1mdQaxlzoIB+M2NjN4yN0c/87Gc/E+q40WUHfQ/lpDxUfzlioO0ezgx2vVTh5jQyhckOlB3kSgXYFXaF3Oo0VNRyXYWKpWNpQ3t7Mjm/ZX5en8nE0mnhmmotoI7Ib4Ylv2yA/AYK6BfQ5bOXqI6ZjysvaRx1fwz9XqLEd8fdo56PuUeBNn/M/OzARweeQP/Qn2effRZMH/0oGpF78RZ4ndFRAaoZIc5abmhlUpYwE7EwaIgZPflJtQZlrDmQa4FIwQ3WXKQFctluKCBMolsWPUZ/zZTFmtOA2ZDPZcMRM7zOrRsY/IB5rWY4xZyzOT7ZPjAwrRltSEZmt/O3tmYShZ8U0pltO5Qz0/Kt69zpoYZ3IbhlIL4uK52aUa5LeF3Jht+HZkegJWv9bzYX5gfb4qGM9SSFKNq0+Dpjor9BaSkjwm6SKlKZcqMxqWeTRS4X4XK5JOvRch5PkrVzrL6SNCK8xmKG9mRMjy8xYUwGYRSZNILdpIEAA1YgwAf8MrPJkqFWvO+GpXd3rEsk1rW0jJMPPJrj+wIdHbFYsRgDru5VrPpwTxI/TQpX/kH6U8FTHNxdakl2dydbSvza+tfd1ceEj+KLr9Oz9EnKT8Upc1lJS+OcycGZpHhMaChoHCErG5EF/BjafCFSBdpiZQVgrcaCVVZgEGVMbsjQkr5yZmD74OH+3g5wOBCMnRv0w85iKGV/o6f3l8lnY9nUxvTRuVRvb88FA6VDQfC3u+Oj8f5sZF0iFPLyTxxqeiIHWutEIr0+geYdmhvUZWRuyO8j00KYExkyGdD70uIRSDIqSo3eS9XkPZl7BSuGCEF51759w919s7N93dk/X3vtnyfjEy9VKi9NxFFdE6orEeuyQl0roQJmQzRzWROpN4xa2CzWmiRtoLoROAJXIbiMlOp+o47VodpkvhaSULBizrUWrFrEvJEAO7aWPmg9IBuUnm89yIx1jLKj8IW98nBvhP7AB+hIb1i+t3nvXixjuqk8vA6vUUo0TxQKkMo4qZSW40FjtsqgORoKoGkSyGVQ+xl4/cGBB9HnD/jyIK6fWbyReoQ6Smko5f0aFgxUKYNAshYI6QRhpIVM3tCIZZFG07NxI+O1YkGk95h24f7BCMdgTsA1mp94PD6zrxu6+O/A3ACRi0TuoT6UlOJ+qdKAJYqIcVHabRYlnaxexgEiHQXNhI6K+ykG1yOUZAInx386jkRvFpVoRbw4SeadB/GiSuvhWCvHSitaNZlgSGhbVs4ZOpdtgYBf5L43jvf2XrJhwyV9fccn2idbWibb2ycTicl23dZ/27Xr37YK14nhD46Pf3BYuBLYEugSRrJURqkeYCQVqQp3h6BjI4WMPvC/j8S/k5+ic9NrPnJqslb+ZwhOJ4bSaeP0DZxeWnGqqlAW8gXMRhgwGRvppgVwtYBwmXi8kAm6i9F8j2KsITvbWdqeP/B96OXXTz3RWeiON+Z9pZDH29+aPye77+CzEwLuIouvw+9Qfy1UpGx7Sg86PfeuDnQ6TwvLtagrHhvnkQp9Iz6Zj80TPGEezqQFOGKQy6RF0YMAEvGHZK6Ixp+eM6wb041lwz2RSG9TMVcYGcpli+pxw96Jzm2FfFOmp2tfSRcc6/B2lH3FYKDDt66UTXXkI778TGo6lxsxS8wzxc5teUE3IfzQPoRPBeJEZ1mjAbmUk8sbEGobCI70VW725QCJSjNmaj2SjxfxX4Py5tnZScmvbirDi3xh/U2/gjH+foJzhINTqE0fFSpb7GrObjf4WE4mAYlPXTGYOYOEYCA9T+RwHQZqw8aszFrzNd55ZcuQdlS3vq13arInWDZNx2EH/6pTkhsr7u7sOrdXF93Y5e4a3tCzZsrXGIa5iR9AomOhXN7XJYwR8SqFaGKigmiMWlOQU7k4lcqE2NWkrg6yyrH5gtFa3/UKtn3u3GKi+f6+e+hALrurVD63u6mvCX/68UfXs6+jsLsb1Mk3aFvH7u7OfeWJSG+0qReTKtobEXHza8K/+nIDQ3MI0TJhyiBeBF/OZ4YxKPGfh6/xJ6x038TMqZvRGBhS7100hkYqSuWoYjnyjyjIopCMcseS4EjCu0k4moSZJCSTmsYc16iuaAKcpo7V5ucPHYrNz9dGmaufnkvsVa/16r8/x3WWMk2Z3NbO4tZcJpIpdXHlXF9/Ntffn+vauLGra3KyS5efb++YsUts62L52XR6Nh9bZ5PYZzra5/NwW3c6XSym0938/YPthcHBQvvg6WgjCXISiQmTp0obkUdKUFVsSzAzhurUFYnzHyJZSueW+gidhghZBBJ5ajQRqMS/CdMCWQQSCfNBsBUlWK5T2gf1VkNFqtQh4YxFp6FOdNKnEaPVX7iq+p0/vCRZaapt8QvUt0jbDkr3oMOoNghtE9Ff3zizXA3sENvtX1IHdV20L9MMRO5TbfAg/AZZqPL7aJboykIuZJainwJcyv8Uwq93f238Wsm148KYu6hH4V14jNi0zrKOlXAsxXBaYk8xcopKbpmPYRrgWYl/uuCbfA/5fWzgyIAg94qoz0fEPiVin6FcKIc6LUKIfwn1e/k1uMuvdX9NsGXegceQLeOimpC9728yVHQNHNLMMWKXZwWpvFIGaqARlpnr3w23NgW6C+midty8e33n5kwh5nPP6EMC1oFJ97QEM8FUsb3Z1zHXOp0rjEXc+WDzCps+t/i/mBL9H1QHNUAVyn5NmDMNcK4ypzG5XCYNw0py0JHjOpQJkLMJjsWmeWzLfDI2b7Ai6zxJ5q5kGWsG/OEImkz+JQsMmQF6NI2wiKtj2DSyx5YZk7Du/r17T5x33n17xgZDHTrbcEtuLpOdyUR67ZJej7vZN33j7OxN09M3zQ62OQcm48PD2ezISHbDwn379t23gK6bLooGQpHsfLFjS9bXmOLfbYzPFWdvnJpC9W6ccpW8bw13dQ2PdHaOCGPXossNSNezyLJqKwca9qjgKhWMqMCkArkKVLRUjSwbpBWkFMPKKxSNB4/cEswTJSRU5iuIdyEDgYgPuR4MMqEY8GwD3fwQ/72hefjmNpfEtQ3bDE88AWagx8Z4nsiz9ajfPOpXjzggQmXLPokLwi7uw2HYF4ZwmNJHOL28Im9rgAaacnJCv6VDGVGYYcVp9K2QXT6o6VCzcenreoD81rZcIt9X3NnOvwEQLLgbc4GvfivY7vF2hL9OP5OeLWTHzRLDbLFjPguf8uVczpz/Vf6RYLvb3R74m6jT6K8TfkV2hMvCsRqOZSquhqodIakztpcTGAEGbV/Zvv0rC+uvbu2Kbi+NXzE2dsX4FZu6W2+a0e24e9++u3d0thdbW4avnpm5evjczmI/ogvGz40IPwpktaIeFUaOMmAsKOTVHo1VFRWDAtGcMdCv/8mBO2Zn7zjwk59c+slPXnol/cymL+zb94VNEzdeeeWNp36Mx4HahT+hdpVUtOxAM93Dwjz7UZZmWUop55SodUZEtoDpQ3XzHv+sh9v4hyDKvwDD/A76mYk/rv/jRH27DViKYwnCNggtNcjrpHi1JX2g1s4UauRv6/nviTheRDgOU7lyABkEMrfFTTe6ufZGkDSaGml5YyMbtnDhhoqA/SqQWzA/zJ+ZBliYFJBqxSKDlQWg+JVdu76ye92HE50Brmv0qnXrrhod2h5weCX8P2BW2tyy8w7djnsWFu7Z0Zbpak4IZEmEXOtS61y2nuPJc8Xx0hzBowdJTKWUaqC5hgYlGrBSXjUpBN/SmNH70LeAHo96Cg5OTfH/ggbN/xfkTmVhgH+EEtuj7iQ2t+oB1AgjF+3aDK40RYxuUs6B7IBnUTktth+0Uk5BV7QNov1gQc4QETGoOzwf7jpsWx/cVxycKmwv6WbW+Q5v6IW/8/rRcwtUtU/6XNSWhmoq2xRyjbxCX8PAAAOvMoC+MHIp4YQ0mueHKsLCA4InAxlzA5gDDGtGoEmgZz9Cm2vvnw7hQV0LRyX8s/wBCUxd+d9Vvvi5sPZSbpDSmCOkchFejBnEUVPQzlfQCK+eEMozBiIXzGUFq9JLga7oSQW8+IHr4B+EzUKAQT9WhJ5jr0pePTYpkfxu4HcSySRq6AF6FGH2qetO3Uevu45vr431QtSumjKWG+RqGWpWXW0WtwqZCCYSkBYXYK9EMjXLX4+uqL0nPwRfPZWlpz7E56o2C6NEfLrc92GqhFipDVYbkZC7a9u2u/buJdexy0dHLx8Trrpd9+zZc88u4ToxevXU1NWjwpUSZYIXjUGFbBM0yxRWTqFQURaMU9WyWbYkGfSBJUGoX/9G556urj2dt0y92dTl93c13UY/k9/e1bU9z5+Ei8KdPl9nmH9H9AsWnyNjNCLpbC9r6Qin8HAGeUXBVGhxmKin0CqbzMqGC5GCdYVhRo9ObNlbHXNPV7rn1u6ZnuloizDwtZeNOWO77t4rjHz6E9mR2AHPFYnLI+f3COOfvKY2/k5RZ4TKZq2LU+zXglZLqZWYRapaAjEqllyZekxowYg4NrAcHX8p7ulKrEvR39v1nYNTfwytidRQkp7uUDD8SxIIIsxc4O8KY8y8hfnIjWSUBOElRnWUIzGWizVUzI2cmanIgxDcrYEmDXxaAxdoYJ8GejWATBaNnCKKEtnfmfmaa7zk8CRhCYOC3MKWgAeqrs/ucf2EfnN39/TwxsTabW27urs3F5TrlIMdhfGe3uSmPYPntesSM92+8obejvQal845O56Zybb0eP2hzu5kc86q8+2c6t8SF+UHRiTR98ayQkoDR9MVmcA8eHoHkAOCsPSr78Jvnp6ij01MnLpaqFdC4x4nayjmslIjMTZwErpiFDgBzyDsVeirJo4of94+0jO1eXp6fqp0ZEI3eOlG+A7fPrN//ww8xXdtvExYo9AgePYRvaF5kK2pCyJpjNZMAU3MgGbLfciNeHgL/84MmoxvDw7SLJaGgPiAYm5HdU1YVmhMrArVNwn1xVktNIGuePWCGCcB/ZYrVBLt52Y/o5V8dMtjs5/WSfS3zaJ2/9LaSmvQlS6hqS5razv1DoHPgODbXZUbDSvlBjBEHDFGIoxA8uqeE5ITu1/9y67vSB7fBRU4h/8tWPkv8h+DGP8j0h62t/rE8eLG5NXxVptCMgj+svMhyYmdf5qCUbicfx7i/KX8A6huGNXVkLpI6jTIOOw+1hTskv+IZGoYrkB9Ps9/EK7hbXO0f2Lu1M8nBDm4eBXYGRtZZUdqGutoVlxlx2t12MNf/91LLvkuYxt4762B1etBUF0PyiB4T/50/KdENQEVWryK+lO1XYqTMJyk2q4VyVVk/QZCqNnv5hn5wHvnCe2q4LPwBOFF1f0sTVYMRbIFEKkCT/V+fe4KyeVzSK08+/LLeF1/sQlOLh4ga14McksQ1rAxASf54I0D6P0Oeox6s7r+KK6JZayBHfPZUfqZSwW55kf68yStodxoBt9dPiYLwT9CMBSChlA0RMtC3Ldl8B8yWJCBRAZ/lcEXZTAngwEZZGQglYFMZorEQBoDd4xzKyt2RWVaB8M60A2pQaEGk5ozsZUn/RD1g8IPfvaxBtjQsKOBljXAPxqgt+E7DXSwAeT4I6NKWwSpcOiP6E8MWTAZ/Af9Fdx14R322ecPVb12bNrUu0UWM0JtQFAwVcmR+cps6uL5lnXm9V3Nw+aymysvHJ6QWGYLmZG4bSAyMFhu1cXHWic2mdSe9v6QL9WS3b+Ff3Q4lB2Nj8R1po6W5qyAKzznsY1upkJUY9lgDnHqRk7NVqSKioyqmJWiGsD6LhwJEOZhM++j9eTzVsnElERine/oP79cPr8/gFfG44mxZHIsocuFEZWeG4zkBi4ZGz82MJaa7eiYTQlXgV+CCB4pol0j5v9GwQZnK43KVSuOq+w/bISfPNzTc3hk4yHbmHE0lxhPJscT+XHjWscFG3SDx8bGLhkYK3uTra2z7e2zrekWb2mc4AD36VyGA7aR0yoqqGPNchzU9Z6JYH6vEmbZ8hEZd8dmG7IsJiS2zR15Mvg4BieuGzg2juDIRQafO5UdDeeqKJhrb59LibBo0fhtlJfKlH3Xep/y0lIvaLycRsPaDJxNWbmuERoakZvaiDFD3NR5wSqorfxU6cP63LTonhhbaMxRL164puvQ8OiBIs2fx6THmndlhryV9TfR3r5s56QaATc2fHyk9/BalaZjfdPmQNcw9HvL8bESoY0LXRbo55Flkix7rIoKGMwcbZBVrscqcUhDyzWcQiu/VE7LAcE1n0YA4f2tGNE5GQEsq5nwcCNgQRS4eMuW+Egi5jV4Lb7UlVdOwX1jhdRQRLWRbUg2t4zx60T62GgLwomXSlFryi0ymUUWljFeGbeRgQcZuIABC7OHoRmvtuKUVSxNnAURLsU1I72MaUcUciyN5xhZiw2LerkLAqfx32WBlStOT1xkGtety6+bkdg3dfTsL5f393Rssksmrju/ZTSRGG1pWZtIrG15bbLoixc2T7ZHWvsuHh871tfaNMxbjl0OsZbpYud0Al2LMwlBz6LL24jfLMjq0qgsrI4QkqpYFAKniRuNwjzD01+PxQGCRh8ooall3pSf3zE10NbUG0GW63MDkez+c/iHoaO/J7U2yr8qzGs8vf8X/WPku2ipdNmvUVTUsspDUviiFKR/VcI9SrheCQeVoFUmkaHBKFnRgCHyaflKFYv4fDYYtDsCAUcz8lM2C1/twS08jftafGXRLfblQF5+wKHn1A5txSKrSCVK+LoSPqOEy3BPHmVJuVUpkePOBLmIXP30it7oSE6wmvSEGNWOLzbLbQqPa2q0Z6n/9/6TnZDKImF64NQjY2NUDbd/J7rcivQnq2ZkGLNqhWjECL5aASEX2YoR5N2Upl4/7+ln99wxiz2b7r9Kvsc/L/nb7K3VtqhPVP01qsIolvy1Ur2/hsoxKcSfIcpXNuqdIZWZU8k8HCWryNhKSCRqptq7WSCrdTVx68iMhXlr20aDc644OzfZ0R7uDkx1tOEr8KORbD6RyJ+7GRN9sBwfifEvQ/tQOTEa419ZwoEGyTPEX0qzTCuCYl7OX6djrwmJeXN28/apvmJ0TRD3Fc5V+2kZjfK/rMlLPN7lvhFb0Sr/yX2hXxzp7T0yOkquyYnW1olkckNr64akbuiS0dFLhoTrWHK2WJxNClfSb3GxiU6TcRE5rQlxskYOT3FhdJolOV0dndi9H6kuqzlArZjYxYklNdWB9JZkCsJ12gr4tVVFlQsP/AzMy7UVxkMT0hs1eKREdxoR2ysrSIOa6uAJFU4jagL0CnjgSQlWF/01/TExdaROdUgHwrmq9lh7qrkGj6A6RLrvotXIZkZ0l1MypUh3/WnobjXX0Vw7nQzYvU2h7hAi+YbmgmKzrnkwyv9KXIv4OhpjEzVczrI+q6/g2+uT/NgHBd8HfA/5mCYf+NR3q+Ejasir4SE1/Ksa1E0yrklZwfvWrMj8xM7RZ0Q7J3w6z6i2g73kF91+wLrWOJpI9eU7urvGc7OZ3n2WEf9McykeHxldm9/cphvr9LekI0FvRKPTDrXHe4MdWX9fxO0KKI3G0XxyMEz01uJbMEx/jLIjKuksdiPHypQaTimrNNiVwrZ6OoN31hFc4Zxe3M5F6slkRZ5OwYwAeTVnaJqbmzp+XGcMeuxaj01u0od7ITb2L/8yxv+u2WTRb2Rlwho5wtdfgBfmnoYxy7EhgYRQ1YogflS46kZ1E4dKsCJu2T7V0xbrDU2ROag7bzus4Z8Z7msZiYKXp0fCWdI+iy7vovZZ5FtIEXlZxZIvRTwgdtNt9OfmfjgNPL8HPoskNKnD0KiOBvtQSo20AdXTKJb5UJlqdSUE2NmjcPnM5XB0+s7pq5BO5vn9cBN/AG7kafgUv0+QeWp0+SlqU0nWWpRSkFWUiqW1lkjGWsiwyMZnA499dduVl+66/8GdV125E5h3H330Xf7U44/jNuTI1n8PtSEnfpKsIteIYykIfhIEXnpu8+foz27mn5j1ws/5q+HYqWbsh6DK/4nq1ftIiJiK1T5SCBLIuf8I/xzk+J3DsDA2zH96jMBvRT6SA/kyAeTLBJBxpec0AdGXsYS7AEnEHLYQsvkimIm9IqxBo78W/OTh2ajPF50dtZjDKT/6lwqbLZfMjdwbjQ/Eo/eOzA1k4/cm21QSVSF1bzwr+ljrF6+jbkV9Loud0AfWj40xtvcOCmU8CC5/FS6KM+g5Q6DmYwkQ4W09DCHZRbZgiDJmAcIYeMzhVp/f72tF8IxWYcwjYFIFBExbEgNTB6bQZ4j6A7wJl1BOvDMSk4JaCh6pVO00ck6JGtp3qaFVDQ+o4Q41fBLNbgp7LpUK3h0RFmZTrcFwRNhdD4hTWTDJM3gSw6725lBCb22ke/0Ft70tHoyTm0De8wejQaf1WSKd3tqX08d2NVEPIRmkRJJNeb9O2FBLrthOQwxjru3SNTesUUzCx2r7Zx8FM//7N4nMJroRx2n5Mee6GY9WUmFUNc4VI5/o+oCncESPbqxBi1WPJCb8Yr53oHt7Pr+9e6D3HOuYZyhU0I3yV4zm86N3jcqnphoGD/T2nj+IvslHCt61Ov7T8lTQm9mhhgX1jn7Bx0f23zeoNBUom5gWLhxVKDmFgjG7OLNUBCYmhJgI62++HNYUESSZwpEV/g+Wl1b8g7ft8docxju83Xwh/1+tGXr7AK11ODPznet3GMdVxVRhjc0uUTTIPnTY55Y8HI4ozz9/2LIhJdcNSuzx3lh2U36qzYuUXou/PcpqdepBZfOEh2l0CzZlHzVPe+gW5AfEqUjZ6DKrWXucs9vNrCKI4DezZjE0hoRdCSvjJUBEwquFiFDWgpVFxGKtLNk4i7ArzIK+znC4M11sGx5qK6aLoRC6OHsCQ+3FX5ZCoVIojK/hGzqKa3o6iun2WKw93dHR29PRkW43W+PtMxG8yyt+auswCURrO9VVDphYGoDmrKBTSmWcEflU0CAFOSB7WG5TVbRyCYnGI8F4JBaPCEfkxeBIPKQS0C+T8UCmBOgvwjUJk/j73Xff/cFHtn/EL/Fdv/2hY1/60pcmvzwwNQD+19rbX+N/jr5+Ga9p4nlP/5XsvaKZL6vNfLMw+8fG6L/yV03yu1DZ1KIN/kKfpDJUD9IgqjZpyS1Vce4w55YSMSDG51XNmpoejQg7/uHlq4xCzJWwahvEXEL2IZOA2fgv5T2F8cus6/RjbW3jY7Nz04nobGq+lJvOK8aVa5KBgruzZ+FQyMP/uWNNrMniHJtjQ4mW2eJ0Yucm5Dl3tWRKTtfMmuiwLbepeX0m0evzBjsdMWsoZfHNT8dGLB9NmdUGbd6e7XLRyg6RhzrpeVhLf5fsvbeXQ/o7pPAZKSD98a4UrpHCMSn8XgovSqEoHZXSUUQcqVVJJTOZpLhWUqlUVmykp+t36b1eNFy39QYf+uvxWOl5nxn/tXirf/G+ZAB08Gdxbb9AXVpeM5CGbBoCaTCnQZIGeSHNtcch7pUrh0Jxbq4AYwXoKEC0ANMh6AtBLgThEBRChRCb90x7aM/XFl8um1FpZApr261zVtqK62KrGO92z+NfIcpT/IfuY8QDml8dl7hiUtTWhGrTXdhR/i+uu7v6SU+l0acVX1tb+vrSriajR2k3ueNxd8jmC3aArruudAsqhT6tpMaagdZ0v8noUqsSXm/C68BrEFGEn/sQfjxUguotJ56I/ChCRyOgiIAswoVlP5bRDFkmkyXCCVruSXCep9XgEJbGKLwMkUSDE7dwayNcta7lhvqFLVoc2xfWJvavj/Qae1KRrH7IONefn8uOS0yjrS2lCFjz7q6utjDoQr2x/nGjUpfucLoDkUJsYwf/Tk8gMeAvhkCnbW0KhKnFRaTX8vA/8JrOT/2Ip3QM9SPqSTF2Yh/8Bj5ISSnVCbw6LsEzK9WKrQZ9AL7AfxLu7YO2Af73qA0xBk9HUzpUV7KMd5JUG9Vaboy1ccoCeAtczBvzshIPYC5QWkEu0l8II8DkR1Q/K72ZakQIcljwglt139d8JoKv3doYbzTTnek2R3yT2mTQpN6H3BBtdluDMnqKnpo6rlOrDEWEjy66AhvoE2hm2MtaFk1M+jMUllvnM8AgZZ/BNruRxIQgLUqf6MHz2AOPQIDEBjrxLoPWybFmHHyrpYRYCcP7RNNe2hUIoE8Rf1zhsMvV1OSCR/B9p9/fiZ8Wo42NUfwrxOsgov2W6H8tjl/TqjhZA9nVkGjJQjVSNulMdZUpI0hmFsH7xweFiEz4D34cYgO33jpw69AAoqkZtoCGfl5HQwOP+cQC0+Ah94pFzB8302MQJ36/s6x7iQI7FaUexlEyICdLzlsIVxszbOAH84Mj9DOXojaQb4rtfsQn74n2ZRNtQ23oKN2DOmWDhmtQYi4jGwo1RxCxG/6BYLxrbxf6gHd8bgyaMttKpW2Z9zYzG9/7d+K/gIS6Ga5C45ffJ1WSNe96AbimGgojqdo7qM7QohGUCBIHtbXc95oKPqT6rIo+qoIFFai8Cs2QScXNmhBpwGTS/UYG18o+JXtBxuyRHZbRkzLolUFOBkEZGGXgkHEOHcFzrCq+hLkdE+RXvTcX8OMYTbYK2TUZZVpq1ZlsNpNZEw/kLAZpONcR+2O40aI12w1Gh94038rko01tFKaDFbZQ99HPIDrICd3RXIZfiHNN95C4zKAVreGzTKPv7G5v310qkWuwHImUgyF8RU127luzZl+ncB1pGkwkBpuEK4GhHcmMd4nM+DGRGT/GMgM9Ty2+Td9BP6fzg9xO6QLUC6Cn0HsAOK/2/pll7xvwe2oRHq2+ZwDxmB8U4vvtYv3vkrEmkd5/nPB4lNI+GPVzUdHMXbk8JsbidyMXICPESxGVIKx/vyzav12bM96Qy+eZDqUjJHZKs860Z/2SQXzqQ63TufCaZoc7H2wvpXsToXQ1ggrBSuKFmKsQDpC1rGegSKMnlKWsoTU6tpGeofUUQPs0FctCLHua8p20Syyv17LBs5fvos1ieauB9aLyRlS+tLL8dbXy3bRFLG/2kvIBVL68svzltfIdqEE0E8o6htb5cQWGtqMaw7gGrpJFsxrX+RiziTJQblQrV/YxQY5ioP/bDLQw8EMGbmDgZSQPGanKzamAxDekk0L4zCHsDCE6+YQAqbq4PjYsKGwyN4xkc5L+2PwQ/19D80AZLJ2xWJfZOOFw6A0Oh+GDWxslrq1PPEF/QRuzxTo7Y7Zm7XGHAb8yOE79rRpYRRN//loSH2KiEmUHjunRqk0cK+HUrJqltPKKvhbhI1q02HAkKm4pyieHYdXjWK6H4IdL8T78W4d3wSuSxq+JgT8kpmtPmn9G8BUTi0YSI5Wn1pcLh6Vglu6W0jYpd6cNrrLBnA2KtlEb/a4N7Daw6Ww2ZTDGBZnKBwxgMoDSwBWVSCwl8Y4XcXHaahtg2PXSQpXN/SuFiuCRnSb0iv7wDVNaQa54l4kb95ZPTp4mICvfDz4icuqE0DrF3i9sXxmiRZF5S2KeCK82CXMBfiHwHqg0Sic9A9rlvL2yfCf8QSyvVStDZy/fBb8Wy5t1SsSqoF8+F4Tyl9fKd8CvBN6mQePFFWiwLuNtYT5Qd5I+4uIYOsQ+JDJGhvpgV8FE/aaufCcMiuVZKdOxqvzinxFMsrryXVAWy6vlDB5DQ90Y0FzDuwZ/Ya4gPoCTspaVVqdeaqMrUqecqBkxX+cMNj7ejvB7Bfv+fNHe3z81xViERxZv9e/IKXGP04cu95IYKCf2uDVOjgaHlXM4NBILDnHQyJd73NiO0K+OvCOGxf61a5fF3131zDPQMwB9dUF4bw68UeMd+kIit1pFuRWt0tar9rIzEJAuk1sk5ojgMS3K3c2inPP6mUYlknMsQPTM5TvpfWL5gI8JnL18F71DLB8NMl5UPoTKJ1eWv65WvpveKZaPpEn5HCqfWln+8lr5DnpbVe76s7gCQ8dYkXMEuQvIy+2Hl+FFxAuaE8oGKdMgpKGRYPACXjCwshG25/bbk5/7nPC58Oabk7fckiRXEjN/klHRbyBO8lExRF2zha40GRo5s4HBcZQOWQwZi4IgFPciKYvgPEewVBFtCNwRZbGCsCZOCUlHYMnQj41u+/LeTWtDHaHe0W137d00Fu4I8ZJcEtLFnrHL1sKey0ezLfz3i2voTTefs/fuXZFiqJi9edOee3Y1dYU7+Y9f1AR/cI1eM8m/NHr11MCFTbzZJfAGibUhtGgTaS0TecNkYVzaGbCql83JleU7iU7D5a1mJnj28l20SizfaGO8qLxdvUyuCOUvr5XvoBVVuWJpwhVo8EhWyxW6j/TRKcqJv1fnvRIZjzN4IbEGU11sm4ayI0oZVXZOpdJQtA1Z8uiPOA311fUjYa+iNguxJ7QU1jV1y+owt2NCnNuX31mKcgNq3eJbtBHpK7xiZQV7XMKp1KjbuNvE2RUVN1TiylqMqbA6L4nkqjHc9Xk6ZJ+strFeDUcGg93l7JyI9kcizs7+wUyxdzq9radza24u19exsEYuXS8Z7wh1B8fX5Fq7h7tPvUdLune0pWcKXEJiPmdN9842hEchXuVlhMc+gsccfEecZ/EWxmWboZMmgI1LtFpZPg8/FMsnE0z47OULxObE5XMpxofKt6LysyvL/6pWvh2+J5bPdJHyZVT+nJXlT9bKZ+Gp6rxvKeMKDF1ANXbW8w6pwzhrddrgmVqd7FKd7nobDdVhLkCskkI82k9dUp6KhbhY6usyQA7MizK4SwaDMsCxATQO42FLe0vQVwK6BG+UIFvqK9ElSRv42jhFDhw5btAHPofPYUr1cyllRaEGuRDaQyIqYoLZhAyT2LyweaX7oxivQwypM4TqWE8TeYFMGRkyCkn4hQxx8KoYnrWd0W7DkHXvmv6ddu+2rlpwRmxnZthXWT98sHHoGrqAQzS6Nqq/PxK3DDatCPCJ+IOZ7lwqmeupRW50D/UXL8PBG7G1pXfiI3GtuRrzg2NsjCTGpkB5ygZkkyHzTTTU2IpSW9OFsf83kwx5IvD7gxOnt8m6t+VOF6BTGl9tlE0oRir9q0J2sOwUYmQwPw+J8+WkyJ++AONCeinILuP/leXz8FuxfNDPhM5evgCviOWbQ0Tvhdll80Uof7JWPgsvV3k5kBP0Xpxdwf/IhqduIX38pziG9GqbbOdSH9gC+3ld+TyUlmyy4qryi/+D3vJ15QvQtmST+USbbKFmky2+jd7+FslJwSbrLbcorUHrpPUT1setkhNWuMYKB60wY4UBKyD6mqxgdSoqNllFr5SCVAz3ITE24hx5f/vNLtptNfttcpI+JHy1eKt/LyDhJUhvtCD8uumfkvgfZ1nrTXFsE8eyXhNUvMqVuX0CRyLNjvU7DpbHuv30awSvVHp6zy8lB41SfSpwmWOuvejaNbjb0dfXVzo0nBiJxYbjidFYbCSuG7iof/CCNX4L09ztbOuOeNRDjelEt7v81YWJ4wMT8fXp9LoEvq6PE91O9piw/JwQ5WfVB2iMmP2KGWiWLZOfQjwFptUGkRd+t2T3uUQ7buOZy+fhH0t2X/Ds5Qvw+mq7b3Zl+V/VyrfDG1W7r5WUz7Kngf9krXwW/nQ6u29nvSwvUCb4LbIxyJoeZXhIq+K0WqfUKe4grYhAQu5qfUrY38Rljhfxyt43qxl5H8bZXngpbG7gJ3XJXwyC72UEn4fYiM2Ur2wyG2TNHDISLbKKQlExsBVZLcYPc+6ZLESJxWoULEQL2Y9jLBlYbO09MtqdcxRcCfytnHXmXfydLvtTwXByQ+svJ1qzT/qa4J4DpdFLhuxRTzy8fw365oh5E4tDDijpk7PF/0S/0wX+MR1F1hFfh78QWs2KvPBjkXcsNtop2m11cmFl+TzxB3F5u5UOnb18oSo7weOgsV3oVC/JhVr5k7XyWfhp1S60NdPELvQxABfUyzayr0/62CzC9IOqz6yAELILVdIlmPCe0GITnSHxcGEcR6MNc6yb0yorYlTc8rge9p8I7OmcWhFIQyJ7cAyNENlDP/PjvqXQnr5fgFkIoqmG9tTGcLI2hiw8WR23shG8MjRuZJ7UjRvpVSyjbwFeiBeTLYsXG5zCcRR0Ne/idckkkrUOxI2lcjPSsQYtFzfAVgPIDGAwsI5mztFQsRg5i7yCI1XoCuuvJUPVkn1JNGNdPlSufnHnjAkpcx9Pwu38g9DM/xhG+O3Jj8+JySmXrV172ZhOSNEYXnMxWfw5Wh6uZqhcM0kyNIT59DrzFLIfglQWWf6xssNt49zBLGfq5EymIBvn1O2cGhEvqBQdL2JNZJZL6NNbSqvBDgmWkxAyNlTxec7tW2khDRz0eitD9YFkdG81olWIJestFnt762yjns7OnmXxZW8JUa5AddAbYYLE3x8rzwyxR9ifsIyVBfZ3AA8DHAMYAXgJ4LsAmwEGALkIRaDRyxcAvg7wWfgK0NcDXAowhtwr/BoaARSIU6CBoRal8G2kLnEARSYj7mnOL4WB483NSobsLRQyZPuHDXTsGd2zIS/PbaBnL7xQWiph/tlBt0MrwxJdfUF5g9UKMisorZyyQW/X0w1SPXdCCmUpSKTQ+aoUHpXCJ6RwrhQm8XIdfvoLKVwoPSF9XMqsk4JTCr+WAqrRJQWHFLQigCJMFeEf3vIQNrLml4vm+n2d2zrxgmZXzOhymowul5Fu74zFi+hZZ8FlMjldRmMjsT999CTsp39ImanHyh//jP5hPa0vW51DCj1YGiRRCV1qk8xK6C8pgVValRHlXqVEouSOSGBB8rSEZiXQIJHoZdqwli4VtDPaL2n/oZWw2oj2Wi1j1nIFZPo/aQZzQg8v6d/V01/Ww6x+QU8X9fCsHr6Me7tFj4ikh0v1sF+PRPA6PY0KO/XQoAe9Hpsywr+tVRQkD2XQXDtE9jS3kHl3CN0gJ6GCcRHB1rAQ90LixTIIK38O2BuVPmbAm7Z7Wt0N6FtvlJ7UagyhcMbu1ocKxbOfabT6vhuMtON054Gc5IPV80BQGWbgNGUY+XtvVcskkYzC+7saSnVCxuorGuGkJELWEgjWkiwwGVJrSk2tBlfIAXzIqXObNzlGGY8VK9X6NuT3sRohomF5RnsyZ27EKhi1QttGJW4rVs64FSJfk4s3U/dRR3Us9SxFnbqVPEsAD7NE5n6f7L18n/rSiufPkufPVp8v3gyzqI0I9ewif+pW0taXTgmxu+PUc5CEB2p7Zgi+fB3bfry3t6Wlp6flud6WZA/62kv2fhbfoa9G7fkpPY33aPTUa2QPB3GOcO4HlQcfvEZJUZt4kpAxkxWqp9Of/3watC+23H13SzVXPo90t1CWEcqSFS22+LnPpZ9+ehcq+OKLFCxuXHwbzqGfQ6TSPAi0rkJSbzA1ImCFf4f/zvEtLvqh4KkRBJ8TtkA72R9Tkj4akd21lf4GlaDGyulQQf6CnGblXBPra9P8RENrNZxbiyw15KzEtEUtzWpZLW1yciZphY5xtLq67CGEJZBQFzHeRcj4I+FGuSwOfsFHplQDENiMOYCPGUJ/yAI8vXVw8+gV8+ZtG2h6wzbzlitGIuOeJlfGPXbc9eqbDPPmq64PjvV02KPFAyMDbq3WPTByoGgx9WnVG8cHzDabeWB8o1fQi3L4HbxEcoXsyDPVmOwyNa2RyUkGGw6aiaXFA6oywhot3udFgjKDD+TK4WOxiDEw1n9/T/wTnWW63NlM033uPppupu9oanrklTvueOXi+Be/GL+YnOHyYbiFaaVk+PwEkZaBgjWgD3zzU498/dMD9AceeeSUqXrey/morFkoK0TvFAgcbORTA5/+epT+wynTI+S8oD/A68iPWzU/8f5zeoDwrJhnpaNx1tnKOS6u7/8cvfdTSWR3sNRR6s+UCUcCgVwjbZLMgF5KUw+DjaqaT6iNONLHo0yQCuDd8YCJczg5hyPAqjiWhA6KvnzNUiBxtkveer4+bXr+24cOffv8fzu8buqiiWvHx6+dGNoZbFXxf4WjspbMga/qzv/G+ehzaN369ddPTFy/viXYuvmgu2nwI5kLEBwbF19grmDISmzZcbUDMg6wOzi7HZnv3A0+8LFq7gakSpF2iSXnaxkrkuUBwEuABQhYeJHtim8dPPitQxs+0vaBNVt6D/X0HOo954jmZbiO3fXA4Sh6c+hbB9uyR7r7LujtvbBv88jnI8nDX1tYygeYpFWUjoqW7XjvRabk5J+QPS+jUzIwyeCHstdlmKZY0mdiiKbJFTHSMiFE2jCdNWv1jWsmkB03kUgzM5Lpfv7XAt860TykEWFNlIvSPWTScKyNY03VaNLa8DwgtdSycYiBY33hSF9vpW/TQauKvz06sz59jvvA+jlF3u/paQbdwNHhsSO9XLf7xvXDnYkhqNg9wQEcn2NZZGjEQMQf9pR1LotXxmlSnEbjxbkv3hrNhVjj/8tsl0ePOHbr+lp7RiXm4UTPhYODF61JDJslBz56ILkmFFoTaeptQp9TW7qbw23rR8MO/8DRoeGjg357jA9/6HqYig4nWoabm0cSieEown8zwtBtjHxlzGvzhRdijSTgz4Lw14TGc9p9/rOkErxw8eDgxUND5NrUF43iY2DwVdd/dGT0aF/f0dGRo/0L0eGWluGocBX6dKE5cy+yQSLIEy2WgwZkZhuVsoonyXnYitKj9NgiBU6qU1QiNpbT2tCEI5lEyaUNVbydUMuKW0ppIvHjJGz4/fLk6MvnbZKJm8LJK6+c2rJly9rXJBLrlo6+g+XywT5/nadCMuauTJBcKLhvLDUy+9O+pey5ZU4Lyc+i76Sfp2JUoewJgSHK+XF6ls3NGWwGmzwWdggZWlDNz8okM+Jg0mkh9f80eVqny9vSr8zdei02moj6TR6LD4/otRWJXMJXuTwpjkPM60I0kPwewVukRpEGS1k0EQOHDD5ZJdPLZdhKnOUimXg8E2Eai6NcUVlpDHAebSMyqCs6qQk7VwhqvOwUq53RUh3HaahSpczKwZ2NUsyjOBHjE5hSk69NLRvzltHf1vmZqxIda2QjpKtDxwoqrsqBRHSU/DvCSyfVX47mwdDBZTAd3RHOzVasSc7gtlrdBkbe2Zbwr6BoErkVq7BhPMvAV2QhvR+Zt4y+tjwB7SYRMatG+MLKvLR6fIhzEDmT56BxJqh25AcHMu3tMfBHOAPtJ0zrt/lt8kQ0eBquXca2wgkcZ+dcn77GCFSdKXgGPk5B19RraGD0hwIBkm92RpbmaYHE/Dp6Omi3B3FqmsjfbjK+NqqPGig3dff1GTQZBRcwZmSVaJLLRDNRe5uUg7aY3cM5tXawQ0Wlw8cEisOMrRqmpJYd975MvWLcWMzXxxDdaZXbFR7naysZun7wI73D4sBfEbLs4O3T8XIdHnASHtNWw4DAx19B488gCetLgKGVa3ZgRraGOYPVYJVnkkHP6fi3OuizcG99Gt/ZmLaa5HdGduU7arl/KxiVjIMZQuOIYrkaAEOE85JhuIRhREP21aP4Z+QqHsNZIT8zyKdSyyAleU7MUwjOHnwCbUHLepVcNqXzhuOcV1bxhr1hS6mnk+tpUDdZXJxNawHL0oxKxjK1QCFyAK0gRfGJD/88p61OnGJ25Awm0/sw2mtTl1yiMwYbkWeIk6qM6SDEzsJnq3KuMH0OIV3eROXKHgiEOTogq2isnIatBDQBDdvUaGA9nBabnoISr5FH0OHGFSr7jPLwYlFVW5AA3D450BatCsApQTefUebV5B3tJnmyIWQh29TuAKdxy3CenNvkNoW8Fm1tLyWZEfkHw1cvraSrqVCNIn1aTJXlP1OPayzG6nJ2765HqiC5qrJKhC1F5cseR8zCOWOyii/CxXwxnzSl59Qpq80QWAKxVC+gVoJJL5dTudPKpBrEYnLvciaBrtPl+gpSqH4QS7m/mA8OID7wYOyCo5FT0g5ZxeFgPSYta1nJAEkyOeuofwZ5IhD9jfOe/v7uO+aWkfs0MqMKB60i61uRsgV0Ro7WySo6HWtuQD5ZPRQEiOUwrO55WZdLc16Y7/SHif7MlBv9CqeM8yidsorTqW9ORLiE3soZtXrQQ0WOo/KRWIrVhi3M7nDujBN75USmwzlD04pZvDofciVtyFSNGatTFZ83gS6/JGcINCFp6sVHCNiIcRPg0FQwuA1ueZNllTitTVeCLTjDaQKw0m+DN7duJfCaPGZ/8oorpvi1yzy5Kqw1y7TOtRP28SQWHLNL/YqsA/0WDolnZrxFP07ySZupZNmJk0kdLHIevCFOqfTiBFMkb+0NzdhExWATrIuwS86YY7oKenrryqzTU4/Vg3+6HFRatsw5FXjkc4RHkGx0y5R+zolBVSoJj3gVlTo2EZAdW8Yly3Jiz+AKrMqTrZPvWHWtTppd5RAsl+cI5isRflNUa9mRauYMMmUIzRsEdkqZUjYkHI1WrlHTQBGtJfIGATe2Et6VOPZXNdoqkH8zefy43hh027VumydvMBl/sxrqekQjVZUJIIZfAhyqOQAkz1ivpAxSzqCsqBQ4P91e3cQST4tbmfwrbmQVp3oLQgqwdabgLhjxxhXP/2BkoGU0Ch6eHolk7KbOhxFvuhffggk4rEPSZHGR/wJZW8JR0V+FA+iZvP4ZaEm5hqVnqK6HPFPUnjlQuTZSV7mi3H70TIWefb72zAsfRM/UQjmS6/AG6uMAPq/5BMnFFfJpCmSNjgl//qtv3auDQLFAjsET2/CR/rV1fb2O2sXPdGK7OMdkGjYg3sU7xLqHxBSTM8b/121EXNcfDPanUgPB4EAqFo/HmuPxZpjOz7a2zuaFa3FDOr0B/xL4hbwDsr4nrtWKZ00fzIZ2tK2hj8RS6/gbKbEs6BBMNgSRzYxMDE5jq56ttOI8U/F8b3PAfq3Z6rXZArJOxUA8PRx0bP/8P+Bfr7X4TSaXx22PZ4opT96xvSi0Pw1e1H4Ir+WFZJxaw6nVIaeZc4bq1vIMdbE4dUFqtX5ZooT3j6g65VG7IxJyRoN2j8cSN7SruxK53paOsTxMp1utXo/Pbmtsc1nMjoQ1FC+2tLi92VwZr2kJa83kzGhrWVE7M7qh7vRzRN+CmG7TBQH2qXu+2tXaukayA+6Kv/WHtpErrr+eEnE2Azjuz43H5JZxVhWHHFikF3XuM4xJyCMxB1hxPIi+54+qu2QRJ84XarK32X/wGZXCb8gOBbsCMJNosToamxob0Rx6tG1aoexvC3b4BH2D8ekjZ9x5cKSx0cPZlZzdbmSN4kCqrER2PvKnZaej3UGr5bzMTIPe3+YLdQZcobDLFQ41wrS/w99YcP9r4HxZoN2LbopNLmdTk9PVJI57Hfl/JFbMCycI8+LWe966Fw7UJgZDYPUT3goi2ddeDhWC8EIQgkFoDnK5Zog0v9BMNzergimwpThbsxtwLgLW7STBDB/kSc5XEMZTvxsjbunUD8pSd/Dzse6wy2GwDbe2DtkMDtf6nMXrsdo8Xqs92mxzRJucMO3K+B0tOmXUnOrsTJmiKl2LI9P9istkanSZzc4v+WxWn9dm94o4H0c4f57gHFGc8XD348wJpVFp55QI3CQ5Fh1PmJVHC2qhHsSpWaUOY7wrEOzCFGgNhVyN4XAjHKriW8T/4xjlGPWCfMmR/0PhGzqaMkowHa5DQDUK558/wCooTqogmwlkFZ/M84zZd8NtR+Pfyd/CVybgVXyy/J0TQlvnorpO0pa5G99Po7bt5N6SxPe96H2BvgfdWy3V92Fyb4vi+3PQfYKUtydIe+g+QN47SHtb0H2cvHeS9f9N6L6F3LtaMOzpxduoX1IX16+fFjJs4Piu3SMXnySxUbdRPyPnTWvxTpewE7csMR6VvlzMEPPvXBisO1X67yeFMc4tvkO9SB1Ffer9+D6K2vwJdbGOBuc/MD3x+5+I52WrT+itYmZS5synZX8wVA3AEVPTTntadq0vWoL6cr2L722ow80EP7J3Trc/Mo/eJ8n7Xe34foaap9N0C7rfY8T3GxdvoUOMDt2zOXwfQPjcTfD5ogzf70D1c+R+dyfhFXS/kbS3NyzQO083wmvoXkPotZ/6A+2BNLr/GaH3B6h+2gwvovvP5PCcPY8yIb/pfeKYqPeJY4Lmfz6QicD+KO2Fx1DfXnJ/LdVGy+A36N63Ft9fSrUBT+49Q5hu5xF/s5o3qV7Km9RKtCJ8JG8SVuRNgv90iZMCvfZS+2gL0v80dSCF/28WH8Ivt+z/ZkmW7Wf6v1mSVXH//+v/ZbmaHAkQ6g6hz1Z4NMv3DcVibk887gGd8IqcHOBpbvaQh/fgoqVgsIQr8AeF/5flTzjzGf/yDfWvi9XHZNy7F210hD6Jxr0Pswx/gj60+LgYL+krm/RHpRCT4qT130sltmVp64cyy5mgPhaSf35lwvqqKEgK+B/R2xf30C/X7ytCxhrgf4QPPXwZH3oIixpU5vblZfDM/yZOUCVFUDv30nsWn0RlGijNiQYGEPXwchturRZuwt9bizc596KLpOUyHusP6bWLtzNOMtYbygvXWp+y0oetsNcKYSuYrUAL0SfX6Z/Wv6VnjuphQQ9RPTj0oNYju0HPKaXQ/lcpPCuFOzGajklpkxQel8KHcRwKFKVwN0Lbu1LmWilsxQVAgU8jx2fSLwtD2VJNmp+vpqKmWukzxKL8VYxFIWEnOBZlbVcsRp61CbEoJhfByU30wuIv6F9RJup35btYmczUJoEnJfCwBO6UwJwERiXwlgT+RwLflYBC4pA0Sxi5RKKQaKA4pYE+DfxaA1/UPKihr9XAYQ2YNSENjV7KTRpOaYKiSf8NHSR15+tu0DG8Dn6rg5M6+JbuBzr6Zh3oyirdUKcOtDqPjpbr9JQCijsVMK2AtAK8CrhfAXcqIKWAFxXwhAKuUsBWBcQVoFiKzxHQUhJOxxbOn00uoelQLWalGmCkJ2Kbrgat5OtiVm4XY1Z6omLISk8zvYBDVgodOGKlg8x//gRjXnycuVzHUhx/hPoaweGPGOniHuaqGu8l6/iTuepSXG9Rg8rczlyF6h3mL8D1UFv3MsrFJ8mzJ/iLxGc3MarFXzDXoWdP8RXSvoKKLzKq58n+Nt6tG6QWqOPU1dQnqTupBxA/ToQDQXZhnAuYuEBggT3+Ae748QW28EmuUFhgB+/kBgcX2OkHuOnpBdbp4JzOBTb5US6ZXGBLt3Kl0gK75d+5LVsW2IOXcwcPLuBN84VlUuqfvYjS7J/aZUeexcrTo70r7iVn27cNvt++smTFpq73LPdn2/eXX3ThhW+/WbfVCu/U37x8xj1j+v732eF+u69uw5bm6m/21u01v0/QAWN7761lO7313/94hj3qP55+Y/2u+k3i5de6HW3q/wDKYGr9eNqVkMFKw0AQhv9t04qIHhQEe9qDeGtMW3rqqebQS04p9CgGuqSBJVs2baE3H8GnEE+efASPPpR/krUS6cUsZL/Zmf+fYQBc4B0C9XePJ8cCZ3hz3MIJPh23cSPg2MOVeHDcwbmwjru4FK+sFN4po8dKVbLANV4ct9j3w3EbQ3w59nAneo476ImF4y5uxTNCGKyxh0WGFCtsIKkNMMCYNGPW8F1DMYp4QvikKV807/igKqpI8Vb02vG/ZCVCs97bLF1t5DAYjOXMmFQrGUWhL6day7hMFTJWhbI7taSg2XGOBDk94YTzJGdQ9kmxZU3CXohVutWJbWonjejHp/9XW/tO6qt07x91+51EHneoJpMH7aLaQsHtGKrKjfrcaYARU8oWmcnl0A+CEf4zZWO8b66qbSp42m1TV2wjVRQ9J8WOkzhle++9eB0n2SRbUzdbstma7bvesT22JxnPeMfjZLOUBdGrQEj8gWg/gOhViPIBiN5ER4IPvujwAXwi3nvjtbHESPeee95t58nPqID6/vkeh/E/H7ulQwUqUYVq+OBHDQKoRR3qEUQDGtGEZkzBVEzDdMzATMzCbMzBXMzDfCzAQizCYizBUizDcqzASqzCaqzBWqzDeoSwAWG0IIJWtKEdG9GBTnRhEzZjC7ZiG7ajGz3oRR/6MYAdGMRO7MJu7MEQ9mIY+7AfB3AQh4T+ERzBURzDcZzASZzCaZxBFGehsQIP4lpch1dwN37A9bgdt+AePIyHWImb8Q2uwV2sYjVuow834nV8Rz/uxSP4C3/ibzyAx/AO3sLjiCGOO5DAe9DxNt7FR3gfH+BD/IgkPsXH+ARPIIU/cCe+wGf4HGn8jF9xE0ZhYAwZmLBwH2ycQxYOcsjDxTgm8BPO4wImcRmuwOV4EffjIq7EVbgav+A3vIQv8SSewlf4Fl+zhgHW4mk8g+fxAt7As3gOb+IGPIpX8RpeZh3rcSuDbMDvbGQTmzmFUzmN0zmDMzmLszmHczmP87mAC7mIi7mES7mMy7mCK7mKq7mGa7mO6xniBobZwghb2cZ2bmQHO9nFTdzMLdzKbdzObvawl33s5wB3cJA7uYu7uYdD3Mth7uN+HuBBHuJhjvAIj/IYj/MET/IUT/MMozxLjTHGmaDOJFNM0+Aox2gyQ4s2s/68ZYTDPeEC9nvYGylgawHbC9glMRIORwp4ifd62NFWNZB3bL/mOPZEPhtQmLAnLJWOtLRXDY8MDVUNJWzXNxgy7ZTtHwzl8lndqXZCmun6dHXoS3lgemArqExGY8KS1cKiMeXTyhvKjyo/prypvCuq08IMYaPCxoSZlfLcEVOERZMicitdgW7UVTds7e1ruqA7diihW3bGsDTXdhptSy/j7kRZvtlNO3pZRVPSzjvlB8Z4+Yyccb5sRk4f162yE91Ipd2yIZZRLqRBKbXyGd2RNCh1lphUWWSNnsYib1AK/0OlvlKvVFfq9bSVuKes1Kx0FalfqXKTPilHgNThJms8AW7SrzZLlCtFXu4SeW+JCLzpokCNdZOBuJ3JaPJ1BHN6xojbpm1JFhCvxrATssWrUIFMusn6UqWbDAppMd3JGSk1P5fV4kpIXLfknrp43nF0Kz4pdyVs09SUPPmOZTbn6o5pWCkpdVIp9GfNfE5OEj+DCuoyedM1sqY3wRg3Erq6yLm8ZoqgNuXompgiW009Jzvq5YhL7UHxuo24Zlq2lFMrrlVQVpvT466h7uA9znBnIOVo47q4byygxfOuigq5SAF7Aq5hJlSmrtAVimvZYLFTsWK3ZIW6iMoUu1Vm0LZTpvev/BeWnuwcAAAAAAEAAgAHAAr//wAPeNpjYGRgYOABYhMgZmJgY2BkeADEDxkeAXmPgZCR4QnDbyD7D6MdAyOjPaM9kP2NQYRBB6jDhsGLIYIhjaGEoYlhAsM8hmUM6xi2MexjOMZwjuEawz2GZwzvgPpZgPqc4TTIDi6ICFM9TXjoNhJH50PpIihdCqUjobQL0BZGhhfAsGAAAPKGIUgAAAB42sVYW0ycRRT+zl5/FliW7XahK12WFWvFSpE2pjEN1kpJ2VIgCLUhhkih3NxuG7o21hjS8GBMY3w0aowPpumjDz4YTUwffDDqgw8+iDWxsUZbL6j1Xi8tfjP/D/x7I9y2ZpM585+Z+c4358ycmVkIAB9elhhcrW0dvYgMnZ5MYufo5NHH0ZkcTKcwBhf7YG4OBoXAASc1Hnj5vZoWH+ShB3tjiBVoV1qBGyVDg8k0dg2njh9Dy8jk4BBak+OjgziSTD1xDGPJ40NJpFidRPqE0jyVVuUZjRfSZYBluYXtttBLaL8UZdT7dZ8NuqzUJXRZoUvRZRDVaMb92ItTmMIzeB4v4FWcx+t4ExfwHj7CJ7iEK/gRf+CmeMQvYdpRI2dNBPHp7yrpl1nHlNPlPOtyuaZcs+5+9zueqCft+dAb8g54X/F+ZpQZLcawcdY4Z1wwMYy3LPmxJa+bsqTBkmOWfMOUPsOSE5b81JSlPZac//7X5FYWt2SDJZstOa2jJ+VmFKXCZcqA32wPRC25m54F/RtChJqY1m7Uvtuuy9NW3YH9qKOnQ2wNo4o+3cQRt6GGfq/AZkTJy4lhjDBCF3EUo4zN53gJbxOzDrU4iRQjN04ch1RKhKY3yw7G0clIbmV8dqMN3egnQgpPYhrP0WrciqaKoUPHuUZzLVbNtOTUtXhBXv8HIx+2oIlruBWdOIwjSHItn9HxuhUesvslVoDLrWNRgno0Yhf3cwcO4TFMIM2WaBE9YZ9/NK/9Yls2uB634T7sQQK9GGA+F92+vnbt86zJY7M41rxcUw3YiRZmmB48Sm1knWZmn08kx856WvBwXSxmC2F2XMsM7Lyrs7DXjurm1/wOFubylTO18wtn4K0WycX4mLvKPPeXh2PnEbJhrGy0kz5WK119LW3Zbi+4MG45Ixz0U8y6zeT2t+MGrL6Fe6m5ir75zOvs4/0LNyd7i+jTXY2r1yd8eAnO8/NTOcDsm8lhZsHjDr0ys/uwJl4JZPUOU5r7r3D//COrGdn5TLScsflRIlyni3l7ZTj5EWu4M+0n4Wox86NHma8y7x9rx89vKcZMb8+LIzixrrbyW43zHM08XSbxdJHs5mdQz5tM9jk+hWeLziGXjbnTgtb7pSrDtoM9Zli7IR5qc3dylUZxFth/HvyWsXs9+C6jZ3Hu9BpX4lInd0iz3CVR6islKBskJBslLFVSLZskIrUSk+1yjzTK7XKn1MtW2SH3SpPcLdtki6gXTZ0+W9Wbz09GlXm5Kp61mtEwOY6Q5Th5ndQ8L5KvyDWOD/P2/iLtTctr8q5c0neqRiTkAfq9h78Eusi6S9d6KDsoW/EI93Uf9Zf51izQRoRSG8LehX7CvPVV4XGcT4w7vIkrcA+/uqkd4AwmuPtOcSdM4xo5trP3T1p28X2qZCd+0PIgX6dKduB7LQ8wskruw+/0f5eOeyd+ZXkQv7DswM8sD/CN6yDmtyzb8Q3LfSv0xNer9MSVJTyh2q8u0a4YBhjB63qG7fhLz+FPPQcH10cZ/tGav7VGdD7bz1pCI/axRUT1CzLHdeMc3/3v63HRgowvszU7knaNi6s8zpzZtgSCkaFvyNEk6EtPjpeyNVczNIp1DF9yxofxMFH6NPJie2ZLIgPLo71i+uSQdcIb2sYXxF1859dwRjPMIIaUiE9KpUzKxS8VEtCZI2hlDtXrA9zATcxxIP0rTnGJm1nKof+tUTlWZRn5D/8+UWEAAHjazVp5jCRVGf+quqqP6mump6en59pjFnaXhV0u5Vx31w0iKIoHKqIQ5ZIIAiEYQ5TVJSauJGJc+cPgRNGYDYjAiJKQkbConWiitMgiaTFrtEJEsVEGsVH7j/L3fq+quvqcnhlCqF+qu45X7/i+733Xe2KIiCMXyZVinXPuBRfJ1BW33HSdbP7ETVddK6dc9/Gbr5ddYqGMeJ6ossNcG9deddP1ksSVqe7wG5cCfpMSk81G0byE10780fhfSnvnnjz+iydcs/2k7Z/cfuf2GkpXWVdONstJaHuXnCNXy+fkLvmePCA/xvmY/BLfFz1XSl4DNY6j/2Wck2Lj6yKeJfn7Ba9hJLy6kcGZxZnDfR7/I14dJYv4nfGek30o+XldWhKsdbf3rHrqf9vAtw1800CbE3g7ie9Mfj2OZwa/UPdVfIc3huHVjBieGfgOvxhHToroY0km0MtJmZGNskl2y1HDMnIov4GjvUP+hNZToGBdug7PRUvtT2od94v8rbeeB1foQ/CkErxBuXpXjVVyKwvK2OiRA1iSB0wZAQwZBUxwsYD3NwCG7Afi8iv5Na6fAGLyJBCTpwFT/gjY+Hf4TVzGANAXMEGLEspNAAZoUga/Jsk9VYvFWix+H2e7NupIoycjuC5AHi5D6/vZ7hMo+TTKmdbFiormI+bLKDtHSgSoySoPUiS4nvcWvAZQAxreQXBkEf91xRlcVQPa9qilEVC6F2d7le7kjH7e/65fTbKGI+xzo11SOvoxzIjqUSooaQzrrnZSe5j6erZRW80I9ciC+TGYXn7vh5SnoWlvYsareaFnRIozwuaMsDgjkjIFGDINxKA5ZiRu5KA1EvjibLxNyiznaI6zM8eZNsIaRznTpqB3xvGtqnec9RZZ7wTrnWS9BTkGMKBtN+P9NqAs24GknAKU5U1AWU4HTDkD2ChnAjE5C7DQi7PR451AHHr6HIzhXDlPMvIOIC3vAzLyfiALC3MRrj8I5OVmYIN8GlgvnwGy8llgRm6TL6EnB4CEfBkoy53yDfzeBZTlm/IttP5tIC7flXvQ1r1yP+p8CBiDZXgE14tARn4OlKUCZKhT1lGnrKNmykkNcOQoUKKWGTGSRlJmjJSRkg2GYziy3kgbaZQxyJ9Ac0+BWjOgvgENY5F7SrMb8hBkNwbtX5O93oLshxQri7df7hYzv0eVzNyYvQA17KUEHfY1xn3QKEdxPe8tQXvb0CsVPHXx7Hn817wjeFf1Dvnaui6v4UG5V5rmD+3aJmhFv+fpaLvhNcM5s4SzueYevNRh35Z06xFt6bKluvf73tpGz992rLgXLjnS0DqAI16K1sazGY7eDbWZS664ndow/HZofnWMSWukeofO0SOt96XDUqetaf2vRNe36CpOa6whrdv78Lz2KGgFK74/YftypcseUjqddAJ9+9vHaI3awoYjbwa1BaNucTlSquHb+QgdWlYnoGlvL6qnjl/qrKHTOkclrcuLWlr7zHxd+rBueHmIaoSgBX9+NLttau8aorIzjOfQ8lr5reKcE0pCI/Rij6iZGPgPnXX26kW3x9DtCUdG+TCluwYtvEi/b9F7hdqwAt2t/rWO9vvgzbM2t7+HMEj+elNE6yZ6mbX2Wd6lozrnBTwV2JKafo+yzRa//HlRb48Llu81uWJzph7tP7KWlwR6HcT1ocjo7EBCvX04F0hXaAdFu+E1ZosCnbpT2Sv/ztUlIyVe7ScPQ2vrgO5uoAE7dRhkZqlT1v1v6mvzyLvnBeWignmxoCjZkmxQ8zDoWvF5UPOt22Hy4SDuH/ZeVP4G5VhJcs076Ft5pa8XdV1ajhnxtEnfyi3K8G8j+r2+IjrU4YEVOQI3UtdRn19uQAfec3yY0XWtMXiqd08pX0xTknSphnRwI3IXiZ079IvLPvyirQ+UQu0XBPf8P8K+LnKORvugatcWteLfV9v0qtvlpR1t6wHntG9Jg7Zc9gK907XoFgfIdz3SQjSfUO/Hu3bZUD4rZHI+yEn4tH8Yz6vheGq+bN7HcvO4v4+RdZVx9SLuqt4BnxcLpEaFfaswSlwKZbrR2eNOm9XhndUDbq5k1g8fzwUapys7s6w0K1nsPcc0z3pFzD3jyWPkWEBHc6ZsAWKyFbDkOMBmfBeX4+UERFgqykvJDsCRE4G0nCQn47mK+zJyKpBl9JeRNwM5OQ3IMxIcYSQ4ykiwwEhwjJFgkZHguLwFKDGOsxjHmXK7fAXXdwAJ+ap8DdHlQSAmXwcSjPIyjPIyjPJGGeWNI4K6G7GXiuYsjMmWV/HmdIzzDDwd5YjLOHeg/R2IDHciGhbZg1EI2hfZjYjyrYA+VP/XMRupD/1/Qkg7wz/PRG9jaM9GhBrH6AWRnzpOxbkJ9EwTSVBuC6i9nTRWFE6DWmnQeBsoMsaM3xxocPwAbiUw2pPxfxauokcW5y5eZUBTfZyIvrewPhyFgDNC/ugxBFDXMR9x3G1B36NIhzgWkqJkZppjCCA4x3yU8HUJbw0+bx2K7yord4r/OwUunBz22LfE4Ev3kRyIrUSBGWMLNFa8vA0SMgX5uBstKHk4Q8zM1Sq2Tu1xfgA+bwu8HEJ7yE2VHV59/q9NlzR9y75EPVLx2wnwqG/hm0NlxOiJRf2x6Nz2Y83I71C9bMKiN3Wt4ZFfo7Oh4jmVDbYjUXFzWR20jIYEnvf+HPWGfE+s2B67Uts3aKOLeLcYWLf+9GwbvRPqeae79DDaPZIB7fI1+3vvg/jfm+9rlM7+dW5dQ52DZKm4Gvvo03Cp02ca3uZ2z+MW33VU0YvbKx97iMZrx6Mg+oLk1zmHXu625YG/1tdDcLX32R7ld+mlYJZqXVjTXt9y8hZKb1BnPcxjRXUdNSrnYbNb1/XufUSW7B6ytGl1OoSRlorvHHgBaqWq1MYtu31dTHmVvD5E77HWU15tnnaHTq609EowH1agk1XOoum9oH5Rs8rT29RLdqQ9e6DMN4ajZx/PsTF0P0VLET2FZdfEgkyL8uj78r1bZ2YGrd4Eubmof963n0ur1iFuz6xjazU016nF2/IHi5QI189sKI+9MuTYddsO+e1QR61aT608h9Q3VtgpbwMMORcw5e1ATM4DLDkfsLmGE5d3Ajm5AEjKuwBH3g2k5UIgI++R9+KtWufJc51nhOs8o/IBoMDVnjH5EFCUi4Fx+TBQkkuACfkIUJaPApNyKTDFtaBx+Q6QkHsAS+4FTPm+3I/rB4CkPCg/hO+t1nym5UdAjis/ea785OUn8hhqOAxMyuOAIT8FJuVnQJYrQpb8FTDkb4AtLwCG/B3ISR1IyouAI/8A0vJPICMvAUVZAnLyMpCUfwGOvAKk5d9ARhpAEfHJf1Dnf4Gi/A+wpQmoFe/z0ecU/PYMME1dMMs1u1n6uRNcm9vIVbnjEDfM4RsVZ21ihHUMPe1jGVttRlSzG3XsAaZlLzDJdTeDvBzl6pvmn0n+xci/UfIvS/6NgHsX4oniXIGcs8i5MXLOIudK5JxNzsXJuTI5lyDnkuRcipxzyLm0fAyYlk8Bc+TimNwKbOUegQ2M5jaTr6NcuTO4cqc5mgNHHwQ9FsDXHPk6Rb4WyFeLfLXI1zL56pCvo+SrQ74WfL6qlb5xqQJb5DeAXvUbl98CW+QpQK8AzsrvgDl5BtgqzwIzXAecgFyoXR6vgn8FcK+JsZtc17wU80WNagojeATjXESrp7LVnfimiQjFTF6uopF4Mf4cqLdJe7TyBjq6s5Kr9N9rgzJIr+N46u3WYrD/NIAqLnPQlUh+zV1ZTczacUWglYUN7Zr2oKrD1hhd/3stcsWRKKu6wi9rXN2rdVr/IH9H37LeyvEtU2NF51X9uwPd1rFv/sttq6Ua9ALlD/jrtzrT7/r9qtJX1li2xmiWcmXZd7W2wexklX0/EK4Mu+F7l1nchs52qj1C3TzAu30Rb2N+cF+7vTGdwe/hTdXbo4Uh5rTO97tvBE01OMO8nKTR0z+Ic96XikqQcWYGutLOBz6r+e9rkXXvK0ndhXbq+lJYZzbbXcYLM7lPxGIu0Yb1jXMXnPL/svQDDPxn6QvkYVnVLrsYfYIEfYIc7NQ61jEHW6us/gitvkGrP06La8gVQIF2V+/Ki8ktQJLWN07rW+ROuRitY5rWMUPr6NA6pmkdM7SOjhwBRmkjE7SRNm1knNYxh77s5q6iEncMJZhjzjOjnI/sGMozZ6zzxDbzxCP0YuL0YmLME6foy1jME8/Rf9lAz8Wh52LQc5mgzzJFn8WktzJLb8Wht1Kmt+LQW1lHb2WS3soovZX19FYK9FbG6K1k6K1k6a1spC0vc7dRglnqHLPUeeah88xD55mHHqHnYtFn2UCfxaHPMk2fZYY+yzR9ljR9lln6LA59Foc+y3r6LFl6K1l6K7PMX+bpPTjkxzj5USQnxsmJIj0Rg57ILD2RUdxtoSTFuRsyQ8nROyKVnMzJLnBnDyTjMsjFFZCHGyAHt4b7JKto4UnU/xQ4/DQ4+4zaNYlftY/pGtmH/zQ1wcIAXaNXaiN7S3wt2wg0cp9IROXTk9z7q3xgg/lnk7un9M4zJTsm5cWipNiUlDglxaGkJMjPJHmYiuwSi5E/CdI4RRqnuE6gsvOb5Fq5EfU+zjFug2Sq+ab37lT0On3gzVBTBvl/E5LX2hFnUb4t9jFG+bYo3xZXQ2z2Ok4pT7DvSfY9Fel7mjKdifTapLRZlDaL0mZR2hIcTdpf71ASkOFOsphcjt8dHEcJfYqF2X+TOwhbNDXCdQwrQgG9W63AnYRGZKWjdQZtnMaSZbZltPFPtWKylRg95mhNdtjWs8O39n+9JfMNAAAAAAABAAAAANWkJwgAAAAA1YO2WAAAAADY2izo') format('woff');font-weight:normal;font-style:normal}@font-face{font-family:'TypoGraphica';src:url('../fonts/TypoGraphica.eot?#iefix') format('embedded-opentype'),url('../fonts/TypoGraphica.woff') format('woff'),url('../fonts/TypoGraphica.ttf') format('truetype'),url('../fonts/TypoGraphica.svg#TypoGraphica') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'argon';src:url('../fonts/argon.eot?u6kthm');src:url('../fonts/argon.eot?u6kthm#iefix') format('embedded-opentype'),url('../fonts/argon.ttf?u6kthm') format('truetype'),url('../fonts/argon.woff?u6kthm') format('woff'),url('../fonts/argon.svg?u6kthm#argon') format('svg');font-weight:normal;font-style:normal;font-display:block}[class^="icon-"],[class*=" icon-"]{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-expand_more:before{content:"\e20b"}.icon-menu:before{content:"\e20e"}.icon-favorite:before{content:"\e291"}.icon-spinner:before{content:"\e603"}.icon-delete:before{content:"\e900"}.icon-edit:before{content:"\e901"}.icon-use:before{content:"\e902"}.icon-loading:before{content:"\e903"}.icon-switch:before{content:"\e904"}.icon-error:before{content:"\e905"}.icon-dashboard:before{content:"\e906"}.icon-logout:before{content:"\e907"}.icon-Network:before{content:"\e908"}.icon-services:before{content:"\e909"}.icon-system:before{content:"\e90a"}.icon-vpn:before{content:"\e90b"}.icon-storage:before{content:"\e90c"}.icon-statistics:before{content:"\e90d"}.icon-hello-world:before{content:"\e90e"}.icon-angle-right:before{content:"\e90f"}.icon-password:before{content:"\e910"}.icon-user:before{content:"\e971"}.icon-question:before{content:"\f059"}.icon-docker:before{content:"\e911"}.icon-control:before{content:"\e912"}.icon-statistics1:before{content:"\e913"}.icon-asterisk:before{content:"\e914"}.icon-app:before{content:"\e915"}:root{--primary:#5e72e4;--dark-primary:#483d8b;--main-color:#09c;--header-bg:#09c;--header-color:#fff;--bar-bg:#5e72e4;--menu-bg-color:#fff;--menu-color:#5f6368;--menu-color-hover:#202124;--main-menu-color:#202124;--submenu-bg-hover:#d4d4d4;--submenu-bg-hover-active:#09c;--blue:#5e72e4;--indigo:#5603ad;--purple:#8965e0;--pink:#f3a4b5;--red:#f5365c;--orange:#fb6340;--yellow:#ffd600;--green:#2dce89;--teal:#11cdef;--cyan:#2bffc6;--gray:#8898aa;--gray-dark:#32325d;--light:#ced4da;--lighter:#e9ecef;--secondary:#f7fafc;--success:#2dce89;--info:#11cdef;--warning:#fb6340;--danger:#f5365c;--light:#adb5bd;--dark:#212529;--default:#172b4d;--white:#fff;--neutral:#fff;--darker:black;--background-color:#f4f5f7;--login-form-bg-color:rgba(244,245,247,0.8);--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--blur-radius:10px;--blur-opacity:.5;--blur-radius-dark:10px;--blur-opacity-dark:.5;--font-family-sans-serif:"Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB";--font-family-monospace:SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;--font-family-normal:Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif}*{margin:0px;padding:0px;box-sizing:border-box}html,body{margin:0px;padding:0px;height:100%;font-size:16px;font-family:"Google Sans","Microsoft Yahei","WenQuanYi Micro Hei","sans-serif","Helvetica Neue","Helvetica","Hiragino Sans GB";font-family:var(--font-family-sans-serif)}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{font-size:.875rem;background-color:#f4f5f7;background-color:var(--background-color);color:#32325d;color:var(--gray-dark);-webkit-tap-highlight-color:transparent}textarea{padding:.2rem}textarea:focus-visible{outline:none;border:1px solid var(--primary)}::selection{background-color:#5e72e4;background-color:var(--primary);color:#ffffff;color:var(--white)}::placeholder{color:var(--lighter)}a:link,a:visited,a:active{color:#5e72e4;color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}li{list-style-type:none}.table{position:relative;display:table}.tr{display:table-row}.thead{display:table-header-group}.tbody{display:table-row-group}.tfoot{display:table-footer-group}.td,.th{line-height:normal;display:table-cell;padding:.5em;text-align:center;vertical-align:middle}.th{font-weight:bold;white-space:nowrap}.tr.placeholder{height:4em}.tr.placeholder>.td{line-height:3;position:absolute;right:0;bottom:0;left:0;padding:.4rem 0 !important;text-align:center !important;background:inherit}.td[width="33%"]{padding:1.1em 1.5rem}.table[width="33%"],.th[width="33%"],.td[width="33%"]{width:33%}.table[width="100%"],.th[width="100%"],.td[width="100%"]{width:100%}.col-1{flex:1 1 30px !important}.col-2{flex:2 2 60px !important}.col-3{flex:3 3 90px !important}.col-4{flex:4 4 120px !important}.col-5{flex:5 5 150px !important}.col-6{flex:6 6 180px !important}.col-7{flex:7 7 210px !important}.col-8{flex:8 8 240px !important}.col-9{flex:9 9 270px !important}.col-10{flex:10 10 300px !important}*{box-sizing:border-box;margin:0;padding:0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:normal;line-height:1.1 !important;color:inherit}select{padding:.36rem .8rem;color:#555;border:thin solid #ccc;background-color:#fff;background-image:none}.btn,button,select,input,.cbi-dropdown{line-height:1.5em;padding:.5rem .75rem;color:#8898aa;border:1px solid #dee2e6;border-radius:.25rem;outline:0;background-image:none;box-shadow:none;transition:box-shadow .15s ease}select,.cbi-dropdown{width:inherit;cursor:default}select:not([multiple="multiple"]):focus,input:not(.cbi-button):focus,.cbi-dropdown:focus{border-color:#5e72e4;border-color:var(--primary);box-shadow:0 3px 9px rgba(50,50,9,0),3px 4px 8px rgba(94,114,228,0.1)}.cbi-dropdown,select[multiple="multiple"]{height:auto}pre{overflow:auto}code{padding:1px 3px;color:#101010;border-radius:2px;background:#ddd;font-family:inherit;font-size:inherit}abbr{cursor:help;text-decoration:underline;color:#5e72e4;color:var(--primary)}hr{margin:1rem 0;opacity:.1;border-color:#eee}ul{line-height:normal}li{list-style-type:none}h1{font-size:2rem;padding-bottom:10px;border-bottom:thin solid #eee}h2{margin:0 0 1rem 0;font-size:1.25rem;letter-spacing:.1rem;padding:1rem 1.25rem;color:#32325d;border-radius:.25rem;background:#fff;box-shadow:0 4px 8px rgba(0,0,0,0.03);font-weight:bold}h3{font-size:1.1rem;line-height:1;display:block;width:100%;margin:0;margin-bottom:0;padding:.8755rem 1.25rem;color:#32325d;color:var(--gray-dark);border-radius:.25rem;background:#fff;font-weight:bold}h4{margin:0;padding:.75rem 1.25rem;font-size:.875rem;font-weight:600;color:#525f7f;font-weight:bold}h4 em{padding:0 .5rem}h5{font-size:1rem;margin:2rem 0 0 0;padding-bottom:10px}.pull-right{float:right}.pull-left{float:left}.nowrap:not(.td){white-space:nowrap}[disabled="disabled"]{pointer-events:none}.login-page{height:100%}.login-page .video{position:absolute;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#000;background-color:var(--darker);overflow:hidden}.login-page .video video{width:100%;height:auto}.login-page .volume-control{position:fixed;right:1rem;top:1rem;width:1.5rem;height:1.5rem;z-index:5000;cursor:pointer;background-size:contain;background-image:url(../img/volume_high.svg)}.login-page .volume-control.mute{background-image:url(../img/volume_off.svg)}.login-page .main-bg{position:absolute;width:100%;height:100%;left:0;top:0;background-image:url(../img/blank.png);background-repeat:no-repeat;background-position:center;background-size:cover;transition:all .5s}.login-page .login-container{height:100%;margin-left:4.5rem;position:absolute;top:0px;display:flex;flex-direction:column;-webkit-box-pack:center;justify-content:center;align-items:flex-start;min-height:100%;z-index:2;width:420px;box-shadow:rgba(0,0,0,0.75) 0 0 35px -5px;margin-left:5%;background:transparent}.login-page .login-container .login-form{display:flex;flex-direction:column;-webkit-box-align:center;align-items:center;position:absolute;top:0px;width:100%;min-height:100%;max-width:420px;background-color:#fff;background-color:var(--white);-webkit-backdrop-filter:blur(var(--blur-radius));backdrop-filter:blur(var(--blur-radius));background-color:rgba(244, 245, 247, var(--blur-opacity))}.login-page .login-container .login-form .brand{display:flex;-webkit-box-align:center;align-items:center;margin:50px auto 100px 50px;color:#525461;color:var(--default);justify-content:center}.login-page .login-container .login-form .brand .icon{width:50px;height:auto;margin-right:25px}.login-page .login-container .login-form .brand .brand-text{font-size:1.25rem;font-weight:700;font-family:"TypoGraphica"}.login-page .login-container .login-form .brand:hover{text-decoration:none}.login-page .login-container .login-form .form-login{width:100%;padding:20px 50px;box-sizing:border-box}.login-page .login-container .login-form .form-login .errorbox{text-align:center;color:#fb6340;color:var(--warning);padding-bottom:2rem}.login-page .login-container .login-form .form-login .input-group{margin-bottom:1.25rem;position:relative}.login-page .login-container .login-form .form-login .input-group::before{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#525461;color:var(--default);font-size:1.5rem;position:absolute;z-index:100;left:10px;top:10px}.login-page .login-container .login-form .form-login .input-group .border{position:absolute;width:100%;height:1px;bottom:0;border-bottom:1px #5e72e4 solid;border-bottom:1px var(--primary) solid;transform:scaleX(0);transition:transform .3s}.login-page .login-container .login-form .form-login .input-group input{font-size:1rem;line-height:1.5em;display:block;width:100%;padding:.5rem .75rem .5rem 3rem;margin:.825rem 0;box-sizing:border-box;transition:all .3s cubic-bezier(.68, -0.55, .265, 1.55);color:#525461;color:var(--default);border:0;border-radius:0;border-bottom:1px solid #fff;border-bottom:1px solid var(--white);background-color:transparent;background-clip:padding-box;box-shadow:0 3px 2px rgba(233,236,239,0.05);outline:none}.login-page .login-container .login-form .form-login .input-group input:focus+.border{transform:scaleX(1)}.login-page .login-container .login-form .form-login .input-group .cbi-input-password{margin-bottom:2rem;position:relative}.login-page .login-container .login-form .form-login .user-icon::before{content:"\e971"}.login-page .login-container .login-form .form-login .pass-icon::before{content:"\e910"}.login-page .login-container .login-form .cbi-button-apply{width:100% !important;box-shadow:rgba(0,0,0,0.1) 0 0 50px 0;font-weight:600;font-size:15px;color:#fff;color:var(--white);text-align:center;width:100%;cursor:pointer;min-height:50px;background-color:#5e72e4 !important;background-color:var(--primary) !important;border-radius:6px;outline:none;border-width:initial;border-style:none;border-color:initial;border-image:initial;padding:10px 0px;margin:30px 0px 100px;transition:all .3s !important;letter-spacing:.8rem}.login-page .login-container .login-form .cbi-button-apply:hover,.login-page .login-container .login-form .cbi-button-apply :focus{opacity:.9}.login-page .login-container footer{box-sizing:border-box;width:100%;text-align:center;line-height:1.6rem;display:flex;justify-content:space-evenly;margin-top:auto;padding:0px 0px 30px;z-index:10;color:#525461;color:var(--default);position:absolute;bottom:0}.login-page .login-container footer .ftc{position:absolute;bottom:30px;width:100%}.login-page .login-container footer .luci-link{display:block}header,.main{width:100%}footer{font-size:.875rem;overflow:hidden;padding:1rem;text-align:right;white-space:nowrap;color:#aaa}footer>a{text-decoration:none;color:#aaa}small{font-size:90%;line-height:1.42857143;white-space:normal}.main{position:relative;top:0;bottom:0;overflow-y:auto;height:100%;display:flex;flex-direction:row}.main-left{flex-shrink:0;width:15rem;height:100%;background-color:var(--menu-bg-color);box-shadow:rgba(0,0,0,0.75) 0 0 15px -5px;overflow-x:auto;z-index:100}.main-left .sidenav-header{padding:1.5rem .5rem;text-align:center}.main-left .sidenav-header .brand{display:block;font-size:1.8rem;color:#5e72e4;color:var(--primary);font-family:"TypoGraphica";text-decoration:none;text-align:center;cursor:default;margin:0 2rem}.main-left .sidenav-header .brand .logo{max-width:100%;height:auto}.main-left::-webkit-scrollbar{width:5px;height:1px}.main-left::-webkit-scrollbar-thumb{background-color:#f6f9fc}.main-left::-webkit-scrollbar-track{background-color:#fff}.main-right{flex-grow:1;height:100%;transition:all .2s;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column}.main-right>#maincontent{position:relative;z-index:50;flex:1;display:flex;flex-direction:column}.main-right>#maincontent>.container{margin:0 1.25rem 1rem 1.25rem;flex-grow:1}.main-right>#maincontent .Dashboard{color:var(--gray-dark) !important}.main-right>#maincontent .Dashboard h3{color:var(--gray-dark)}.main-right>#maincontent .Dashboard p{margin-bottom:3px;margin-top:3px}.main-right>#maincontent .Dashboard hr{border-top:1px solid #000}.main-right>#maincontent .Dashboard .dashboard-bg{background-color:#fff}.main-right>#maincontent .Dashboard .settings-info{padding-top:1em;padding-bottom:1em}.main-right>#maincontent .Dashboard .settings-info p span:nth-child(2){max-height:18.5px;top:4px}.main-right>#maincontent .Dashboard .settings-info .label{font-size:.7rem;padding:.2rem .6rem}header{color:#fff;color:var(--header-color);padding:0;position:relative}header.bg-primary{background-color:#5e72e4 !important;background-color:var(--primary) !important}header::after{content:"";position:absolute;height:2rem;width:100%;background-color:#5e72e4 !important;background-color:var(--primary) !important}header .fill{padding:.8rem 0;border-bottom:0 solid rgba(255,255,255,0.08) !important;display:flex}header .fill .container{height:2rem;padding:0 1.25rem;display:flex;align-items:center;width:100%}header .fill .container .flex1{flex:1}header .fill .container .flex1 .showSide{display:none;color:#fff;font-size:1.4rem}header .fill .container .flex1 .showSide:hover{text-decoration:none}header .fill .container .flex1 .brand{font-size:1.5rem;color:#fff;font-family:"TypoGraphica";text-decoration:none;padding-left:1rem;cursor:default;vertical-align:text-bottom;display:none}header .fill .container .pull-right{float:right;margin-top:0rem;display:flex}header .fill .status span{display:inline-block;font-size:.875rem;font-weight:bold;padding:.3rem .8rem;white-space:nowrap;text-decoration:none;text-transform:uppercase;text-shadow:none;border-radius:4px;cursor:pointer;transition:all .3s;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12);margin:0 .25rem}header .fill .status span:last-child{margin-right:0}header .fill .status span[data-indicator="poll-status"]{color:#fff}header .fill .status span[data-style="active"]{background-color:var(--green)}header .fill .status span[data-style="inactive"]{color:#ffffff !important;background-color:#32325d}#xhr_poll_status{display:flex;margin-left:.5rem}#xhr_poll_status *{color:#fff}div[style="width:100%;height:300px;border:1px solid #000;background:#fff"]{border:0 !important}.danger{background-color:#ff7d60 !important}.warning{background-color:#f0e68c !important}.success{background-color:#5cb85c !important}.notice{background-color:#11cdef !important;color:#fff}.error{color:#f00}.alert,.alert-message{font-weight:bold;margin-bottom:1.25rem;margin-left:1.25rem;margin-right:1.25rem;padding:1rem 1.25rem;border:0;border-radius:.25rem !important;background-color:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12);text-shadow:none}.alert.error,.alert-message.error{background-color:#ffd600}.alert h4,.alert-message h4{padding:.25rem 0;border-radius:4px;background-color:#ffd600}.alert .btn,.alert-message .btn{height:auto}.alert-message>h4{font-size:110%;font-weight:bold}.alert-message>*{margin:.5rem 0}.alert-message .btn{padding:.3rem .6rem}.container .alert,.container .alert-message{margin-left:0;margin-right:0;margin-top:0rem}.main .main-left{transition:all .2s}.main .main-left .nav{margin-top:.5rem}.main .main-left .nav>li>a:first-child{display:block;margin:.1rem .5rem .1rem .5rem;padding:.675rem 0 .675rem 2.5rem;border-radius:.25rem;text-decoration:none;cursor:default;font-size:1rem;transition:all .2s;position:relative}.main .main-left .nav>li>a:first-child.active{color:#fff;background:#5e72e4;background:var(--primary)}.main .main-left .nav>li>a:first-child.active::before{color:#fff !important}.main .main-left .nav>li>a:first-child.active::after{transform:rotate(90deg);color:#fff !important}.main .main-left .nav>li>a:first-child:hover{cursor:pointer;color:#fff;background:#5e72e4;background:var(--primary)}.main .main-left .nav>li>a:first-child:hover::before{color:#fff !important}.main .main-left .nav>li>a:first-child::before{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:.8rem;padding-top:3px;transition:all .3s;content:"\e915";color:#5e72e4;color:var(--primary)}.main .main-left .nav li{padding:.5rem 1rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:0}.main .main-left .nav li a{display:block;color:#5f6368;color:var(--menu-color)}.main .main-left .nav li.slide{padding:0}.main .main-left .nav li.slide ul{display:none;overflow:hidden}.main .main-left .nav li.slide:hover{background:none}.main .main-left .nav li.slide .slide-menu{margin:0 .5rem 0 2.5rem;padding:0 .5rem}.main .main-left .nav li.slide .slide-menu.active{display:block}.main .main-left .nav li.slide .slide-menu li{position:relative;border-radius:.25rem;margin:0;background:none;list-style:none}.main .main-left .nav li.slide .slide-menu li a{text-decoration:none;padding:.5rem 0}.main .main-left .nav li.slide .slide-menu li::after{content:"";position:absolute;left:0;bottom:0;width:0;height:2px;background-color:#5e72e4;background-color:var(--primary);transition:all .2s}.main .main-left .nav li.slide .slide-menu li:hover{background:none}.main .main-left .nav li.slide .slide-menu li:hover::after{width:100%}.main .main-left .nav li.slide .slide-menu .active{background:none;color:var(--menu-color)}.main .main-left .nav li.slide .slide-menu .active a{color:var(--menu-color)}.main .main-left .nav li.slide .slide-menu .active::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#5e72e4;background-color:var(--primary);transition:all .2s}.main .main-left .nav li.slide .slide-menu .active:hover{background:none}.main .main-left .nav li.slide .slide-menu .active:hover::after{width:100%}.main .main-left .nav li .menu{display:block;margin:.1rem .5rem .1rem .5rem;padding:.675rem 0 .675rem 2.5rem;border-radius:.25rem;text-decoration:none;cursor:default;font-size:1rem;transition:all .2s;position:relative}.main .main-left .nav li .menu.active{color:#fff;background:#5e72e4;background:var(--primary)}.main .main-left .nav li .menu.active::before{color:#fff !important}.main .main-left .nav li .menu.active::after{transform:rotate(90deg);color:#fff !important}.main .main-left .nav li .menu:hover{cursor:pointer;color:#fff;background:#5e72e4;background:var(--primary)}.main .main-left .nav li .menu:hover::before{color:#fff !important}.main .main-left .nav li .menu::before{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:.8rem;padding-top:3px;transition:all .3s;content:"\e915";color:#5e72e4;color:var(--primary)}.main .main-left .nav li .menu::after{position:absolute;right:.5rem;top:.8rem;font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-moz-osx-font-smoothing:grayscale;content:'\e90f';transition:all .15s ease;color:#ced4da;text-rendering:auto;-webkit-font-smoothing:antialiased;transition:all .3s}.main .main-left .nav li .menu[data-title=Status]:before{content:"\e906";color:#5e72e4;color:var(--primary)}.main .main-left .nav li .menu[data-title=System]:before{content:"\e90a";color:#fb6340}.main .main-left .nav li .menu[data-title=Services]:before{content:"\e909";color:#11cdef}.main .main-left .nav li .menu[data-title=NAS]:before{content:"\e90c";color:#f3a4b5}.main .main-left .nav li .menu[data-title=VPN]:before{content:"\e90b";color:#8965e0}.main .main-left .nav li .menu[data-title=Network]:before{content:"\e908";color:#8965e0}.main .main-left .nav li .menu[data-title=Bandwidth_Monitor]:before{content:"\e90d";color:#2dce89}.main .main-left .nav li .menu[data-title=Docker]:before{content:"\e911";color:#6699ff}.main .main-left .nav li .menu[data-title=Statistics]:before{content:"\e913";color:#8965e0}.main .main-left .nav li .menu[data-title=Control]:before{content:"\e912";color:#5e72e4;color:var(--primary)}.main .main-left .nav li .menu[data-title=Asterisk]:before{content:"\e914";color:#fb6340}.main .main-left .nav li a[data-title=Log_out]::before,.main .main-left .nav li .food[data-title=Log_out]::before{content:"\e907";color:#adb5bd}.lg{margin:0;padding:0 !important}.logout{display:block;margin:.8rem .5rem .1rem .5rem;padding:.675rem 0 .675rem 2.5rem;border-radius:.25rem;text-decoration:none;font-size:1rem;transition:all .2s;position:relative}.logout:before{font-family:'argon' !important;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:.8rem;padding-top:3px;transition:all .3s;content:"\e907";color:#32325d !important}body[class*="node-"]>.main>.main-left>.nav>.slide>.menu::before{transition:transform .1s ease-in-out}body[class*="node-"]>.main>.main-left>.nav>.slide>.menu.active::before{transition:transform .2s ease-in-out}.main>.main-left[style*="overflow: hidden"]>.nav>.slide>.menu::before{display:none}.cbi-section,.cbi-section-error,#iptables,.Firewall form,#cbi-network>.cbi-section-node,#cbi-wireless>.cbi-section-node,#cbi-wireless>#wifi_assoclist_table,[data-tab-title],[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),[data-page="admin-system-opkg"] #maincontent>.container{font-family:inherit;font-weight:normal;font-style:normal;line-height:normal;min-width:inherit;margin:1.25rem 0;padding:0;border:0;border-radius:.25rem;background-color:#fff;box-shadow:0 0 1rem 0 rgba(136,152,170,0.15)}.cbi-section:last-child,.cbi-section-error:last-child,#iptables:last-child,.Firewall form:last-child,#cbi-network>.cbi-section-node:last-child,#cbi-wireless>.cbi-section-node:last-child,#cbi-wireless>#wifi_assoclist_table:last-child,[data-tab-title]:last-child,[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear):last-child,[data-page="admin-system-opkg"] #maincontent>.container:last-child{margin:0;border:0}.cbi-modal .cbi-section,.cbi-section .cbi-section{padding:0;box-shadow:none}.cbi-modal .cbi-tabmenu{margin-left:0}.cbi-map:not(:first-child){margin-top:1rem}.cbi-map-descr{font-size:small;line-height:1.5;padding:0 1.25rem 1rem 1.25rem}.cbi-section>.cbi-section-descr{padding-top:1rem !important;padding-bottom:1rem !important}.cbi-section>.cbi-section-descr:empty{padding-top:0 !important;padding-bottom:0rem !important}.cbi-section-descr:not(:empty){font-size:small;line-height:1.5;padding:0rem 1rem}.cbi-map-descr+fieldset{margin-top:1rem}.cbi-map-descr>abbr{cursor:help;text-decoration:underline}.cbi-section>legend{display:none !important}fieldset>fieldset,.cbi-section>.cbi-section{margin:0;padding:0;border:0;box-shadow:none}.cbi-section>h3:first-child,.panel-title{font-size:1.1rem;line-height:1;display:block;width:100%;margin:0;margin-bottom:0;padding:.8755rem 1.25rem;color:#32325d;color:var(--gray-dark)}.cbi-section>h3:first-child,.cbi-section>h4:first-child,.cbi-section>p:first-child,[data-tab-title]>h3:first-child,[data-tab-title]>h4:first-child,[data-tab-title]>p:first-child{padding:1rem 1.25rem}.cbi-section p{padding:1rem}.cbi-tblsection{overflow-x:auto}table{border-spacing:0;border-collapse:collapse}table,.table{overflow-y:hidden;width:100%;font-size:90%}.table .table-titles th{background-color:#e9ecef;background-color:var(--lighter)}table>tbody>tr>td,table>tbody>tr>th,table>tfoot>tr>td,table>tfoot>tr>th,table>thead>tr>td,table>thead>tr>th,.table>.tbody>.tr>.td,.table>.tbody>.tr>.th,.table>.tfoot>.tr>.td,.table>.tfoot>.tr>.th,.table>.thead>.tr>.td,.table>.thead>.tr>.th,.table>.tr>.td.cbi-value-field,.table>.tr>.th.cbi-section-table-cell{padding:.5rem}.container>.cbi-section:first-of-type>.table[width="100%"]>.tr>.td{padding:.6rem}.cbi-section-table-cell{line-height:1.1;align-self:flex-end;flex:1 1 auto}tr>td,tr>th,.tr>.td,.tr>.th,.cbi-section-table-row::before,#cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2){border-top:thin solid #ddd;padding:1.1em 1.25rem}#cbi-wireless .td,.table[width="100%"]>.tr:first-child>.td,[data-page="admin-network-diagnostics"] .tr>.td,.tr.table-titles>.th,.tr.cbi-section-table-titles>.th{border-top:0 !important;background-color:#f6f9fc;padding:1.1em 1.25rem;line-height:1.3rem}[data-page="admin-network-network"] .cbi-value-field .cbi-dynlist{padding:0 !important}[data-page="admin-network-network"] .td>.ifacebadge>.cbi-tooltip-container{display:flex}[data-page="admin-network-network"] .td>.ifacebadge>.cbi-tooltip-container img{vertical-align:middle}#cbi-network .tr:first-child>.td{border-top:0}.table[width="100%"]>.tr:first-child>.td{margin:auto 0}.cbi-section-table-row{margin-bottom:1rem;text-align:center !important;background:#f4f4f4}.cbi-section-table-row:last-child{margin-bottom:0}.cbi-section-table-row>.cbi-value-field .cbi-dropdown,.cbi-section-table-row>.cbi-value-field .cbi-input-select,.cbi-section-table-row>.cbi-value-field .cbi-input-text,.cbi-section-table-row>.cbi-value-field .cbi-input-password{width:100%}.cbi-section-table-row>.cbi-value-field .cbi-input-text,.cbi-section-table-row>.cbi-value-field .cbi-input-password{min-width:80px}.cbi-section-table-row>.cbi-value-field [data-dynlist]>input,.cbi-section-table-row>.cbi-value-field input.cbi-input-password{width:calc(100% - 1.5rem)}.cbi-section-table-row .td{text-align:center !important}.cbi-section-table-row .td .cbi-checkbox input[type="checkbox"]{margin:0}.control-group{display:inline-flex;width:100%;flex-wrap:wrap;gap:0px}.control-group input{border-bottom-right-radius:0;border-top-right-radius:0;border-right-width:0;margin-right:0}.control-group input+button{border-bottom-left-radius:0;border-top-left-radius:0;margin-left:0;border-left-width:0}.control-group>*{vertical-align:middle}div>table>tbody>tr:nth-of-type(2n),div>.table>.tr:nth-of-type(2n){background-color:#f9f9f9}table table,.table .table,.cbi-value-field table,.cbi-value-field .table,td>table>tbody>tr>td,.td>.table>.tbody>.tr>.td,.cbi-value-field>table>tbody>tr>td,.cbi-value-field>.table>.tbody>.tr>.td{border:0}.btn,.cbi-button,.item::after{font-size:.875rem;display:inline-block;width:auto !important;padding:.5rem .75rem;margin-left:5px;margin-right:5px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:all .2s ease-in-out;text-align:center;vertical-align:middle;white-space:nowrap;text-decoration:none;border:0;border-radius:.25rem;background-color:#f0f0f0;background-image:none;appearance:none;-ms-touch-action:manipulation;touch-action:manipulation}.btn:last-child,.cbi-button:last-child{margin-right:0 !important}.btn:first-child,.cbi-button:first-child{margin-left:0 !important}.btn:only-child,.cbi-button:only-child{margin-left:5px !important;margin-right:5px !important}.btn:not(button) ul:not(.dropdown) li{padding:0}.cbi-button-up,.cbi-button-down{display:inline-block;min-width:0;padding:.2rem 1rem;font-size:0;color:transparent !important;background:url(../icon/arrow.svg) no-repeat center;background-size:12px 20px}.cbi-button-up{transform:scaleY(-1)}.cbi-button:not(select){appearance:none !important}.btn:hover,.btn:focus,.btn:active,.cbi-button:hover,.cbi-button:focus,.cbi-button:active,.item:hover::after,.item:focus::after,.item:active::after,.cbi-page-actions .cbi-button-apply+.cbi-button-save:hover,.cbi-page-actions .cbi-button-apply+.cbi-button-save:focus,.cbi-page-actions .cbi-button-apply+.cbi-button-save:active{text-decoration:none;outline:0}.btn:hover,.btn:focus,.cbi-button:hover,.cbi-button:focus,.item:hover::after,.item:focus::after{box-shadow:0 0 2px rgba(0,0,0,0.12),0 2px 2px rgba(0,0,0,0.2)}.btn:active,.cbi-button:active,.item:active::after{box-shadow:0 10px 20px rgba(0,0,0,0.19),0 6px 6px rgba(0,0,0,0.23)}.cbi-button-up:hover,.cbi-button-up:focus{box-shadow:0 0 2px rgba(0,0,0,0.12),0 -2px 2px rgba(0,0,0,0.2)}.cbi-button-up:active{box-shadow:0 -10px 20px rgba(0,0,0,0.19),0 -6px 6px rgba(0,0,0,0.23)}.btn:disabled,.cbi-button:disabled{cursor:not-allowed;pointer-events:none;opacity:.5;box-shadow:none}.alert-message [class="btn"],.modal div[class="btn"],.cbi-button-find,.cbi-button-link,.cbi-button-up,.cbi-button-down,.cbi-button-neutral,.cbi-button[name="zero"],.cbi-button[name="restart"],.cbi-button[onclick="hide_empty(this)"]{color:#fff;border:thin solid #8898aa;background-color:#8898aa}.btn.primary,.cbi-page-actions .cbi-button-save,.cbi-page-actions .cbi-button-apply+.cbi-button-save,.cbi-button-add,.cbi-button-save,.cbi-button-positive,.cbi-button-link,.cbi-button[value="Enable"],.cbi-button[value="Scan"],.cbi-button[value^="Back"],.cbi-button-neutral[onclick="handleConfig(event)"]{font-weight:normal;color:#fff !important;border:thin solid #5e72e4;border:thin solid var(--primary);background-color:#5e72e4;background-color:var(--primary)}.cbi-page-actions .cbi-button-apply,.cbi-section-actions .cbi-button-edit,.cbi-button-edit,.cbi-button-apply,.cbi-button-reload,.cbi-button-action,.cbi-button[value="Submit"],.cbi-button[value="Upload"],.cbi-button[value$="Apply"],.cbi-button[onclick="addKey(event)"]{font-weight:normal;color:#fff !important;border:thin solid #5e72e4;border:thin solid var(--primary);background-color:#5e72e4;background-color:var(--primary)}.btn.danger,.cbi-section-remove>.cbi-button,.cbi-button-remove,.cbi-button-reset,.cbi-button-negative,.cbi-button[value="Stop"],.cbi-button[value="Kill"],.cbi-button[onclick="reboot(this)"],.cbi-button-neutral[value="Restart"]{font-weight:normal;color:#fff;border:thin solid #f5365c;border:thin solid var(--red);background-color:#f5365c;background-color:var(--red)}.btn[value="Dismiss"],.cbi-button[value="Terminate"],.cbi-button[value="Reset"],.cbi-button[value="Disabled"],.cbi-button[onclick^="iface_reconnect"],.cbi-button[onclick="handleReset(event)"],.cbi-button-neutral[value="Disable"]{font-weight:normal;color:#fff;border:thin solid #eea236;background-color:#f0ad4e}.cbi-button-success,.cbi-button-download{font-weight:normal;color:#fff;border:thin solid #4cae4c;background-color:#5cb85c}.cbi-page-actions .cbi-button-link:first-child{float:left}.a-to-btn{text-decoration:none}.cbi-value-field .cbi-button-add{font-weight:bold;padding:1px 6px;display:inline-block;align-items:center}.tabs{margin:0 0 1rem 0;padding:0 1rem;background-color:#FFFFFF;border-radius:.25rem;box-shadow:0 4px 8px rgba(0,0,0,0.03);white-space:nowrap;overflow-x:auto}.tabs::-webkit-scrollbar{width:1px;height:5px}.tabs::-webkit-scrollbar-thumb{background-color:#f6f9fc}.tabs::-webkit-scrollbar-track{background-color:#fff}.tabs li[class~="active"],.tabs li:hover{cursor:pointer;border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary);color:#5e72e4;color:var(--primary);background-color:#e4e9ee;margin-bottom:0;border-radius:0}.tabs li[class~="active"] a,.tabs li:hover a{color:#5e72e4;color:var(--primary)}.tabs li{font-size:.875rem;display:inline-block;padding:.875rem 0;border-bottom:.18751rem solid rgba(0,0,0,0);margin:0;transition:all .2s}.tabs li a{text-decoration:none;color:#404040;padding:.5rem .8rem}.tabs li:hover{border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary)}.cbi-tabmenu{color:white;padding:.5rem 1rem 0 1rem;white-space:nowrap;overflow-x:auto}.cbi-tabmenu::-webkit-scrollbar{width:1px;height:5px}.cbi-tabmenu::-webkit-scrollbar-thumb{background-color:#f6f9fc}.cbi-tabmenu::-webkit-scrollbar-track{background-color:#fff}.cbi-tabmenu li{background:#dce3e9;display:inline-block;font-size:.875rem;border-top-left-radius:.25rem;border-top-right-radius:.25rem;padding:.5rem 0;border-bottom:.18751rem solid rgba(0,0,0,0);margin:0 .2rem}.cbi-tabmenu li a{text-decoration:none;color:#404040;padding:.5rem .8rem}.cbi-tabmenu li:hover{cursor:pointer;border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary);color:#5e72e4;color:var(--primary);background-color:#e4e9ee;margin-bottom:0}.cbi-tabmenu li:hover a{color:#525f7f}.cbi-tabmenu li[class~="cbi-tab"]{border-bottom:.18751rem solid #5e72e4;border-bottom:.18751rem solid var(--primary);color:#5e72e4;color:var(--primary);background-color:#e4e9ee;margin-bottom:0}.cbi-tabmenu li[class~="cbi-tab"] a{color:#5e72e4;color:var(--primary)}.cbi-tab-descr{padding:.5rem 1.5rem}.cbi-section-node{padding:0}.cbi-section .cbi-section-remove:nth-of-type(2n),.container>.cbi-section .cbi-section-node:nth-of-type(2n){background-color:#f9f9f9}[data-tab-title]{overflow:hidden;height:0;opacity:0;margin:0;padding:0rem 0rem !important}[data-tab-title] p{margin-left:1rem;margin-bottom:1rem}[data-tab-active="true"]{overflow:visible;height:auto;opacity:1;transition:opacity .25s ease-in;margin:inherit !important}.cbi-section[id] .cbi-section-remove:nth-of-type(4n+3),.cbi-section[id] .cbi-section-node:nth-of-type(4n+4){background-color:#f9f9f9}.cbi-section-node-tabbed{margin-top:0;padding:0;border:0 solid #d4d4d4;border-radius:.25rem}.cbi-tabcontainer>.cbi-value:nth-of-type(2n){background-color:#f9f9f9}.cbi-value-field{display:table-cell}.cbi-value-description{line-height:1.25;display:table-cell}.cbi-value-description abbr{color:#32325d;color:var(--gray-dark)}.cbi-value-description{font-size:small;padding:.5rem;opacity:.5}.cbi-value-title{display:table-cell;float:left;width:23rem;padding-right:2rem;text-align:right;word-wrap:break-word}.cbi-value{display:inline-block;width:100%;padding:.35rem 1rem .2rem 1rem;line-height:2.4rem}.cbi-value:first-child{padding-top:1rem}.cbi-value:last-child{padding-bottom:1rem}.cbi-value ul{line-height:1.25}.cbi-value-field .cbi-dropdown,.cbi-value-field .cbi-input-select,.cbi-value input[type="text"],.cbi-value input[type="password"],.cbi-value textarea{min-width:18rem}.cbi-value input[type="password"]{border-bottom-right-radius:0;border-top-right-radius:0;font-size:.875rem;margin:.25rem 0 .25rem .1rem}.cbi-value input[type="password"]+.cbi-button-neutral{display:flex;align-items:center;justify-content:center;width:2.5rem !important;padding:.5rem 0;margin:.25rem 0;font-weight:normal;font-size:1.2rem;line-height:1.5rem;color:#fff;outline:0;background-color:#8898aa;box-shadow:none;border:1px solid #8898aa;border-radius:.25rem;border-top-left-radius:0;border-bottom-left-radius:0}#cbi-firewall-zone .cbi-input-select,#cbi-network-switch_vlan .cbi-input-select{min-width:11rem}#cbi-network-switch_vlan .cbi-input-text{max-width:3rem}.cbi-input-invalid{color:#f5365c !important;border-color:#f5365c !important}.cbi-section-error{font-weight:bold;line-height:1.42857143;margin:18px;padding:6px;border:thin solid #f5365c;border-radius:3px;background-color:#fce6e6}.cbi-section-error ul{margin:0 0 0 20px}.cbi-section-error ul li{font-weight:bold;color:#f5365c}.td[data-title]::before{font-weight:bold;display:none;padding:.25rem 0;content:attr(data-title) ":\20";text-align:left;white-space:nowrap}.tr.placeholder .td[data-title]::before{display:none}.tr[data-title]::before,.tr.cbi-section-table-titles.named::before{font-weight:bold;display:table-cell;align-self:center;flex:1 1 5%;padding:.25rem;content:attr(data-title) "\20";text-align:center;vertical-align:middle;white-space:normal;word-wrap:break-word}.cbi-rowstyle-1{background-color:#f9f9f9}.cbi-rowstyle-2{background-color:#eee}.cbi-rowstyle-2 .cbi-button-up,.cbi-rowstyle-2 .cbi-button-down,body:not(.Interfaces) .cbi-rowstyle-2:first-child{background-color:#fff !important}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{width:auto !important}.td.cbi-section-actions{text-align:right !important;vertical-align:middle}.td.cbi-section-actions>*{display:inline-flex}.td.cbi-section-actions>*>*,.td.cbi-section-actions>*>form>*{margin:0 5px;display:flex;align-items:center}.td.cbi-section-actions>*>form{display:inline-flex;margin:0}.cbi-checkbox{margin:0 .25rem}.cbi-dynlist{line-height:1.3;flex-direction:column;min-height:30px;cursor:text}.cbi-dynlist>.item{display:inline-flex;flex-wrap:nowrap;margin:.25rem 0;position:relative;max-width:25rem;pointer-events:none;color:#8898aa;outline:0}.cbi-dynlist>.item::after{content:"\00D7";pointer-events:auto;display:flex;align-items:center;justify-content:center;width:2.5rem !important;margin:0;font-weight:normal;font-size:1.2rem;line-height:1.5rem;color:#fff;border:1px solid #f5365c;border-radius:0 .25rem .25rem 0;outline:0;background-color:var(--red);background-image:none;box-shadow:none;box-sizing:border-box}.cbi-dynlist>.item>span{display:block;padding:.5rem .75rem;min-width:15.5rem;width:15.5rem;transition:box-shadow .15s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:break-word;font-size:.875rem;line-height:24px;color:#8898aa;border:1px solid #dee2e6;border-radius:.25rem 0 0 .25rem;outline:0;background-image:none;box-shadow:none;box-sizing:border-box}.cbi-dynlist>.add-item{display:inline-flex;align-items:center;width:100%;min-width:16rem;margin:.25rem 0;gap:0;flex-wrap:nowrap}.cbi-dynlist>.add-item input{display:block;padding:.5rem .75rem;box-sizing:border-box;min-width:15.5rem;width:15.5rem;transition:box-shadow .15s ease;white-space:nowrap;word-break:break-word;font-size:.875rem;line-height:1.5rem;color:#8898aa;border:1px solid #dee2e6;border-radius:.25rem 0 0 .25rem;border-right-width:0;outline:0;background-image:none;box-shadow:none}.cbi-dynlist>.add-item .cbi-button{display:flex;width:auto !important;padding-left:.8rem;padding-right:.8rem;margin-left:0;align-items:center;justify-content:center;font-size:.875rem;line-height:1.5rem;outline:0;background-image:none;background-color:var(--gray);box-shadow:none;color:var(--white);border-color:var(--gray);border-radius:.25rem;border-top-left-radius:0;border-bottom-left-radius:0}.cbi-dynlist>.add-item .cbi-button-add{width:2.5rem !important;padding:.5rem 0 !important;font-weight:normal;font-size:1.2rem;color:#fff;background-color:var(--primary);border:1px solid var(--primary)}.cbi-dynlist>.add-item:not([ondrop])>input{overflow:hidden;min-width:15.5rem;width:15.5rem;white-space:nowrap;text-overflow:ellipsis}.cbi-dynlist[name="sshkeys"]>.item{max-width:none}.cbi-dynlist>.cbi-dynlist>.add-item[ondrop]>input{min-width:13rem}.cbi-dynlist,.cbi-dropdown{position:relative;display:inline-flex;min-height:2.1875rem}.cbi-dropdown[placeholder*="select"]{max-width:25rem;height:auto;margin-top:-3px}.cbi-dropdown>ul{display:flex;overflow-x:hidden;overflow-y:auto;width:100%;margin:0 !important;padding:0;list-style:none;outline:0}.cbi-dropdown>ul.preview{display:none}.cbi-button-apply>ul.preview{display:none}.cbi-button-apply>ul.preview li{color:#fff}.cbi-button-apply>ul:first-child li{color:#fff}.cbi-dropdown>.open{flex-basis:15px}.cbi-dropdown>.open,.cbi-dropdown>.more{font-size:1rem;font-weight:900;line-height:1em;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;justify-content:center;padding:0 .25em;cursor:default;text-align:center;outline:0}.cbi-dropdown>.more,.cbi-dropdown>ul>li[placeholder]{font-weight:bold;display:none;color:#777;text-shadow:none}.cbi-dropdown>ul>li{display:none;overflow:hidden;align-items:center;align-self:center;flex-grow:1;flex-shrink:1;min-height:20px;padding:.125rem .25em;white-space:nowrap;text-overflow:ellipsis}.cbi-dropdown>ul>li .hide-open{display:initial}.cbi-dropdown>ul>li .hide-close{display:none}.cbi-dropdown>ul>li[display]:not([display="0"]){border-left:thin solid #ccc}.cbi-dropdown[empty]>ul{max-width:1px}.cbi-dropdown>ul>li>form{display:none;margin:0;padding:0;pointer-events:none}.cbi-dropdown>ul>li img{margin-right:.25em;vertical-align:middle}.cbi-dropdown>ul>li>form>input[type="checkbox"]{height:auto;margin:0}.cbi-dropdown>ul>li input[type="text"]{height:20px}.cbi-dropdown[open]>ul.dropdown{position:absolute;z-index:1100;display:block;width:auto;min-width:100%;max-width:none;max-height:200px !important;border:0 solid #918e8c;background:#ffffff;box-shadow:0 0 4px #918e8c;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;color:var(--main-menu-color);margin-left:0 !important;left:0}.cbi-dropdown[open]>ul.dropdown li{color:#000}.cbi-dropdown>ul>li[display],.cbi-dropdown[open]>ul.preview,.cbi-dropdown[open]>ul.dropdown>li,.cbi-dropdown[multiple]>ul>li>label,.cbi-dropdown[multiple][open]>ul.dropdown>li,.cbi-dropdown[multiple][more]>.more,.cbi-dropdown[multiple][empty]>.more{display:flex;align-items:center;flex-grow:1}.cbi-dropdown[empty]>ul>li,.cbi-dropdown[optional][open]>ul.dropdown>li[placeholder],.cbi-dropdown[multiple][open]>ul.dropdown>li>form{display:block}.cbi-dropdown[open]>ul.dropdown>li .hide-open{display:none}.cbi-dropdown[open]>ul.dropdown>li .hide-close{display:initial}.cbi-dropdown[open]>ul.dropdown>li{border-bottom:thin solid #ccc;padding:.5rem .8rem}.cbi-dropdown[open]>ul.dropdown>li label{margin-left:.5rem}.cbi-dropdown[open]>ul.dropdown>li[selected]{background:#e4e9ee}.cbi-dropdown[open]>ul.dropdown>li.focus{background:#e4e9ee;outline:none}.cbi-dropdown[open]>ul.dropdown>li:last-child{margin-bottom:0;border-bottom:0}.cbi-dropdown[open]>ul.dropdown>li[unselectable]{opacity:.7}.cbi-dropdown[open]>ul.dropdown>li>input.create-item-input:first-child:last-child{width:100%}.cbi-dropdown[disabled]{pointer-events:none;opacity:.6}.cbi-dropdown .zonebadge{width:100%}.cbi-dropdown[open] .zonebadge{width:auto}.cbi-progressbar{position:relative;display:flex;width:100%;font-size:.75rem;background-color:#e9ecef;border-radius:.5rem;height:1rem;overflow:hidden}.cbi-progressbar>div{display:block;position:absolute;height:100%;background-color:var(--bar-bg);border-radius:.5rem;transition:width .3s}.cbi-progressbar::after{content:attr(title);position:absolute;font-size:.75rem;color:var(--bs-heading-color);width:100%;height:100%;text-align:center;line-height:1rem;z-index:2}#modal_overlay{position:fixed;z-index:900;top:0;right:10000px;bottom:0;left:-10000px;overflow-y:scroll;transition:opacity .125s ease-in;opacity:0;background:rgba(0,0,0,0.7);-webkit-overflow-scrolling:touch}.modal{display:flex;align-items:center;flex-wrap:wrap;width:90%;min-width:270px;max-width:600px;min-height:32px;margin:5em auto;padding:1rem;border-radius:.25rem !important;background:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.modal>*{line-height:normal;flex-basis:100%;margin-bottom:.5em;max-width:100%}.modal>pre,.modal>textarea{font-size:1rem;font-size-adjust:.35;overflow:auto;margin-bottom:.5em;padding:8.5px;cursor:auto;white-space:pre-wrap;color:#eee;outline:0;background-color:#101010;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.modal>h4{display:block;flex-grow:1;max-width:none;padding:1rem;margin:-1rem -1rem 0 -1rem;font-size:1rem;box-shadow:0 4px 8px rgba(0,0,0,0.03);border-radius:.25rem 0 0 .25rem}.modal h5{margin-top:1rem;font-weight:600}.modal label>input[type="checkbox"]{top:0}.modal ul{margin-left:2.2em}.modal ul:not(.cbi-tabmenu){margin-top:1rem}.modal ul li{list-style-type:square;color:#808080}.modal p{word-break:break-word;margin-top:1rem}.modal .label{font-size:.6rem;font-weight:normal;padding:.1rem .3rem;padding-bottom:0;cursor:default;border-radius:0}.modal .label.warning{background-color:#f0ad4e !important}.modal .btn{padding:.45rem .8rem}.modal.cbi-modal{max-width:90%;max-height:none}body.modal-overlay-active{overflow:hidden;height:100vh}body.modal-overlay-active #modal_overlay{right:0;left:0;opacity:1}.spinning{position:relative;padding-left:32px !important}.spinning::before{position:absolute;top:0;bottom:0;left:.2em;width:32px;content:"";background:url(/luci-static/resources/icons/loading.gif) no-repeat center;background-size:16px}#view{border-radius:.25rem;overflow:hidden}#view>.spinning{position:fixed;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);padding:1rem;border-radius:.5rem;background:#ffffff;box-shadow:0 0 1rem 0 rgba(136,152,170,0.15)}.hidden{display:none}.left,.left::before{text-align:left !important}.right,.right::before{text-align:right !important}.center,.center::before{text-align:center !important}.top{align-self:flex-start !important;vertical-align:top !important}.bottom{align-self:flex-end !important;vertical-align:bottom !important}.inline{display:inline}.cbi-page-actions{padding:1rem;text-align:right;justify-content:flex-end}.cbi-page-actions>form[method="post"]{display:inline-block}.th[data-type="button"],.td[data-type="button"],.th[data-type="fvalue"],.td[data-type="fvalue"]{flex:1 1 2em;text-align:center}.ifacebadge{display:inline-flex;align-items:center;gap:.2rem;padding:.25rem .8rem;background:#eee;border-radius:4px}td>.ifacebadge,.td>.ifacebadge{font-size:.875rem;background-color:#f0f0f0}.ifacebadge>em,.ifacebadge>img{display:inline-block;margin:0 .75rem}.ifacebadge>img+img{margin:0 .2rem 0 0}.network-status-table{display:flex;flex-wrap:wrap}.network-status-table .ifacebox{flex-grow:1;border-radius:.25rem;overflow:hidden;margin:1rem}.network-status-table .ifacebox-body{display:flex;flex-direction:column;height:100%;gap:.5em}.network-status-table .ifacebox-body>span{flex:10 10 auto}.network-status-table .ifacebox-body>div{display:flex;flex-wrap:wrap;gap:.5rem;height:100%}.network-status-table .ifacebox-body .ifacebadge{align-items:center;flex:1 1 auto;min-width:220px;padding:.5em;background-color:#fff}.network-status-table .ifacebox-body .ifacebadge>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cbi-input-textarea{font-family:inherit;width:100%;font-size:.875rem;min-height:14rem;padding:.8rem;color:#8898aa;border-radius:.25rem;border:1px solid #dee2e6;min-width:16rem}#content_syslog{box-shadow:0 4px 8px rgba(0,0,0,0.03)}#syslog{font-size:small;font-family:'Google Sans';line-height:1.25;overflow-y:hidden;width:100%;min-height:15rem;padding:1rem;resize:none;color:#242424;border:0;border-radius:.25rem;background-color:#ffffff}#syslog:focus{outline:0}.uci-change-list{font-family:inherit;overflow:scroll;width:100%;display:flex;flex-direction:column;flex-wrap:wrap}.uci-change-list ins,.uci-change-legend-label ins{display:block;padding:2px;text-decoration:none;border:thin solid #0f0;background-color:#cfc}.uci-change-list del,.uci-change-legend-label del{font-style:normal;display:block;padding:2px;text-decoration:none;border:thin solid #f00;background-color:#fcc}.uci-change-list var,.uci-change-legend-label var{font-style:normal;display:block;padding:2px;text-decoration:none;border:thin solid #ccc;background-color:#eee}.uci-change-list var ins,.uci-change-list var del{font-style:normal;padding:0;white-space:pre;border:0}.uci-change-legend{padding:5px}.uci-change-legend-label{float:left;width:150px}.uci-change-legend-label>ins,.uci-change-legend-label>del,.uci-change-legend-label>var{display:block;float:left;width:10px;height:10px;margin-right:4px}.uci-change-legend-label var ins,.uci-change-legend-label var del{line-height:.4;border:0}.uci-change-list var,.uci-change-list del,.uci-change-list ins{padding:.5rem}.uci-dialog .cbi-section{padding:.5rem}.uci-dialog .cbi-section .uci-change-legend{line-height:15px;padding:10px 20px 0 20px}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label{padding:0;margin:0;position:relative;float:none;display:inline-block;width:25%}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>ins,.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>del{width:14px;height:14px}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var{position:relative;width:14px;height:14px}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var ins,.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var del{position:absolute;left:2px;top:2px;right:2px;bottom:2px}.uci-dialog .cbi-section .uci-change-list{overflow:auto}.uci-dialog .cbi-section .uci-change-list+.right .btn{color:#333}.uci-dialog .cbi-section .uci-change-list+.right .cbi-dropdown ul:not(.dropdown) li{color:#fff}.uci-dialog .cbi-section .uci-change-list+.right .cbi-button{padding:.45rem .8rem}#iwsvg,#iwsvg2,#bwsvg{border:thin solid #d4d4d4 !important}#iwsvg,[data-page="admin-status-realtime-bandwidth"] #bwsvg{border-top:0 !important}.ifacebox{line-height:1.25;display:inline-flex;overflow:hidden;flex-direction:column;border-radius:4px;min-width:100px;background-color:#f9f9f9}.ifacebox-head{padding:.25em;background:#eee}.ifacebox-head.active{background:#5e72e4;background:var(--primary)}.ifacebox-head.active *{color:#fff;color:var(--white)}.ifacebox-body{padding:.875rem 1rem;line-height:1.6em}.cbi-image-button{margin-left:.5rem}.zonebadge{display:inline-block;padding:.2rem .5rem;border-radius:4px}.zonebadge .ifacebadge{margin:.1rem .2rem;padding:.2rem .3rem;border:thin solid #6c6c6c}.zonebadge>input[type="text"]{min-width:10rem;margin-top:.3rem;padding:.16rem 1rem}.zonebadge>em,.zonebadge>strong{display:inline-block;margin:0 .2rem}.cbi-value-field .cbi-input-checkbox,.cbi-value-field .cbi-input-radio{margin-top:.1rem}.cbi-value-field>ul>li{display:flex}.cbi-value-field>ul>li>label{margin-top:.5rem}.cbi-value-field>ul>li .ifacebadge{margin-top:-0.5rem;margin-left:.4rem;background-color:#eee}.cbi-section-table-row>.cbi-value-field .cbi-dropdown{min-width:3rem}.cbi-section-create{display:inline-flex;align-items:center;padding:.5rem 1rem}.cbi-section-remove{padding:.5rem 1rem}div.cbi-value var,td.cbi-value-field var,.td.cbi-value-field var{font-style:italic;color:#0069d6}.cbi-optionals{padding:1rem 1rem 0 1rem;border-top:thin solid #ccc}.cbi-dropdown-container{position:relative}.cbi-tooltip-container,span[data-tooltip],span[data-tooltip] .label{cursor:help !important}.cbi-tooltip{position:absolute;z-index:1000;left:-1000px;padding:2px 5px;transition:opacity .25s ease-out;white-space:pre;pointer-events:none;opacity:0;border-radius:3px;background:#fff;box-shadow:0 0 2px #444}.cbi-tooltip-container:hover .cbi-tooltip{left:auto;transition:opacity .25s ease-in;opacity:1}.zonebadge .cbi-tooltip{margin:-1.5rem 0 0 -0.5rem;padding:.25rem;background:inherit}.zonebadge-empty{color:#404040;background:repeating-linear-gradient(45deg, rgba(204,204,204,0.5), rgba(204,204,204,0.5) 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}.zone-forwards{display:flex;min-width:10rem}.zone-forwards>*{flex:1 1 45%}.zone-forwards>span{flex-basis:10%;padding:0 .25rem;text-align:center}.zone-forwards .zone-src,.zone-forwards .zone-dest{display:flex;flex-direction:column}.label{font-size:.875rem;font-weight:bold;padding:.3rem .8rem;white-space:nowrap;text-decoration:none;text-transform:uppercase;color:#fff !important;border-radius:3px;background-color:#bfbfbf;text-shadow:none}label>input[type="checkbox"],label>input[type="radio"]{position:relative;top:.4rem;right:.2rem;margin:0;vertical-align:bottom}label[data-index][data-depends]{padding-right:2em}.showSide{display:none}.darkMask{position:fixed;z-index:99;display:none;width:100%;height:100%;content:"";top:0;background-color:rgba(0,0,0,0.56);transition:all .2s}.darkMask.active{display:block}#diag-rc-output>pre,#command-rc-output>pre,[data-page="admin-services-wol"] .notice code{font-size:1.2rem;font-size-adjust:.35;line-height:normal;display:block;overflow-y:hidden;width:100%;padding:8.5px;white-space:pre;color:#eee;background-color:#101010;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}[data-page="admin-network-diagnostics"] .table{box-shadow:none}[data-page="admin-network-diagnostics"] .cbi-section{padding:1rem;font-family:monospace;background:#fff !important}[data-page="admin-network-diagnostics"] textarea{background:transparent;border-radius:.25rem;font-family:'Google Sans' !important;color:#8898aa;border:1px solid #dee2e6;padding:.5rem}[data-page="admin-network-diagnostics"] .tr>.td{background-color:#fff !important;border-bottom:1px solid #dee2e6 !important}input[name="ping"],input[name="traceroute"],input[name="nslookup"]{width:80%}.node-status-overview>.main fieldset:nth-child(4) .td:nth-child(2),.node-status-processes>.main .table .tr .td:nth-child(3){white-space:normal}div[style*="display:grid;grid-template-columns:repeat"]{display:flex !important;justify-content:space-evenly !important;padding-bottom:1rem;flex-wrap:wrap;font-family:'Google Sans'}div[style*="display:grid;grid-template-columns:repeat"] .ifacebox{text-align:center;flex-basis:100px}div[style*="display:grid;grid-template-columns:repeat"] .ifacebox .ifacebox-body{font-size:.7rem;padding:.875rem}div[style*="display:grid;grid-template-columns:repeat"] .ifacebox .ifacebox-body .cbi-tooltip-container{font-size:inherit !important}@media screen and (max-width:484px){div[style*="display:grid;grid-template-columns:repeat"] .ifacebox{flex-basis:80px}div[style*="display:grid;grid-template-columns:repeat"] .ifacebox .ifacebox-body{padding:.875rem .5rem;font-size:.6rem}}[data-page="admin-system-attendedsysupgrade"] #view .cbi-button{margin-left:0 !important;margin-top:1rem !important}[data-page="admin-system-reboot"] p{padding-left:1.5rem}[data-page="admin-system-reboot"] p>span{position:relative;top:.1rem;left:1rem}[data-page="admin-system-reboot"] .cbi-button{background:#fb6340 !important;border-color:#fb6340 !important;margin-left:0 !important}[data-page="admin-system-reboot"] #view>h2:first-child+p{margin-bottom:1rem}[data-page="admin-system-poweroff"] .container h2+br+p{margin-bottom:1rem;padding-left:1.5rem}[data-page="admin-vpn-passwall"] h4{background:transparent}[data-page="admin-system-filetransfer"] #cbi-upload{margin-top:0}[data-page="admin-system-filetransfer"] .cbi-section-table{box-shadow:0 4px 8px rgba(0,0,0,0.03)}#cbi-samba [data-tab="template"] .cbi-value-field{display:block}#cbi-samba [data-tab="template"] .cbi-value-title{width:auto;padding-bottom:.6rem}[data-page="admin-system-admin"] .cbi-map h2,[data-page="admin-system-admin-password"] .cbi-map h2,[data-page="admin-system-admin"] .cbi-map .cbi-map-descr,[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr{margin-left:0;color:#32325d;color:var(--gray-dark)}[data-page="admin-system-admin-sshkeys"] .cbi-dynlist{margin-left:1rem}[data-page="admin-system-opkg"] h2{margin-left:0;color:#32325d;color:var(--gray-dark)}[data-page="admin-system-opkg"] input[name="filter_i18n"]{top:2px;vertical-align:text-top}.controls{margin:.5em 1rem 1em 1rem !important}.controls>*>.btn:not([aria-label$="page"]){flex-grow:initial !important;margin-top:.25rem}.controls>#pager>.btn[aria-label$="page"]{font-size:1.4rem;font-weight:bold}.controls>*>label{margin-bottom:.2rem}[data-page="admin-system-opkg"] div.btn{line-height:3;display:inline;padding:.3rem .6rem}[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),[data-page="admin-system-opkg"] #maincontent>.container{margin-top:1rem;padding-top:.01rem}[data-page="admin-system-opkg"] #maincontent>.container{margin:0 1.25rem 1rem 1.25rem;margin-bottom:1rem}.td.version,.td.size{white-space:normal !important;word-break:break-word}.cbi-tabmenu+.cbi-section{margin-top:0}[data-page="admin-system-system"] .control-group{margin-top:.5rem}[data-page="admin-system-system"] .cbi-dynlist{margin:.25rem 0}[data-page="admin-system-startup"] [data-tab-title] p{margin-left:0;margin-bottom:0;position:relative}[data-page="admin-system-startup"] textarea{line-height:1.25;overflow-y:auto;width:100%;min-height:15rem;padding:1rem;resize:none;color:#8898aa;border-radius:.25rem;border:1px solid #dee2e6}[data-page="admin-system-startup"] textarea:focus-visible{outline:none;box-shadow:none;border:1px solid var(--primary)}[data-page="admin-system-crontab"] #view p{margin-bottom:1rem}[data-page="admin-system-crontab"] #view p:last-child{margin-bottom:0}[data-page="admin-system-crontab"] #view p textarea{line-height:1.25;overflow-y:hidden;width:100%;min-height:15rem;padding:1rem;resize:none;background-color:transparent;background:var(--white);outline:none;color:#8898aa;border-radius:.25rem;border:1px solid #dee2e6}[data-page="admin-system-attendedsysupgrade-configuration"] .cbi-map .cbi-map-descr{padding-bottom:0}[data-page="admin-system-flash"] .cbi-value{padding:0 1rem}[data-page="admin-system-flash"] .cbi-section .cbi-section{margin-top:0}[data-page="admin-system-flash"] .cbi-map-tabbed{border-radius:.25rem}[data-page="admin-system-flash"] .cbi-section-node{padding-top:0;padding-bottom:.5rem}[data-page="admin-system-flash"] legend{font-size:1.2rem;width:100%;display:block;border-bottom:1px solid rgba(0,0,0,0.05);line-height:1.5;margin-bottom:0;letter-spacing:.1rem;color:#32325d;font-weight:bold;padding:1rem 0 1rem 1rem}[data-page="admin-system-flash"] .cbi-section-descr{font-weight:600;padding:1rem 0 1rem 1rem;color:#525f7f}[data-page="admin-system-flash"] .cbi-page-actions{padding:0rem 1rem 1rem 0rem}[data-page="admin-system-flash"] .modal label>input[type="checkbox"]{top:-0.25rem}[data-page="admin-system-flash"] .modal .btn{white-space:normal !important}[data-page="admin-system-flash"] .modal label>input[type="checkbox"]{vertical-align:text-top;top:auto}#cbi-wireless>#wifi_assoclist_table>.tr{box-shadow:inset 1px -1px 0 #ddd,inset -1px -1px 0 #ddd}#cbi-wireless>#wifi_assoclist_table>.tr.placeholder>.td{right:33px;bottom:33px;left:33px;border-top:thin solid #ddd !important}#cbi-wireless>#wifi_assoclist_table>.tr.table-titles{box-shadow:inset 1px 0 0 #ddd,inset -1px 0 0 #ddd}#cbi-wireless>#wifi_assoclist_table>.tr.table-titles>.th{border-bottom:thin solid #ddd;box-shadow:0 -1px 0 0 #ddd}#wifi_assoclist_table>.tr>.td[data-title="RX Rate / TX Rate"]{width:23rem}[data-page="admin-network-dhcp"] .cbi-value{padding:0}[data-page="admin-network-dhcp"] [data-tab-active="true"]{padding:1rem 1rem !important}#iptables{margin:0}.Firewall form{margin:2rem 2rem 0 0;padding:0;box-shadow:none}#cbi-firewall-redirect table *,#cbi-network-switch_vlan table *,#cbi-firewall-zone table *{font-size:small}#cbi-firewall-redirect table input[type="text"],#cbi-network-switch_vlan table input[type="text"],#cbi-firewall-zone table input[type="text"]{width:5rem}#cbi-firewall-redirect table select,#cbi-network-switch_vlan table select,#cbi-firewall-zone table select{min-width:3.5rem}#cbi-network-switch_vlan .th,#cbi-network-switch_vlan .td{flex-basis:12%}#cbi-firewall-zone .table,#cbi-network-switch_vlan .table{display:block}#cbi-firewall-zone .td,#cbi-network-switch_vlan .td{width:100%}[data-page="admin-network-firewall-custom"] #view p,[data-page="admin-status-routes"] #view p{padding:0 1.5rem;margin-bottom:1rem}[data-page="admin-network-firewall-custom"] #view p textarea,[data-page="admin-status-routes"] #view p textarea{padding:1rem;border-radius:.25rem}[data-page="admin-network-firewall-custom"] #view>h3,[data-page="admin-status-routes"] #view>h3{border-radius:.25rem .25rem 0 0}#applyreboot-container{margin:2rem}#applyreboot-section{line-height:300%;margin:2rem}.OpenVPN a{line-height:initial !important}.commandbox{width:24% !important;margin:10px 0 0 10px !important;padding:.5rem 1rem;border-bottom:thin solid #ccc;background:#eee;box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.commandbox h3{line-height:normal !important;overflow:hidden;margin:6px 0 !important;white-space:nowrap;text-overflow:ellipsis}.commandbox div{left:auto !important}.commandbox code{position:absolute;overflow:hidden;max-width:60%;margin-left:4px;padding:2px 3px;white-space:nowrap;text-overflow:ellipsis}.commandbox code:hover{overflow-y:auto;max-height:50px;white-space:normal}.commandbox p:first-of-type{margin-top:-6px}.commandbox p:nth-of-type(2){margin-top:2px}[data-page^="admin-system-commands"] .panel-title,[data-page^="command-cfg"] .mobile-hide,[data-page^="command-cfg"] .showSide{display:none}#command-rc-output .alert-message{line-height:1.42857143;position:absolute;top:40px;right:32px;max-width:40%;margin:0;animation:anim-fade-in 1.5s forwards;word-break:break-word;opacity:0}@keyframes anim-fade-in{100%{opacity:1}}input[type="checkbox"]{appearance:none !important;-webkit-appearance:none !important;border:1px solid var(--primary);width:16px !important;height:16px !important;padding:0;cursor:pointer;transition:all .2s;margin:.75rem 0 0 0}input[type="checkbox"]:checked{border:1px solid #5e72e4;border:1px solid var(--primary);background-image:url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important;background-color:#5e72e4;background-color:var(--primary);background-size:70%;background-repeat:no-repeat;background-position:center}.fb-container .cbi-button{height:auto !important}#cbi-usb_printer-printer em{display:block;padding:1rem;text-align:center}pre.command-output{padding:1.5rem}[data-page="admin-nlbw-display"] .cbi-section[data-tab="export"]{padding:1.5rem !important}[data-page="admin-nlbw-backup"] form{padding-left:1.5rem}[data-page="admin-status-iptables"] .right{margin-bottom:0 !important}[data-page="admin-services-ttyd"] .container{display:flex;flex-direction:column}[data-page="admin-services-ttyd"] #view{flex:1}[data-page="admin-services-ttyd"] #view iframe{height:100%}[data-page="admin-system-fileassistant"] .fb-container .panel-title{padding:.5rem .75rem !important}[data-page="admin-system-fileassistant"] .cbi-section.fb-container{padding:.5rem}[data-page="admin-system-fileassistant"] .fb-container .panel-container{border-bottom-color:#dee2e6}[data-page^="admin-services-openclash"] .cbi-tabmenu>li{border-right:none !important;margin:0 .4rem 0 0 !important}[data-page^="admin-services-openclash"] .cbi-tabmenu>li:last-child{margin-right:0 !important}[data-page^="admin-services-openclash"] #tab-content .dom{padding:0 1rem 1rem 1rem}[data-page^="admin-services-openclash"] .cbi-input-file{padding:.2813rem;box-sizing:content-box;width:15rem !important}[data-page^="admin-services-openclash"] [id="container.openclash.config.debug"] fieldset{border:none !important;padding:1rem !important}[data-page^="admin-services-openclash"] #diag-rc-output>pre,[data-page^="admin-services-openclash"] #dns-rc-output>pre{font-size:.875rem;color:#8898aa;border:1px solid #dee2e6;background-color:transparent;border-radius:.25rem;font-family:'Google Sans' !important;box-shadow:none}[data-page^="admin-services-openclash"] #debug-rc-output>textarea{font-family:'Google Sans' !important}[data-page^="admin-services-openclash"] .CodeMirror{font-size:inherit;font-family:'Google Sans' !important}[data-page^="admin-services-openclash"] .cbi-button-up,[data-page^="admin-services-openclash"] .cbi-button-down{padding:.8rem 1.5rem;background-color:#f1f1f1;font-size:0}[data-page^="admin-services-openclash"] select#CORE_VERSION,[data-page^="admin-services-openclash"] select#RELEASE_BRANCH{width:auto}@media all and (-ms-high-contrast:none){.main>.main-left>.nav>.slide>.menu::before{top:30.25%}.main>.main-left>.nav>li:last-child::before{top:20%}.showSide::before{top:-12px}}@media screen and (max-width:1600px){header>.fill>.container>#logo{margin:0 2.5rem 0 .5rem}.main-left{width:calc(0% + 13rem)}.btn:not(button),.label{padding:.5rem .75rem}.cbi-value-title{width:15rem;padding-right:.6rem}.cbi-value-field .cbi-dropdown,.cbi-value-field .cbi-input-select,.cbi-value input[type="text"],.cbi-value input[type="password"],.cbi-value textarea{min-width:18rem}#cbi-firewall-zone .cbi-input-select{min-width:9rem}.cbi-input-textarea{font-size:small}.node-admin-status>.main fieldset li>a{padding:.3rem .6rem}}@media screen and (max-width:1366px){header>.fill>.container{cursor:default}.main-left{width:calc(0% + 13rem)}.tabs>li>a,.cbi-tabmenu>li>a{padding:.2rem .8rem}.panel-title{font-size:1.1rem;padding-bottom:1rem}table{font-size:.875rem !important;width:100% !important}.table .cbi-input-text{width:100%}.cbi-value-field .cbi-dropdown,.cbi-value-field .cbi-input-select,.cbi-value input[type="text"],.cbi-value input[type="password"]{min-width:16rem}#cbi-firewall-zone .cbi-input-select{min-width:5.5rem}.main>.main-left>.nav>li,.main>.main-left>.nav>li>a,.main .main-left .nav>li>a:first-child,.main>.main-left>.nav>.slide>.menu,.main>.main-left>.nav>li>[data-title="Log_out"]{font-size:.9rem}.main>.main-left>.nav>.slide>.slide-menu>li>a{font-size:.875rem}#modal_overlay{top:0rem}[data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table){display:block}[data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table),[data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table),[data-page="admin-network-hosts"] .table,[data-page="admin-network-routes"] .table{overflow-y:visible}.commandbox{width:32% !important}.btn:not(button),.cbi-button{font-size:.875rem}}@media screen and (max-width:1152px){header>.fill>.container>#logo{display:none}header>.fill>.container>.brand{position:relative}html,.main{overflow-y:visible}.main>.loading>span{top:25%}.main-left{width:calc(0% + 13rem)}body:not(.logged-in) .showSide{visibility:hidden;width:0;margin:0}.node-main-login>.main .cbi-value-title{text-align:left}.cbi-value-title{width:12rem;padding-right:1rem}.cbi-value-field .cbi-dropdown,.cbi-value-field .cbi-input-select,.cbi-value input[type="text"]{width:16rem;min-width:16rem}.cbi-value input[name^="pw"],.cbi-value input[data-update="change"]:nth-child(2){width:13rem !important;min-width:13rem}#diag-rc-output>pre,#command-rc-output>pre,[data-page="admin-services-wol"] .notice code{font-size:1rem}.table{display:block}.Interfaces .table{overflow-x:hidden}#packages.table{display:grid}.tr{display:flex;flex-direction:row;flex-wrap:wrap}.Overview .table[width="100%"]>.tr{flex-wrap:nowrap}.tr.placeholder{border-bottom:thin solid #ddd}.tr.placeholder>.td,#cbi-firewall .tr>.td,#cbi-network .tr:nth-child(2)>.td,.cbi-section #wifi_assoclist_table .tr>.td{border-top:0}.th,.td{display:inline-block;align-self:flex-start;flex:2 2 10%;text-overflow:ellipsis;word-wrap:break-word}.td select,.td input[type="text"]{width:100%;word-wrap:normal}.td [data-dynlist]>input,.td input.cbi-input-password{width:calc(100% - 1.5rem)}.td[data-type="button"],.td[data-type="fvalue"]{flex:1 1 12.5%;text-align:left}.th.cbi-value-field,.td.cbi-value-field,.th.cbi-section-table-cell,.td.cbi-section-table-cell{flex-basis:auto;padding-top:1rem}.cbi-section-table-row{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.td.cbi-value-field,.cbi-section-table-cell{display:inline-block;flex:10 10 auto;flex-basis:50%;text-align:center}.td.cbi-section-actions{vertical-align:bottom}.tr.table-titles,.tr.cbi-section-table-titles,.tr.cbi-section-table-descr{display:none}.tr[data-title]::before,.tr.cbi-section-table-titles.named::before{font-size:.9rem;display:block;flex:1 1 100%;border-bottom:thin solid rgba(0,0,0,0.26);background:#e9ecef}.td[data-title],[data-page^="admin-status-realtime"] .td[id]{text-align:left}.td[data-title]::before{display:block}.cbi-button+.cbi-button{margin-left:0}.td.cbi-section-actions>*>*,.td.cbi-section-actions>*>form>*{margin:2.1px 3px}.Firewall form{position:static !important;margin:0 0 2rem 0;padding:2rem;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.Firewall form input{width:100% !important;margin:0;margin-top:1rem}.Firewall .center,.Firewall .center::before{text-align:left !important}.commandbox{width:100% !important;margin-left:0 !important}.btn:not(button),.cbi-button{font-size:.875rem}}@media screen and (max-width:768px){body{font-size:.875rem}.cbi-progressbar::after{font-size:.6rem}.main-left{position:fixed;z-index:100;width:0}.main-left.active{width:13rem}.main-right{width:100%}.main-right.active{overflow-y:hidden}.darkMask.active{display:block}.showSide{padding:.1rem;position:relative;z-index:99;display:inline-block !important}.showSide::before{font-family:'argon' !important;font-style:normal !important;font-weight:normal !important;font-variant:normal !important;text-transform:none !important;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e20e";font-size:1.7rem}header>.fill>.container>.flex1>.brand{display:inline-block}.main>.main-left>.nav>.slide>.slide-menu>li>a{font-size:.875rem}}@media screen and (max-width:600px){.mobile-hide{display:none}#maincontent>.container{margin:0 1rem 1rem 1rem}.cbi-value-title{text-align:left}.cbi-dynlist p{padding:.5rem 1rem}body{overflow-x:hidden}.node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field{width:16rem}.node-main-login footer{display:none}.tabs::-webkit-scrollbar,.cbi-tabmenu::-webkit-scrollbar{width:0px;height:0px}.cbi-value-field,.cbi-value-description{display:block !important;padding-left:0 !important;padding-right:0 !important}[data-page="admin-system-admin-password"] .cbi-value-field{display:table-cell !important}.modal.cbi-modal{max-width:100%;max-height:none}.modal{display:flex;align-items:center;flex-wrap:wrap;width:100%;min-width:270px;max-width:600px;min-height:32px;margin:5em auto;padding:1em;border-radius:3px !important;background:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,0.16),0 0 2px 0 rgba(0,0,0,0.12)}.cbi-dropdown[open]>ul.dropdown{margin-bottom:1rem}.login-page .login-container footer{display:none}}@media screen and (min-width:600px){::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar,::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-thumb{background:var(--primary);border-radius:10px}::-webkit-scrollbar-thumb:hover{background:var(--primary)}::-webkit-scrollbar-thumb:active{background:var(--primary)}}@media screen and (max-width:480px){.mobile-hide{display:none}.login-page .login-container{margin-left:0rem !important;width:100%}.login-page .login-container .login-form .form-login .input-group::before{color:#525461}.login-page .login-container .login-form .form-login .input-group input{color:#525461;border-bottom:white 1px solid;border-bottom:var(--white) 1px solid;border-radius:0}}/*# sourceMappingURL=cascade.css.map */ \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/css/dark.css b/luci-theme-argon/htdocs/luci-static/argon/css/dark.css new file mode 100644 index 000000000..df4b0f1ba --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/css/dark.css @@ -0,0 +1 @@ +body{background:#1e1e1e;color:#cccccc}.login-page .login-container .login-form{background-color:#1e1e1e;-webkit-backdrop-filter:blur(var(--blur-radius-dark));backdrop-filter:blur(var(--blur-radius-dark));background-color:rgba(0, 0, 0, var(--blur-opacity-dark))}.login-page .login-container .login-form .brand{color:#adb5bd}.login-page .login-container .login-form .form-login .input-group::before{color:#adb5bd}.login-page .login-container .login-form .form-login .input-group input{background-color:transparent !important;color:#adb5bd;border-bottom:#adb5bd 1px solid !important;border-radius:0 !important;border-top:none !important;border-left:none !important;border-right:none !important;box-shadow:none}.login-page .login-container .login-form .form-login .cbi-button-apply{background-color:#483d8b !important;background-color:var(--dark-primary) !important}.login-page .login-container .login-form .form-login .cbi-button-apply:hover,.login-page .login-container .login-form .form-login .cbi-button-apply:focus{opacity:.9}header::after{background-color:#1e1e1e !important}.main .main-left{background-color:#333333 !important;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.15)}.main .main-left .sidenav-header .brand{color:#cccccc}.main .main-left .nav .slide .slide-menu .active a{color:#cccccc}.main .main-left .nav .slide .slide-menu .active a::after{background-color:#cccccc !important}.main .main-left .nav .slide .slide-menu .active::after{background-color:var(--dark-primary) !important}.main .main-left .nav .slide .slide-menu li a{color:#cccccc}.main .main-left .nav .slide .slide-menu li a:hover{background:none !important}.main .main-left .nav .slide .slide-menu li::after{background-color:var(--dark-primary) !important}.main .main-left .nav .slide .menu.active{background-color:#483d8b !important;background-color:var(--dark-primary) !important;color:#ffffff !important}.main .main-left .nav .slide .menu.active a::after{background-color:#ffffff !important}.main .main-left .nav li a{color:#cccccc !important}.main .main-left .nav li a:hover{background-color:#483d8b !important;background-color:var(--dark-primary) !important;color:#ffffff !important}.main .main-left::-webkit-scrollbar-thumb{background-color:#252526 !important}.main .main-left::-webkit-scrollbar-track{background-color:#333}.main .main-right{background-color:#1e1e1e}h2{color:#ccc;background:#333333}h3{color:#ccc;border-bottom:0;background:#333333}h4{color:#8C6900}abbr{color:var(--dark-primary) !important}a:link,a:visited,a:active{color:#a5b2ff}input:-webkit-autofill{background-color:#3c3c3c !important}#channel_graph{background-color:transparent !important}.cbi-value-field .cbi-input-apply,.cbi-button-apply,.cbi-button-edit{color:#fff !important;background-color:#483d8b !important;background-color:var(--dark-primary) !important;border-color:#483d8b !important;border-color:var(--dark-primary) !important}.cbi-section em{color:#ccc}header.bg-primary{background-color:#1e1e1e !important}.cbi-map-descr{color:#ccc}.cbi-section{background:none;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}.panel-title{color:#ccc;background-color:#333333}div>table>tbody>tr:nth-of-type(2n),div>.table>.tr:nth-of-type(2n){background-color:#252526}table>tbody>tr>td,table>tfoot>tr>td,table>thead>tr>td{color:#cccccc}fieldset>table>tbody>tr:nth-of-type(2n){background-color:#252526}table>tbody>tr>td,table>tfoot>tr>td,table>thead>tr>td{border-top:1px solid #252526}#swaptotal>div>div,#swapfree>div>div,#memfree>div>div,#membuff>div>div,#conns>div>div,#memtotal>div>div{background-color:var(--dark-primary) !important}#swaptotal>div>div>div>small,#swapfree>div>div>div>small,#memfree>div>div>div>small,#membuff>div>div>div>small,#conns>div>div>div>small,#memtotal>div>div>div>small{color:#ccc !important}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last{line-height:1.8em}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"]{border:1px solid #999999 !important;background-color:transparent !important}.node-system-packages>.main .cbi-section-node:first-child .cbi-value-last div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] div{background-color:#ba8b00 !important}table>tbody>tr>th,table>tfoot>tr>th,table>thead>tr>th{background-color:#252526;border-bottom:black 1px solid !important}tr>td,tr>th,.tr>.td,.tr>.th,.cbi-section-table-row::before,#cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2){border-top:0}.cbi-rowstyle-2{background-color:#1e1e1e}.cbi-rowstyle-1{background-color:#252526}.cbi-rowstyle-2 .cbi-button-up,.cbi-rowstyle-2 .cbi-button-down,body:not(.Interfaces) .cbi-rowstyle-2:first-child{background-color:#666 !important}.cbi-section>h3:first-child,.panel-title,h3{color:#ccc}h4{background-color:#1e1e1f}.cbi-progressbar{background:#282a2c}.cbi-progressbar div{background-color:var(--dark-primary) !important}.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell{background-color:#1e1e1f}.cbi-button{color:#ffffff !important;background-color:#483d8b;background-color:var(--dark-primary)}.cbi-section-node{background:none}abbr{color:#5e72e4}div>table>tbody>tr:nth-of-type(2n),div>.table>.tbody>.tr:nth-of-type(2n){background-color:#252526}#content_syslog{box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}#syslog{color:#ccc;background-color:#1e1e1e}#iwsvg,#iwsvg2,#bwsvg{overflow:hidden;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35);background-color:#1e1e1e !important}.tabs{background-color:#252526}.tabs li[class~="active"],.tabs li:hover{cursor:pointer;color:#ccc !important}.tabs li[class~="active"] a,.tabs li:hover a{color:#ccc !important}.tabs>li[class~="active"]>a{color:#ccc}.tabs>li[class~="active"],.tabs>li:hover{border-bottom:.18751rem solid #483d8b;border-bottom:.18751rem solid var(--dark-primary);color:var(--dark-primary) !important;background-color:#181819}.cbi-tabmenu>li>a,.tabs>li>a{color:#ccc}.cbi-tabmenu>li>a:hover,.tabs>li>a:hover{color:#ccc}.cbi-tabmenu>li{background:#2d2d2d}.cbi-tabmenu li[class~="cbi-tab"] a{color:#ccc}.cbi-tabmenu>li:hover{color:#ccc;background:#2d2d2d;border-bottom:.18751rem solid var(--dark-primary) !important}.cbi-tabmenu>li[class~="cbi-tab"]{background-color:#181819;border-bottom:.18751rem solid var(--dark-primary) !important}.cbi-tabcontainer>.cbi-value:nth-of-type(2n){background-color:#252526}.cbi-value-title{color:#ccc}select,input{color:#ccc;background-color:transparent !important;border:1px solid #252526;box-shadow:none}select:not([multiple="multiple"]):focus,input:focus{border-color:#483d8b !important;border-color:var(--dark-primary) !important;outline:0}select:not([multiple="multiple"]):focus,input:not(.cbi-button):focus,.cbi-dropdown:focus{border-color:#5e72e4;border-color:var(--dark-primary) !important}select{background-color:#1e1e1e !important}#cbi-dropbear h2,#cbi-dropbear .cbi-map-descr,#cbi-dropbear .cbi-map-descr abbr,#cbi-rc h2,#cbi-rc .cbi-map-descr,#cbi-distfeedconf h2,#cbi-distfeedconf .cbi-map-descr,#cbi-customfeedconf h2,#cbi-customfeedconf .cbi-map-descr,#cbi-download h2,#cbi-filelist h2{color:#ccc !important}.cbi-value-field>ul>li .ifacebadge{background-color:#3c3c3c}.cbi-section-descr{color:#ccc}.cbi-input-textarea{background-color:#1e1e1e;color:#ccc;border:1px solid #3c3c3c !important}textarea:focus-visible{border:1px solid var(--dark-primary)}.cbi-section-remove:nth-of-type(2n),.cbi-section-node:nth-of-type(2n){background-color:#1e1e1e}.node-system-packages>.main table tr td:nth-last-child(1){color:#ccc}.cbi-tooltip{background-color:var(--primary);color:#fff}.ifacebox{background-color:transparent !important;border:1px solid #1e1e1e}.ifacebox-head{color:#ccc;background:#666}.ifacebox-body{background-color:#333}.zonebadge strong{color:#333}.zonebadge>.ifacebadge{background-color:#3c3c3c}div.cbi-value var,td.cbi-value-field var{color:#5e72e4}#diag-rc-output>pre{color:#ccc;background-color:#1e1e1e}.node-services-vssr .block{background-color:#3c3c3c !important;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}.node-services-vssr .block h4{color:#ccc !important}.node-services-vssr .status-bar{color:#ccc;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35);background-color:#1e1e1e}.node-services-vssr .cbi-section-table-row{color:#ccc;background-color:#3c3c3c !important;box-shadow:0 0 5px 0 rgba(0,0,0,0.35)}.node-services-vssr .cbi-section-table-row.fast{background:#483d8b !important;background:var(--dark-primary) !important;color:#fff}.node-services-vssr .ssr-button{color:#ccc}.node-services-vssr .incon:nth-child(2){border-right:#1e1e1e 1px solid}#xhr_poll_status>.label.success{color:#ccc !important;background-color:darkolivegreen !important}.notice{background-color:#483d8b !important;background-color:var(--dark-primary) !important}.cbi-input-find,.cbi-input-save,.cbi-button-add,.cbi-button-save,.cbi-button-find,.cbi-input-reload,.cbi-button-reload{color:#fff !important;background:darkolivegreen !important;border-color:darkolivegreen !important}.cbi-button-reset,.cbi-input-remove{color:#fff !important;background-color:darkorange !important;border-color:darkorange !important}.cbi-page-actions .cbi-button-apply,.cbi-section-actions .cbi-button-edit,.cbi-button-edit.important,.cbi-button-apply.important,.cbi-button-reload.important,.cbi-button-action.important{border:1px #483d8b solid !important;border:1px var(--dark-primary) solid !important}.btn[value="Dismiss"],.cbi-button[value="Terminate"],.cbi-button[value="Reset"],.cbi-button[value="Disabled"],.cbi-button[onclick^="iface_reconnect"],.cbi-button[onclick="handleReset(event)"],.cbi-button-neutral[value="Disable"]{color:#fff;border:thin solid darkorange !important;background-color:darkorange !important}fieldset[id^="cbi-apply-"]{background-color:#333333}#detail-bubble>div{border:1px solid #ccc;background:#252525}.ifacebox-head.active{background-color:var(--dark-primary) !important}header .fill .status span[data-style="active"]{color:#ccc !important;background-color:darkolivegreen !important}#cbi-wireless .td,#cbi-network .tr:first-child>.td,.table[width="100%"]>.tr:first-child>.td,[data-page="admin-network-diagnostics"] .tr>.td,.tr.table-titles>.th,.tr.cbi-section-table-titles>.th{background-color:#252526;border-bottom:black 1px solid !important}.network-status-table .ifacebox-body .ifacebadge{background-color:#252526;border-bottom:0;box-shadow:none}td>.ifacebadge,.td>.ifacebadge{color:#fff;background-color:#483d8b;background-color:var(--dark-primary);border:0}.alert,.alert-message{background-color:#333}.alert-message.warning{background-color:#986400 !important}.alert.error,.alert-message.error{background-color:#784f00}.alert h4,.alert-message h4{background-color:#784f00;color:#ffbf00}.alert-message [class="btn"]{background-color:#777777;color:#ccc}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>ins{border-color:#00ad00;background-color:#688668}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>del{border-color:#c60000;background-color:#896565}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var{background-color:#333;border-color:#666}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var ins{background-color:#688668}.uci-dialog .cbi-section .uci-change-legend .uci-change-legend-label>var del{background-color:#896565}.uci-dialog .cbi-section .uci-change-list>var{background-color:#333;border-color:#666}.uci-dialog .cbi-section .uci-change-list>var del{background-color:#896565}.uci-dialog .cbi-section .uci-change-list>var ins{background-color:#688668}.uci-dialog .cbi-section .uci-change-list>ins{border-color:#00ad00;background-color:#688668}.uci-dialog .cbi-section .uci-change-list>del{border-color:#c60000;background-color:#896565}.uci-dialog .cbi-section .uci-change-list+.right .btn{color:#ccc}.uci-dialog .cbi-section .uci-change-list+.right .cbi-button{border:1px solid #3c3c3c !important}.btn.danger,.cbi-section-remove>.cbi-button,.cbi-button-remove,.cbi-button-reset,.cbi-button-negative,.cbi-button[value="Stop"],.cbi-button[value="Kill"],.cbi-button[onclick="reboot(this)"],.cbi-button-neutral[value="Restart"]{border:thin solid darkorange !important;background-color:darkorange !important}.cbi-section,.cbi-section-error,#iptables,.Firewall form,#cbi-network>.cbi-section-node,#cbi-wireless>.cbi-section-node,#cbi-wireless>#wifi_assoclist_table,[data-tab-title],[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear),[data-page="admin-system-opkg"] #maincontent>.container{background:#1e1e1e !important;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}div[style="width:100%;height:300px;border:1px solid #000;background:#fff"]{background:transparent !important}[data-page="admin-system-admin"] .cbi-map h2,[data-page="admin-system-admin-password"] .cbi-map h2,[data-page="admin-system-admin"] .cbi-map .cbi-map-descr,[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr{color:#ccc}[data-page="admin-system-flash"] .modal label>input[type="checkbox"]{top:-0.35rem}[data-page="admin-system-flash"] .modal .btn{white-space:normal !important;background-color:darkseagreen}[data-page="admin-system-flash"] .modal .alert-message{background-color:transparent !important}[data-page="admin-system-flash"] .modal .danger{border:thin solid darkorange !important;background-color:darkorange !important}.cbi-value input[type="password"]+.cbi-button-neutral{background-color:#483d8b !important;background-color:var(--dark-primary) !important;border-color:var(--dark-primary) !important}.btn,button,select,input,.cbi-dropdown{border:1px solid #3c3c3c !important}.cbi-dropdown .preview{color:#ccc}.cbi-section-table-row{background-color:#1e1e1e !important}.modal{background-color:#1e1e1e}.cbi-button-positive{color:#fff !important;background-color:darkolivegreen !important}[data-page="admin-system-flash"] legend{color:#ccc}.logout:before{color:#adb5bd !important}.cbi-dropdown[open]{border-color:#483d8b !important;border-color:var(--dark-primary) !important}.cbi-dropdown[open]>ul.dropdown{background:#252526 !important;color:#ffffff !important;box-shadow:none;border:1px solid #3c3c3c !important}.cbi-dropdown[open]>ul.dropdown li{color:#ffffff;border-bottom:1px solid #3c3c3c !important}.cbi-dropdown[open]>ul.dropdown>li[selected]{background-color:#483d8b !important;background-color:var(--dark-primary) !important;border-bottom:1px solid #3c3c3c !important}.cbi-dropdown[open]>ul.dropdown>li.focus{background:#483d8b;background:var(--dark-primary);outline:none}.ifacebadge{background-color:#333333}.cbi-dynlist>.item>span{border:1px solid #3c3c3c !important}.cbi-page-actions .cbi-button-apply,.cbi-section-actions .cbi-button-edit,.cbi-button-edit,.cbi-button-apply,.cbi-button-reload,.cbi-button-action,.cbi-button[value="Submit"],.cbi-button[value="Upload"],.cbi-button[value$="Apply"],.cbi-button[onclick="addKey(event)"]{background:#483d8b !important;background:var(--dark-primary) !important;border-color:var(--dark-primary) !important}.btn.primary,.cbi-page-actions .cbi-button-save,.cbi-page-actions .cbi-button-apply+.cbi-button-save,.cbi-button-add,.cbi-button-save,.cbi-button-positive,.cbi-button-link,.cbi-button[value="Enable"],.cbi-button[value="Scan"],.cbi-button[value^="Back"],.cbi-button-neutral[onclick="handleConfig(event)"]{background:#483d8b;background:var(--dark-primary)}[data-page="admin-system-opkg"] h2{color:#ccc !important}[data-page="admin-system-startup"] textarea{color:#ccc;background-color:transparent}[data-page="admin-system-startup"] textarea:focus-visible{border:1px solid var(--dark-primary)}[data-page="admin-network-firewall-custom"] #view p textarea,[data-page="admin-status-routes"] #view p textarea,[data-page="admin-system-crontab"] #view p textarea{color:#ccc;background-color:transparent}#view>.spinning{background:#333333 !important;box-shadow:0 4px 8px rgba(0,0,0,0.03) !important}@media screen and (min-width:600px){::-webkit-scrollbar-thumb{background:var(--dark-primary)}::-webkit-scrollbar-thumb:hover{background:var(--dark-primary)}::-webkit-scrollbar-thumb:active{background:var(--dark-primary)}}@media screen and (max-width:480px){.node-status-iptables>.main div>.cbi-map>form{background-color:#1e1e1e;box-shadow:0 0 .5rem 0 rgba(0,0,0,0.35)}}[data-page="admin-dashboard"] .main-right>#maincontent .Dashboard{color:#ccc !important}[data-page="admin-dashboard"] .main-right>#maincontent .Dashboard h3{color:#ccc}[data-page="admin-dashboard"] .main-right>#maincontent .Dashboard hr{border-top:1px solid #fff}[data-page="admin-dashboard"] .main-right>#maincontent .Dashboard .dashboard-bg{background-color:#333333}[data-page="admin-dashboard"] .main-right>#maincontent .router-status-info .title img,[data-page="admin-dashboard"] .main-right>#maincontent .lan-info .title img,[data-page="admin-dashboard"] .main-right>#maincontent .wifi-info .title img{filter:invert(90%)}[data-page="admin-dashboard"] .main-right>#maincontent tr{border-top:thin solid #4d4d4d}[data-page="admin-dashboard"] .main-right>#maincontent tr:last-child{border-bottom:thin solid #4d4d4d}[data-page="admin-system-fileassistant"] .fb-container .panel-container{border-bottom-color:#3c3c3c !important}[data-page="admin-system-fileassistant"] .fb-container td[class$="-icon"]::before{filter:invert(.7)}[data-page^="admin-services-openclash"] .cbi-tabmenu::-webkit-scrollbar-thumb{background-color:#5b5b5b}[data-page^="admin-services-openclash"] .cbi-tabmenu::-webkit-scrollbar-track{background-color:rgba(60,60,60,0.75)}[data-page^="admin-services-openclash"] #tab{border-color:#3c3c3c}[data-page^="admin-services-openclash"] #diag-rc-output>pre,[data-page^="admin-services-openclash"] #dns-rc-output>pre{color:#ccc;border:1px solid #3c3c3c !important;background-color:#1e1e1e}[data-page^="admin-services-openclash"] img[src$="arrow-clockwise-light.svg"],[data-page^="admin-services-openclash"] img[src$="wrench-light.svg"],[data-page^="admin-services-openclash"] img[src$="eye-light.svg"]{filter:invert(.9)}[data-page="admin-network-diagnostics"] .cbi-section{background:#252526 !important}[data-page="admin-network-diagnostics"] textarea{background:transparent;border-radius:.25rem;color:#ccc;border:1px solid #3c3c3c !important}[data-page="admin-network-diagnostics"] .tr>.td{background-color:#252526 !important}[data-page="admin-network-network"] .ifacebox-head[style*="--zone-color-rgb: 144, 240, 144"]{background-color:#497e49 !important;color:#ccc !important}[data-page="admin-network-network"] .ifacebox-head[style*="--zone-color-rgb: 240, 144, 144;"]{background-color:#9c4f4f !important;color:#ccc !important}[data-page="admin-network-network"] .ifacebox-head[style*="--zone-color-rgb: 238, 238, 238;"]{background-color:#666 !important}[data-page="admin-network-firewall-rules"] #cbi-firewall-rule .zonebadge[style*="--zone-color-rgb:240, 144, 144;"]{--zone-color-rgb:156, 79, 79 !important}[data-page="admin-network-firewall-rules"] #cbi-firewall-rule .zonebadge[style*="--zone-color-rgb:240, 144, 144;"] strong{color:#ccc !important}[data-page="admin-network-firewall-rules"] #cbi-firewall-rule .zonebadge[style*="--zone-color-rgb:238, 238, 238;"]{--zone-color-rgb:112, 112, 112 !important}[data-page="admin-network-firewall-rules"] #cbi-firewall-rule .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] em{color:#ccc !important}[data-page="admin-network-firewall-rules"] #cbi-firewall-rule>table>.cbi-section-table-row[data-title]::before{background-color:#252526 !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:240, 144, 144;"],[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:240, 144, 144;"]{--zone-color-rgb:156, 79, 79 !important;color:#ccc !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:240, 144, 144;"] strong,[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:240, 144, 144;"] strong{color:#ccc !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:144, 240, 144;"],[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:144, 240, 144;"]{--zone-color-rgb:73, 126, 73 !important;color:#ccc !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:144, 240, 144;"] strong,[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:144, 240, 144;"] strong{color:#ccc !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"],[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"]{--zone-color-rgb:112, 112, 112 !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] strong,[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] strong{color:#ccc !important}[data-page="admin-network-network"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] strong+span,[data-page="admin-network-firewall-rules"] .cbi-dropdown .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] strong+span{color:#ccc !important}.btn{background-color:#707070;color:#fff} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/favicon.png b/luci-theme-argon/htdocs/luci-static/argon/favicon.png new file mode 100644 index 000000000..7c3f3acb1 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/favicon.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.eot b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.eot new file mode 100644 index 000000000..efce636a8 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.eot differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.svg b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.svg new file mode 100644 index 000000000..c555b7594 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.svg @@ -0,0 +1,1191 @@ + + + + +Created by FontForge 20090622 at Tue Jul 23 03:29:07 2019 + By deploy user +TypoGraphica ©Sharkshock Productions 2015. All Rights Reserved + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.ttf b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.ttf new file mode 100644 index 000000000..e11f89a0f Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.ttf differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.woff b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.woff new file mode 100644 index 000000000..fef38ca00 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/TypoGraphica.woff differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.eot b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.eot new file mode 100644 index 000000000..e28f6db55 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.eot differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.svg b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.svg new file mode 100644 index 000000000..1e12b5f6a --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.svg @@ -0,0 +1,38 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.ttf b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.ttf new file mode 100644 index 000000000..3d062dcf2 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.ttf differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.woff b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.woff new file mode 100644 index 000000000..ef1e9c2c4 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/fonts/argon.woff differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/android-icon-192x192.png b/luci-theme-argon/htdocs/luci-static/argon/icon/android-icon-192x192.png new file mode 100644 index 000000000..7bfe4e5fd Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/android-icon-192x192.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-144x144.png b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-144x144.png new file mode 100644 index 000000000..8d523df8b Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-144x144.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-60x60.png b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-60x60.png new file mode 100644 index 000000000..4c80656de Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-60x60.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-72x72.png b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-72x72.png new file mode 100644 index 000000000..07753022e Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/apple-icon-72x72.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/arrow.svg b/luci-theme-argon/htdocs/luci-static/argon/icon/arrow.svg new file mode 100644 index 000000000..a20e7987d --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/icon/arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/browserconfig.xml b/luci-theme-argon/htdocs/luci-static/argon/icon/browserconfig.xml new file mode 100644 index 000000000..c55414822 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/icon/browserconfig.xml @@ -0,0 +1,2 @@ + +#ffffff \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-16x16.png b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-16x16.png new file mode 100644 index 000000000..88bf32978 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-16x16.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-32x32.png b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-32x32.png new file mode 100644 index 000000000..d524df3ea Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-32x32.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-96x96.png b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-96x96.png new file mode 100644 index 000000000..6c8e88740 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon-96x96.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/favicon.png b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon.png new file mode 100644 index 000000000..7c3f3acb1 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/favicon.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/manifest.json b/luci-theme-argon/htdocs/luci-static/argon/icon/manifest.json new file mode 100644 index 000000000..d4b84f159 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/icon/manifest.json @@ -0,0 +1,41 @@ +{ + "name": "Openwrt", + "icons": [ + { + "src": "\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ] +} \ No newline at end of file diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/ms-icon-144x144.png b/luci-theme-argon/htdocs/luci-static/argon/icon/ms-icon-144x144.png new file mode 100644 index 000000000..8d523df8b Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/icon/ms-icon-144x144.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/icon/spinner.svg b/luci-theme-argon/htdocs/luci-static/argon/icon/spinner.svg new file mode 100644 index 000000000..caef4b7ac --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/icon/spinner.svg @@ -0,0 +1,3 @@ + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/argon.svg b/luci-theme-argon/htdocs/luci-static/argon/img/argon.svg new file mode 100644 index 000000000..0c8aea07d --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/img/argon.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/bg1.jpg b/luci-theme-argon/htdocs/luci-static/argon/img/bg1.jpg new file mode 100644 index 000000000..26a52a535 Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/img/bg1.jpg differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/blank.png b/luci-theme-argon/htdocs/luci-static/argon/img/blank.png new file mode 100644 index 000000000..9f4100e6e Binary files /dev/null and b/luci-theme-argon/htdocs/luci-static/argon/img/blank.png differ diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/volume_high.svg b/luci-theme-argon/htdocs/luci-static/argon/img/volume_high.svg new file mode 100644 index 000000000..ef84c3c6e --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/img/volume_high.svg @@ -0,0 +1,3 @@ + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/img/volume_off.svg b/luci-theme-argon/htdocs/luci-static/argon/img/volume_off.svg new file mode 100644 index 000000000..5467d4d57 --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/img/volume_off.svg @@ -0,0 +1,3 @@ + + + diff --git a/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js b/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js new file mode 100644 index 000000000..b0614034a --- /dev/null +++ b/luci-theme-argon/htdocs/luci-static/argon/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0= 3) { + for (var i = 0; i < 3 && node; i++) { + node = node.children[L.env.dispatchpath[i]]; + url = url + (url ? '/' : '') + L.env.dispatchpath[i]; + } + + if (node) + this.renderTabMenu(node, url); + } + + document.querySelector('a.showSide') + .addEventListener('click', ui.createHandlerFn(this, 'handleSidebarToggle')); + document.querySelector('.darkMask') + .addEventListener('click', ui.createHandlerFn(this, 'handleSidebarToggle')); + }, + + handleMenuExpand: function (ev) { + var a = ev.target, slide = a.parentNode, slide_menu = a.nextElementSibling; + var collapse = false; + + document.querySelectorAll('.main .main-left .nav > li >ul.active').forEach(function (ul) { + $(ul).stop(true).slideUp("fast", function () { + ul.classList.remove('active'); + ul.previousElementSibling.classList.remove('active'); + }); + if (!collapse && ul === slide_menu) { + collapse = true; + } + + }); + + if (!slide_menu) + return; + + + if (!collapse) { + $(slide).find(".slide-menu").slideDown("fast",function(){ + slide_menu.classList.add('active'); + a.classList.add('active'); + }); + a.blur(); + } + ev.preventDefault(); + ev.stopPropagation(); + }, + + renderMainMenu: function (tree, url, level) { + var l = (level || 0) + 1, + ul = E('ul', { 'class': level ? 'slide-menu' : 'nav' }), + children = ui.menu.getChildren(tree); + + if (children.length == 0 || l > 2) + return E([]); + + for (var i = 0; i < children.length; i++) { + var isActive = ((L.env.dispatchpath[l] == children[i].name) && (L.env.dispatchpath[l - 1] == tree.name)), + submenu = this.renderMainMenu(children[i], url + '/' + children[i].name, l), + hasChildren = submenu.children.length, + slideClass = hasChildren ? 'slide' : null, + menuClass = hasChildren ? 'menu' : 'food'; + if (isActive) { + ul.classList.add('active'); + slideClass += " active"; + menuClass += " active"; + } + + ul.appendChild(E('li', { 'class': slideClass }, [ + E('a', { + 'href': L.url(url, children[i].name), + 'click': (l == 1) ? ui.createHandlerFn(this, 'handleMenuExpand') : null, + 'class': menuClass, + 'data-title': hasChildren ? children[i].title.replace(" ", "_") : children[i].title.replace(" ", "_"), + }, [_(children[i].title)]), + submenu + ])); + } + + if (l == 1) { + document.querySelector('#mainmenu').appendChild(ul); + document.querySelector('#mainmenu').style.display = ''; + + } + return ul; + }, + + renderTabMenu: function (tree, url, level) { + var container = document.querySelector('#tabmenu'), + l = (level || 0) + 1, + ul = E('ul', { 'class': 'tabs' }), + children = ui.menu.getChildren(tree), + activeNode = null; + + if (children.length == 0) + return E([]); + + for (var i = 0; i < children.length; i++) { + var isActive = (L.env.dispatchpath[l + 2] == children[i].name), + activeClass = isActive ? ' active' : '', + className = 'tabmenu-item-%s %s'.format(children[i].name, activeClass); + + ul.appendChild(E('li', { 'class': className }, [ + E('a', { 'href': L.url(url, children[i].name) }, [_(children[i].title)]) + ])); + + if (isActive) + activeNode = children[i]; + } + + container.appendChild(ul); + container.style.display = ''; + + if (activeNode) + container.appendChild(this.renderTabMenu(activeNode, url + '/' + activeNode.name, l)); + + return ul; + }, + + handleSidebarToggle: function (ev) { + var showside = document.querySelector('a.showSide'), + sidebar = document.querySelector('#mainmenu'), + darkmask = document.querySelector('.darkMask'), + scrollbar = document.querySelector('.main-right'); + + if (showside.classList.contains('active')) { + showside.classList.remove('active'); + sidebar.classList.remove('active'); + scrollbar.classList.remove('active'); + darkmask.classList.remove('active'); + } + else { + showside.classList.add('active'); + sidebar.classList.add('active'); + scrollbar.classList.add('active'); + darkmask.classList.add('active'); + } + } +}); diff --git a/luci-theme-argon/less/cascade.less b/luci-theme-argon/less/cascade.less new file mode 100644 index 000000000..f80683639 --- /dev/null +++ b/luci-theme-argon/less/cascade.less @@ -0,0 +1,4616 @@ +// out: ../htdocs/luci-static/argon/css/cascade.css, compress: true , sourceMap: false +/** + * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template + * + * luci-theme-argon + * Copyright 2023 Jerrykuku + * + * Have a bug? Please create an issue here on GitHub! + * https://github.com/jerrykuku/luci-theme-argon/issues + * + * luci-theme-material: + * Copyright 2015 Lutty Yang + * https://github.com/LuttyYang/luci-theme-material/ + * + * Agron Theme + * https://demos.creative-tim.com/argon-dashboard/index.html + * + * Login background + * https://unsplash.com/ + * Font generate by Icomoon + * + * Licensed to the public under the Apache License 2.0 + */ + +/* + * Include base and custom css + */ +@import url("pure-min.less"); +@import url("fonts.less"); + + +:root { + --primary: #5e72e4; + --dark-primary: #483d8b; + --main-color: #09c; + --header-bg: #09c; + --header-color: #fff; + --bar-bg: #5e72e4; + --menu-bg-color: #fff; + --menu-color: #5f6368; + --menu-color-hover: #202124; + --main-menu-color: #202124; + --submenu-bg-hover: #d4d4d4; + --submenu-bg-hover-active: #09c; + --blue: #5e72e4; + --indigo: #5603ad; + --purple: #8965e0; + --pink: #f3a4b5; + --red: #f5365c; + --orange: #fb6340; + --yellow: #ffd600; + --green: #2dce89; + --teal: #11cdef; + --cyan: #2bffc6; + --white: #fff; + --gray: #8898aa; + --gray-dark: #32325d; + --light: #ced4da; + --lighter: #e9ecef; + --secondary: #f7fafc; + --success: #2dce89; + --info: #11cdef; + --warning: #fb6340; + --danger: #f5365c; + --light: #adb5bd; + --dark: #212529; + --default: #172b4d; + --white: #fff; + --neutral: #fff; + --darker: black; + --background-color: #f4f5f7; + --login-form-bg-color: rgba(244, 245, 247, 0.8); + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --blur-radius: 10px; + --blur-opacity: 0.5; + --blur-radius-dark: 10px; + --blur-opacity-dark: 0.5; + --font-family-sans-serif: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; + --font-family-normal: Open Sans, PingFangSC-Regular, Microsoft Yahei, WenQuanYi Micro Hei, "Helvetica Neue", Helvetica, Hiragino Sans GB, sans-serif; +} + +* { + margin: 0px; + padding: 0px; + box-sizing: border-box; +} + +html, +body { + margin: 0px; + padding: 0px; + height: 100%; + font-size: 16px; + font-family: "Google Sans", "Microsoft Yahei", "WenQuanYi Micro Hei", "sans-serif", "Helvetica Neue", "Helvetica", "Hiragino Sans GB"; + font-family: var(--font-family-sans-serif); +} + +html { + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + font-size: 0.875rem; + background-color: #f4f5f7; + background-color: var(--background-color); + color: #32325d; + color: var(--gray-dark); + -webkit-tap-highlight-color: transparent; +} + + +textarea { + padding: 0.2rem; + + &:focus-visible { + outline: none; + border: 1px solid var(--primary); + } +} + +::selection { + background-color: #5e72e4; + background-color: var(--primary); + color: #ffffff; + color: var(--white); +} + +::placeholder { + color: var(--lighter); +} + +a:link, +a:visited, +a:active { + color: #5e72e4; + color: var(--primary); + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +li { + list-style-type: none; +} + + +.table { + position: relative; + display: table; +} + +.tr { + display: table-row; +} + +.thead { + display: table-header-group; +} + +.tbody { + display: table-row-group; +} + +.tfoot { + display: table-footer-group; +} + +.td, +.th { + line-height: normal; + display: table-cell; + padding: .5em; + text-align: center; + vertical-align: middle; +} + +.th { + font-weight: bold; + white-space: nowrap; +} + +.tr.placeholder { + height: 4em; +} + +.tr.placeholder > .td { + line-height: 3; + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 0.4rem 0 !important; + text-align: center !important; + background: inherit; +} + +.td[width="33%"] { + padding: 1.1em 1.5rem; +} + +.table[width="33%"], +.th[width="33%"], +.td[width="33%"] { + width: 33%; +} + +.table[width="100%"], +.th[width="100%"], +.td[width="100%"] { + width: 100%; +} + +.col-1 { + flex: 1 1 30px !important; +} + +.col-2 { + flex: 2 2 60px !important; +} + +.col-3 { + flex: 3 3 90px !important; +} + +.col-4 { + flex: 4 4 120px !important; +} + +.col-5 { + flex: 5 5 150px !important; +} + +.col-6 { + flex: 6 6 180px !important; +} + +.col-7 { + flex: 7 7 210px !important; +} + +.col-8 { + flex: 8 8 240px !important; +} + +.col-9 { + flex: 9 9 270px !important; +} + +.col-10 { + flex: 10 10 300px !important; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; + +} + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: inherit; + font-weight: normal; + line-height: 1.1 !important; + color: inherit; +} + + +select { + padding: .36rem .8rem; + color: #555; + border: thin solid #ccc; + background-color: #fff; + background-image: none; +} + +.btn, +button, +select, +input, +.cbi-dropdown { + line-height: 1.5em; + padding: .5rem .75rem; + + color: #8898aa; + border: 1px solid #dee2e6; + border-radius: .25rem; + outline: 0; + background-image: none; + box-shadow: none; + transition: box-shadow .15s ease; +} + +select, +.cbi-dropdown { + width: inherit; + cursor: default; +} + +select:not([multiple="multiple"]):focus, +input:not(.cbi-button):focus, +.cbi-dropdown:focus { + border-color: #5e72e4; + border-color: var(--primary); + box-shadow: 0 3px 9px rgba(50, 50, 9, 0), 3px 4px 8px rgba(94, 114, 228, .1); +} + +.cbi-dropdown, +select[multiple="multiple"] { + height: auto; +} + +pre { + overflow: auto; +} + +code { + padding: 1px 3px; + color: #101010; + border-radius: 2px; + background: #ddd; + font-family: inherit; + font-size: inherit; +} + +abbr { + cursor: help; + text-decoration: underline; + color: #5e72e4; + color: var(--primary); +} + +hr { + margin: 1rem 0; + opacity: .1; + border-color: #eee; +} + + +ul { + line-height: normal; +} + +li { + list-style-type: none; +} + +h1 { + font-size: 2rem; + padding-bottom: 10px; + border-bottom: thin solid #eee; +} + +h2 { + margin: 0 0 1rem 0; + font-size: 1.25rem; + letter-spacing: 0.1rem; + padding: 1rem 1.25rem; + color: #32325d; + border-radius: .25rem; + background: #fff; + box-shadow: 0 4px 8px rgba(0, 0, 0, .03); + font-weight: bold; + +} + +h3 { + font-size: 1.1rem; + line-height: 1; + display: block; + width: 100%; + margin: 0; + margin-bottom: 0; + padding: 0.8755rem 1.25rem; + color: #32325d; + color: var(--gray-dark); + border-radius: .25rem; + background: #fff; + font-weight: bold; +} + +h4 { + margin: 0; + padding: 0.75rem 1.25rem; + font-size: 0.875rem; + font-weight: 600; + color: #525f7f; + font-weight: bold; + + em { + padding: 0 0.5rem; + } + +} + +h5 { + font-size: 1rem; + margin: 2rem 0 0 0; + padding-bottom: 10px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.nowrap:not(.td) { + white-space: nowrap; +} + +[disabled="disabled"] { + pointer-events: none; +} + + +/*********************** +* +* Login Page +* +***************************/ + +.login-page { + height: 100%; + + .video { + position: absolute; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + background-color: #000; + background-color: var(--darker); + overflow: hidden; + + video { + width: 100%; + height: auto; + } + } + + .volume-control { + position: fixed; + right: 1rem; + top: 1rem; + width: 1.5rem; + height: 1.5rem; + z-index: 5000; + cursor: pointer; + background-size: contain; + background-image: url(../img/volume_high.svg); + + &.mute { + background-image: url(../img/volume_off.svg); + } + } + + .main-bg { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + background-image: url(../img/blank.png); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + transition: all 0.5s; + } + + .login-container { + height: 100%; + margin-left: 4.5rem; + position: absolute; + top: 0px; + display: flex; + flex-direction: column; + -webkit-box-pack: center; + justify-content: center; + align-items: flex-start; + min-height: 100%; + z-index: 2; + width: 420px; + box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 35px -5px; + margin-left: 5%; + background: transparent; + + .login-form { + display: flex; + flex-direction: column; + -webkit-box-align: center; + align-items: center; + position: absolute; + top: 0px; + width: 100%; + min-height: 100%; + max-width: 420px; + background-color: #fff; + background-color: var(--white); + -webkit-backdrop-filter: blur(var(--blur-radius)); + backdrop-filter: blur(var(--blur-radius)); + background-color: rgba(244, 245, 247, var(--blur-opacity)); + + .brand { + display: flex; + -webkit-box-align: center; + align-items: center; + margin: 50px auto 100px 50px; + color: #525461; + color: var(--default); + justify-content: center; + + .icon { + width: 50px; + height: auto; + margin-right: 25px; + } + + .brand-text { + font-size: 1.25rem; + font-weight: 700; + font-family: "TypoGraphica"; + + } + + &:hover { + text-decoration: none; + } + } + + .form-login { + width: 100%; + padding: 20px 50px; + box-sizing: border-box; + + .errorbox { + text-align: center; + color: #fb6340; + color: var(--warning); + padding-bottom: 2rem; + } + + .input-group { + margin-bottom: 1.25rem; + position: relative; + + &::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + color: #525461; + color: var(--default); + font-size: 1.5rem; + position: absolute; + z-index: 100; + left: 10px; + top: 10px; + } + + .border { + position: absolute; + width: 100%; + height: 1px; + bottom: 0; + border-bottom: 1px #5e72e4 solid; + border-bottom: 1px var(--primary) solid; + transform: scaleX(0); + transition: transform 0.3s; + } + + input { + font-size: 1rem; + line-height: 1.5em; + display: block; + width: 100%; + padding: .5rem .75rem 0.5rem 3rem; + margin: 0.825rem 0; + box-sizing: border-box; + transition: all .3s cubic-bezier(.68, -.55, .265, 1.55); + color: #525461; + color: var(--default); + border: 0; + border-radius: 0; + border-bottom: 1px solid #fff; + border-bottom: 1px solid var(--white); + background-color: transparent; + background-clip: padding-box; + box-shadow: 0 3px 2px rgba(233, 236, 239, .05); + outline: none; + + &:focus + .border { + transform: scaleX(1); + } + } + + .cbi-input-password { + margin-bottom: 2rem; + position: relative; + } + } + + .user-icon::before { + content: "\e971"; + } + + .pass-icon::before { + content: "\e910"; + + } + } + + .cbi-button-apply { + width: 100% !important; + box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 50px 0px; + font-weight: 600; + font-size: 15px; + color: #fff; + color: var(--white); + text-align: center; + width: 100%; + cursor: pointer; + min-height: 50px; + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + border-radius: 6px; + outline: none; + border-width: initial; + border-style: none; + border-color: initial; + border-image: initial; + padding: 10px 0px; + margin: 30px 0px 100px; + transition: all 0.3s !important; + letter-spacing: 0.8rem; + + &:hover, + :focus { + opacity: 0.9; + } + } + } + + footer { + box-sizing: border-box; + width: 100%; + text-align: center; + line-height: 1.6rem; + display: flex; + justify-content: space-evenly; + margin-top: auto; + padding: 0px 0px 30px; + z-index: 10; + color: #525461; + color: var(--default); + position: absolute; + bottom: 0; + + .ftc { + position: absolute; + bottom: 30px; + width: 100%; + } + + .luci-link { + display: block; + } + } + } +} + + +header, +.main { + width: 100%; +} + + +footer { + font-size: .875rem; + overflow: hidden; + padding: 1rem; + text-align: right; + white-space: nowrap; + color: #aaa; +} + +footer > a { + text-decoration: none; + color: #aaa; +} + +small { + font-size: 90%; + line-height: 1.42857143; + white-space: normal; +} + +/*********************** +* +* Layout +* +***************************/ + +.main { + position: relative; + top: 0; + bottom: 0; + overflow-y: auto; + height: 100%; + display: flex; + flex-direction: row; + +} + +.main-left { + flex-shrink: 0; + width: 15rem; + height: 100%; + background-color: var(--menu-bg-color); + box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px; + overflow-x: auto; + z-index: 100; + + + .sidenav-header { + padding: 1.5rem .5rem; + text-align: center; + + .brand { + display: block; + font-size: 1.8rem; + color: #5e72e4; + color: var(--primary); + font-family: "TypoGraphica"; + text-decoration: none; + text-align: center; + cursor: default; + margin: 0 2rem; + + .logo { + max-width: 100%; + height: auto; + } + } + } + + &::-webkit-scrollbar { + width: 5px; + height: 1px; + } + + &::-webkit-scrollbar-thumb { + background-color: #f6f9fc + } + + &::-webkit-scrollbar-track { + background-color: #fff; + } +} + +.main-right { + flex-grow: 1; + height: 100%; + transition: all 0.2s; + overflow-x: hidden; + overflow-y: auto; + display: flex; + flex-direction: column; + + & > #maincontent { + position: relative; + z-index: 50; + flex: 1; + display: flex; + flex-direction: column; + + & > .container { + margin: 0 1.25rem 1rem 1.25rem; + flex-grow: 1; + } + + .Dashboard { + color: var(--gray-dark) !important; + + h3 { + color: var(--gray-dark); + } + + p { + margin-bottom: 3px; + margin-top: 3px; + } + + hr { + border-top: 1px solid rgba(0, 0, 0, 1); + } + + .dashboard-bg { + background-color: #fff; + } + + .settings-info { + padding-top: 1em; + padding-bottom: 1em; + + p span:nth-child(2) { + max-height: 18.5px; + top: 4px; + } + + .label { + font-size: .7rem; + padding: 0.2rem 0.6rem; + } + } + } + } +} + + +header { + color: #fff; + color: var(--header-color); + padding: 0; + position: relative; + + &.bg-primary { + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + } + + &::after { + content: ""; + position: absolute; + height: 2rem; + width: 100%; + background-color: #5e72e4 !important; + background-color: var(--primary) !important; + } + + .fill { + padding: 0.8rem 0; + border-bottom: 0px solid rgba(255, 255, 255, .08) !important; + display: flex; + + .container { + height: 2rem; + padding: 0 1.25rem; + display: flex; + align-items: center; + width: 100%; + + .flex1 { + flex: 1; + + .showSide { + display: none; + color: #fff; + font-size: 1.4rem; + + &:hover { + text-decoration: none; + } + } + + .brand { + font-size: 1.5rem; + color: #fff; + font-family: "TypoGraphica"; + text-decoration: none; + padding-left: 1rem; + cursor: default; + vertical-align: text-bottom; + display: none; + } + } + + + .pull-right { + float: right; + margin-top: 0rem; + display: flex; + } + } + + .status { + span { + display: inline-block; + font-size: 0.875rem; + font-weight: bold; + padding: 0.3rem 0.8rem; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + text-shadow: none; + border-radius: 4px; + cursor: pointer; + transition: all 0.3s; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + margin: 0 0.25rem; + + &:last-child { + margin-right: 0; + } + } + + span[data-indicator="poll-status"] { + color: #fff; + + } + + span[data-style="active"] { + + background-color: var(--green); + + } + + span[data-style="inactive"] { + color: #ffffff !important; + background-color: #32325d; + + } + } + } +} + + +#xhr_poll_status { + display: flex; + margin-left: 0.5rem; + + * { + color: #fff; + } +} + +div[style="width:100%;height:300px;border:1px solid #000;background:#fff"] { + border: 0 !important; +} + +.danger { + background-color: #ff7d60 !important; +} + +.warning { + background-color: #f0e68c !important; +} + +.success { + background-color: #5cb85c !important; +} + +.notice { + background-color: #11cdef !important; + color: #fff; +} + +.error { + color: #f00; +} + +.alert, +.alert-message { + font-weight: bold; + margin-bottom: 1.25rem; + margin-left: 1.25rem; + margin-right: 1.25rem; + padding: 1rem 1.25rem; + border: 0; + border-radius: 0.25rem !important; + background-color: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + text-shadow: none; + + &.error { + background-color: #ffd600; + } + + h4 { + padding: 0.25rem 0rem; + border-radius: 4px; + background-color: #ffd600; + } + + .btn { + height: auto; + } +} + +.alert-message > h4 { + font-size: 110%; + font-weight: bold; +} + +.alert-message > * { + margin: .5rem 0; +} + +.alert-message .btn { + padding: .3rem .6rem; +} + +.container .alert, +.container .alert-message { + margin-left: 0; + margin-right: 0; + margin-top: 0rem; +} + + +/* + * Main Menu + */ + +.main { + .main-left { + transition: all 0.2s; + + .nav { + margin-top: 0.5rem; + + > li > a:first-child { + display: block; + margin: 0.1rem .5rem 0.1rem .5rem; + padding: .675rem 0 .675rem 2.5rem; + border-radius: .25rem; + text-decoration: none; + cursor: default; + font-size: 1rem; + transition: all 0.2s; + position: relative; + + &.active { + color: #fff; + background: #5e72e4; + background: var(--primary); + + &::before { + color: #fff !important; + } + + &::after { + transform: rotate(90deg); + color: #fff !important; + } + } + + &:hover { + cursor: pointer; + color: #fff; + background: #5e72e4; + background: var(--primary); + + &::before { + color: #fff !important; + } + } + + &::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; + content: "\e915"; + color: #5e72e4; + color: var(--primary); + } + } + + li { + padding: 0.5rem 1rem; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + padding: 0; + + a { + display: block; + color: #5f6368; + color: var(--menu-color); + } + + &.slide { + padding: 0; + + ul { + display: none; + overflow: hidden; + } + + &:hover { + background: none; + } + + .slide-menu { + margin: 0 0.5rem 0 2.5rem; + padding: 0rem 0.5rem; + + &.active { + display: block; + + } + + + li { + position: relative; + border-radius: 0.25rem; + margin: 0; + background: none; + list-style: none; + + a { + text-decoration: none; + padding: 0.5rem 0rem; + } + + &::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 0; + height: 2px; + background-color: #5e72e4; + background-color: var(--primary); + transition: all 0.2s; + } + + &:hover { + background: none; + + &::after { + width: 100%; + } + } + + } + + .active { + background: none; + + color: var(--menu-color); + + a { + color: var(--menu-color); + } + + &::after { + content: ""; + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 2px; + background-color: #5e72e4; + background-color: var(--primary); + transition: all 0.2s; + } + + &:hover { + + background: none; + + &::after { + width: 100%; + } + } + } + } + + } + + + .menu { + display: block; + margin: 0.1rem .5rem 0.1rem .5rem; + padding: .675rem 0 .675rem 2.5rem; + border-radius: .25rem; + text-decoration: none; + cursor: default; + font-size: 1rem; + transition: all 0.2s; + position: relative; + + &.active { + color: #fff; + background: #5e72e4; + background: var(--primary); + + &::before { + color: #fff !important; + } + + &::after { + transform: rotate(90deg); + color: #fff !important; + } + } + + &:hover { + cursor: pointer; + color: #fff; + background: #5e72e4; + background: var(--primary); + + &::before { + color: #fff !important; + } + } + + &::before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; + content: "\e915"; + color: #5e72e4; + color: var(--primary); + } + + &::after { + position: absolute; + right: 0.5rem; + top: 0.8rem; + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: '\e90f'; + transition: all .15s ease; + color: #ced4da; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + transition: all 0.3s; + } + } + + + .menu[data-title=Status]:before { + content: "\e906"; + color: #5e72e4; + color: var(--primary); + } + + .menu[data-title=System]:before { + content: "\e90a"; + color: #fb6340; + } + + .menu[data-title=Services]:before { + content: "\e909"; + color: #11cdef; + } + + .menu[data-title=NAS]:before { + content: "\e90c"; + color: #f3a4b5; + } + + .menu[data-title=VPN]:before { + content: "\e90b"; + color: #8965e0; + } + + .menu[data-title=Network]:before { + content: "\e908"; + color: #8965e0; + } + + .menu[data-title=Bandwidth_Monitor]:before { + content: "\e90d"; + color: #2dce89; + } + + .menu[data-title=Docker]:before { + content: "\e911"; + color: #6699ff; + } + + .menu[data-title=Statistics]:before { + content: "\e913"; + color: #8965e0; + } + + .menu[data-title=Control]:before { + content: "\e912"; + color: #5e72e4; + color: var(--primary); + } + + .menu[data-title=Asterisk]:before { + content: "\e914"; + color: #fb6340; + } + + a[data-title=Log_out], + .food[data-title=Log_out] { + &::before { + content: "\e907"; + color: #adb5bd; + } + } + + } + } + } +} + +.lg { + margin: 0; + padding: 0 !important; +} + +.logout { + display: block; + margin: 0.8rem .5rem 0.1rem 0.5rem; + padding: .675rem 0 .675rem 2.5rem; + border-radius: .25rem; + text-decoration: none; + font-size: 1rem; + transition: all 0.2s; + position: relative; +} + +.logout:before { + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + position: absolute; + left: 0.8rem; + padding-top: 3px; + transition: all 0.3s; + content: "\e907"; + color: #32325d !important; +} + + +body[class*="node-"] > .main > .main-left > .nav > .slide > .menu::before { + transition: transform .1s ease-in-out; +} + +body[class*="node-"] > .main > .main-left > .nav > .slide > .menu.active::before { + transition: transform .2s ease-in-out; +} + +.main > .main-left[style*="overflow: hidden"] > .nav > .slide > .menu::before { + display: none; +} + + +.cbi-section, +.cbi-section-error, +#iptables, +.Firewall form, +#cbi-network > .cbi-section-node, +#cbi-wireless > .cbi-section-node, +#cbi-wireless > #wifi_assoclist_table, +[data-tab-title], +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), +[data-page="admin-system-opkg"] #maincontent > .container { + font-family: inherit; + font-weight: normal; + font-style: normal; + line-height: normal; + min-width: inherit; + margin: 1.25rem 0; + padding: 0; + border: 0; + + border-radius: 0.25rem; + background-color: #fff; + box-shadow: 0 0 1rem 0 rgba(136, 152, 170, .15); + + &:last-child { + margin: 0; + border: 0; + } + +} + +.cbi-modal .cbi-section, +.cbi-section .cbi-section { + padding: 0; + box-shadow: none; +} + +.cbi-modal .cbi-tabmenu { + margin-left: 0; +} + +.cbi-map:not(:first-child) { + margin-top: 1rem; +} + +.cbi-map-descr { + font-size: small; + line-height: 1.5; + padding: 0 1.25rem 1rem 1.25rem; +} + +.cbi-section { + & > .cbi-section-descr { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + + &:empty { + padding-top: 0 !important; + padding-bottom: 0rem !important; + } + } +} + +.cbi-section-descr:not(:empty) { + font-size: small; + line-height: 1.5; + padding: 0rem 1rem; +} + +.cbi-map-descr + fieldset { + margin-top: 1rem; +} + +.cbi-map-descr > abbr { + cursor: help; + text-decoration: underline; +} + +.cbi-section > legend { + display: none !important; +} + +fieldset > fieldset, +.cbi-section > .cbi-section { + margin: 0; + padding: 0; + border: 0; + box-shadow: none; +} + +.cbi-section > h3:first-child, +.panel-title { + font-size: 1.1rem; + line-height: 1; + display: block; + width: 100%; + margin: 0; + margin-bottom: 0; + padding: 0.8755rem 1.25rem; + color: #32325d; + color: var(--gray-dark); + +} + +.cbi-section > h3:first-child, +.cbi-section > h4:first-child, +.cbi-section > p:first-child, +[data-tab-title] > h3:first-child, +[data-tab-title] > h4:first-child, +[data-tab-title] > p:first-child { + padding: 1rem 1.25rem; +} + +.cbi-section p { + padding: 1rem; +} + +.cbi-tblsection { + overflow-x: auto; +} + +table { + border-spacing: 0; + border-collapse: collapse; +} + +table, +.table { + overflow-y: hidden; + width: 100%; + font-size: 90%; +} + +.table .table-titles th { + background-color: #e9ecef; + background-color: var(--lighter); +} + +table > tbody > tr > td, +table > tbody > tr > th, +table > tfoot > tr > td, +table > tfoot > tr > th, +table > thead > tr > td, +table > thead > tr > th, +.table > .tbody > .tr > .td, +.table > .tbody > .tr > .th, +.table > .tfoot > .tr > .td, +.table > .tfoot > .tr > .th, +.table > .thead > .tr > .td, +.table > .thead > .tr > .th, +.table > .tr > .td.cbi-value-field, +.table > .tr > .th.cbi-section-table-cell { + padding: .5rem; +} + +.container > .cbi-section:first-of-type > .table[width="100%"] > .tr > .td { + padding: .6rem; +} + +.cbi-section-table-cell { + line-height: 1.1; + align-self: flex-end; + flex: 1 1 auto; +} + +tr > td, +tr > th, +.tr > .td, +.tr > .th, +.cbi-section-table-row::before, +#cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) { + border-top: thin solid #ddd; + padding: 1.1em 1.25rem; +} + +#cbi-wireless .td, +.table[width="100%"] > .tr:first-child > .td, +[data-page="admin-network-diagnostics"] .tr > .td, +.tr.table-titles > .th, +.tr.cbi-section-table-titles > .th { + border-top: 0 !important; + background-color: #f6f9fc; + padding: 1.1em 1.25rem; + line-height: 1.3rem; +} + +[data-page="admin-network-network"] { + .cbi-value-field { + .cbi-dynlist { + padding: 0 !important; + } + } + + .td > .ifacebadge > .cbi-tooltip-container { + display: flex; + + img { + vertical-align: middle; + } + } +} + +#cbi-network .tr:first-child > .td { + border-top: 0; +} + +.table[width="100%"] > .tr:first-child > .td { + margin: auto 0; +} + +.cbi-section-table-row { + margin-bottom: 1rem; + text-align: center !important; + background: #f4f4f4; +} + +.cbi-section-table-row:last-child { + margin-bottom: 0; +} + +.cbi-section-table-row > .cbi-value-field .cbi-dropdown, +.cbi-section-table-row > .cbi-value-field .cbi-input-select, +.cbi-section-table-row > .cbi-value-field .cbi-input-text, +.cbi-section-table-row > .cbi-value-field .cbi-input-password { + width: 100%; +} + +.cbi-section-table-row > .cbi-value-field .cbi-input-text, +.cbi-section-table-row > .cbi-value-field .cbi-input-password { + min-width: 80px; +} + +.cbi-section-table-row > .cbi-value-field [data-dynlist] > input, +.cbi-section-table-row > .cbi-value-field input.cbi-input-password { + width: calc(100% - 1.5rem); +} + +.cbi-section-table-row .td { + text-align: center !important; + + .cbi-checkbox { + input[type="checkbox"] { + margin: 0; + } + } +} + +.control-group { + display: inline-flex; + width: 100%; + flex-wrap: wrap; + gap: 0px; + + input { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + border-right-width: 0; + margin-right: 0; + } + + input + button { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + margin-left: 0; + border-left-width: 0; + } +} + +.control-group > * { + vertical-align: middle; +} + +div > table > tbody > tr:nth-of-type(2n), +div > .table > .tr:nth-of-type(2n) { + background-color: #f9f9f9; +} + +/* fix multiple table */ +table table, +.table .table, +.cbi-value-field table, +.cbi-value-field .table, +td > table > tbody > tr > td, +.td > .table > .tbody > .tr > .td, +.cbi-value-field > table > tbody > tr > td, +.cbi-value-field > .table > .tbody > .tr > .td { + border: 0; +} + +/* button style */ +.btn, +.cbi-button, +.item::after { + font-size: .875rem; + display: inline-block; + width: auto !important; + padding: 0.5rem .75rem; + margin-left: 5px; + margin-right: 5px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + transition: all .2s ease-in-out; + text-align: center; + vertical-align: middle; + white-space: nowrap; + text-decoration: none; + border: 0; + border-radius: .25rem; + background-color: #f0f0f0; + background-image: none; + appearance: none; + -ms-touch-action: manipulation; + touch-action: manipulation; +} + +.btn, +.cbi-button { + &:last-child { + margin-right: 0 !important; + } + + &:first-child { + margin-left: 0 !important; + } + + &:only-child { + margin-left: 5px !important; + margin-right: 5px !important; + } +} + +.btn:not(button) ul:not(.dropdown) li { + padding: 0; +} + +.cbi-button-up, +.cbi-button-down { + display: inline-block; + min-width: 0; + padding: .2rem 1rem; + font-size: 0; + color: transparent !important; + background: url(../icon/arrow.svg) no-repeat center; + background-size: 12px 20px; +} + +.cbi-button-up { + transform: scaleY(-1); +} + +.cbi-button:not(select) { + appearance: none !important; +} + + +.btn:hover, +.btn:focus, +.btn:active, +.cbi-button:hover, +.cbi-button:focus, +.cbi-button:active, +.item:hover::after, +.item:focus::after, +.item:active::after, +.cbi-page-actions .cbi-button-apply + .cbi-button-save:hover, +.cbi-page-actions .cbi-button-apply + .cbi-button-save:focus, +.cbi-page-actions .cbi-button-apply + .cbi-button-save:active { + text-decoration: none; + outline: 0; +} + +.btn:hover, +.btn:focus, +.cbi-button:hover, +.cbi-button:focus, +.item:hover::after, +.item:focus::after { + box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 2px 2px rgba(0, 0, 0, .2); +} + +.btn:active, +.cbi-button:active, +.item:active::after { + box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23); +} + +.cbi-button-up:hover, +.cbi-button-up:focus { + box-shadow: 0 0 2px rgba(0, 0, 0, .12), 0 -2px 2px rgba(0, 0, 0, .2); +} + +.cbi-button-up:active { + box-shadow: 0 -10px 20px rgba(0, 0, 0, .19), 0 -6px 6px rgba(0, 0, 0, .23); +} + +.btn:disabled, +.cbi-button:disabled { + cursor: not-allowed; + pointer-events: none; + opacity: .5; + box-shadow: none; +} + +/* gray */ +.alert-message [class="btn"], +.modal div[class="btn"], +.cbi-button-find, +.cbi-button-link, +.cbi-button-up, +.cbi-button-down, +.cbi-button-neutral, +.cbi-button[name="zero"], +.cbi-button[name="restart"], +.cbi-button[onclick="hide_empty(this)"] { + color: #fff; + border: thin solid #8898aa; + background-color: #8898aa; +} + +/* dark blue */ +.btn.primary, +.cbi-page-actions .cbi-button-save, +.cbi-page-actions .cbi-button-apply + .cbi-button-save, +.cbi-button-add, +.cbi-button-save, +.cbi-button-positive, +.cbi-button-link, +.cbi-button[value="Enable"], +.cbi-button[value="Scan"], +.cbi-button[value^="Back"], +.cbi-button-neutral[onclick="handleConfig(event)"] { + font-weight: normal; + color: #fff !important; + border: thin solid #5e72e4; + border: thin solid var(--primary); + background-color: #5e72e4; + background-color: var(--primary);; +} + +/* light blue */ +.cbi-page-actions .cbi-button-apply, +.cbi-section-actions .cbi-button-edit, +.cbi-button-edit, +.cbi-button-apply, +.cbi-button-reload, +.cbi-button-action, +.cbi-button[value="Submit"], +.cbi-button[value="Upload"], +.cbi-button[value$="Apply"], +.cbi-button[onclick="addKey(event)"] { + font-weight: normal; + color: #fff !important; + border: thin solid #5e72e4; + border: thin solid var(--primary); + + background-color: #5e72e4; + background-color: var(--primary); +} + +/* red */ +.btn.danger, +.cbi-section-remove > .cbi-button, +.cbi-button-remove, +.cbi-button-reset, +.cbi-button-negative, +.cbi-button[value="Stop"], +.cbi-button[value="Kill"], +.cbi-button[onclick="reboot(this)"], +.cbi-button-neutral[value="Restart"] { + font-weight: normal; + color: #fff; + border: thin solid #f5365c; + border: thin solid var(--red); + background-color: #f5365c; + background-color: var(--red); +} + +/* yellow */ +.btn[value="Dismiss"], +.cbi-button[value="Terminate"], +.cbi-button[value="Reset"], +.cbi-button[value="Disabled"], +.cbi-button[onclick^="iface_reconnect"], +.cbi-button[onclick="handleReset(event)"], +.cbi-button-neutral[value="Disable"] { + font-weight: normal; + color: #fff; + border: thin solid #eea236; + background-color: #f0ad4e; +} + +/* green */ +.cbi-button-success, +.cbi-button-download { + font-weight: normal; + color: #fff; + border: thin solid #4cae4c; + background-color: #5cb85c; +} + +.cbi-page-actions .cbi-button-link:first-child { + float: left; +} + +.a-to-btn { + text-decoration: none; +} + +.cbi-value-field .cbi-button-add { + font-weight: bold; + padding: 1px 6px; + display: inline-block; + align-items: center; +} + +.tabs { + margin: 0 0 1rem 0; + padding: 0 1rem; + background-color: #FFFFFF; + border-radius: 0.25rem; + box-shadow: 0 4px 8px rgba(0, 0, 0, .03); + white-space: nowrap; + overflow-x: auto; + + &::-webkit-scrollbar { + width: 1px; + height: 5px; + } + + &::-webkit-scrollbar-thumb { + background-color: #f6f9fc + } + + &::-webkit-scrollbar-track { + background-color: #fff; + } + + li[class~="active"], + li:hover { + cursor: pointer; + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + color: #5e72e4; + color: var(--primary); + background-color: #e4e9ee; + margin-bottom: 0; + border-radius: 0; + + a { + color: #5e72e4; + color: var(--primary); + } + } + + li { + font-size: 0.875rem; + display: inline-block; + padding: 0.875rem 0rem; + border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); + margin: 0; + transition: all 0.2s; + + a { + text-decoration: none; + color: #404040; + padding: 0.5rem 0.8rem; + } + + &:hover { + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + } + } +} + + +.cbi-tabmenu { + color: white; + padding: 0.5rem 1rem 0 1rem; + white-space: nowrap; + overflow-x: auto; + + &::-webkit-scrollbar { + width: 1px; + height: 5px; + } + + &::-webkit-scrollbar-thumb { + background-color: #f6f9fc + } + + &::-webkit-scrollbar-track { + background-color: #fff; + } + + li { + background: #dce3e9; + display: inline-block; + font-size: 0.875rem; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; + padding: 0.5rem 0rem; + border-bottom: 0.18751rem solid rgba(0, 0, 0, 0); + margin: 0 0.2rem; + + a { + text-decoration: none; + color: #404040; + padding: 0.5rem 0.8rem; + } + + &:hover { + cursor: pointer; + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + color: #5e72e4; + color: var(--primary); + background-color: #e4e9ee; + margin-bottom: 0; + + a { + color: #525f7f; + } + } + } + + li[class~="cbi-tab"] { + border-bottom: 0.18751rem solid #5e72e4; + border-bottom: 0.18751rem solid var(--primary); + color: #5e72e4; + color: var(--primary); + background-color: #e4e9ee; + margin-bottom: 0; + + a { + color: #5e72e4; + color: var(--primary); + } + } +} + +.cbi-tab-descr { + padding: 0.5rem 1.5rem; +} + +.cbi-section-node { + padding: 0; +} + +.cbi-section .cbi-section-remove:nth-of-type(2n), +.container > .cbi-section .cbi-section-node:nth-of-type(2n) { + background-color: #f9f9f9; +} + +[data-tab-title] { + overflow: hidden; + height: 0; + opacity: 0; + margin: 0; + padding: 0rem 0rem !important; + + p { + margin-left: 1rem; + margin-bottom: 1rem; + } +} + + +[data-tab-active="true"] { + overflow: visible; + height: auto; + opacity: 1; + transition: opacity .25s ease-in; + margin: inherit !important; +} + + +.cbi-section[id] .cbi-section-remove:nth-of-type(4n+3), +.cbi-section[id] .cbi-section-node:nth-of-type(4n+4) { + background-color: #f9f9f9; +} + +.cbi-section-node-tabbed { + margin-top: 0; + padding: 0; + border: 0 solid #d4d4d4; + border-radius: 0.25rem; +} + +.cbi-tabcontainer > .cbi-value:nth-of-type(2n) { + background-color: #f9f9f9; +} + +.cbi-value-field { + display: table-cell; +} + +.cbi-value-description { + line-height: 1.25; + display: table-cell; + + abbr { + color: #32325d; + color: var(--gray-dark); + } +} + +.cbi-value-description { + font-size: small; + padding: .5rem; + opacity: .5; +} + +.cbi-value-title { + display: table-cell; + float: left; + width: 23rem; + + padding-right: 2rem; + text-align: right; + word-wrap: break-word; +} + +.cbi-value { + display: inline-block; + width: 100%; + padding: .35rem 1rem .2rem 1rem; + line-height: 2.4rem; + + &:first-child { + padding-top: 1rem; + } + + &:last-child { + padding-bottom: 1rem; + } + + ul { + line-height: 1.25; + } +} + + +.cbi-value-field .cbi-dropdown, +.cbi-value-field .cbi-input-select, +.cbi-value input[type="text"], +.cbi-value input[type="password"], +.cbi-value textarea { + min-width: 18rem; +} + +.cbi-value input[type="password"] { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + font-size: 0.875rem; + margin: .25rem 0 .25rem 0.1rem; +} + +.cbi-value input[type="password"] + .cbi-button-neutral { + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem !important; + padding: 0.5rem 0; + margin: 0.25rem 0; + font-weight: normal; + font-size: 1.2rem; + line-height: 1.5rem; + color: #fff; + outline: 0; + background-color: #8898aa; + box-shadow: none; + border: 1px solid #8898aa; + border-radius: 0.25rem; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +#cbi-firewall-zone .cbi-input-select, +#cbi-network-switch_vlan .cbi-input-select { + min-width: 11rem; +} + +#cbi-network-switch_vlan .cbi-input-text { + max-width: 3rem; +} + +.cbi-input-invalid { + color: #f5365c !important; + border-color: #f5365c !important; +} + +.cbi-section-error { + font-weight: bold; + line-height: 1.42857143; + margin: 18px; + padding: 6px; + border: thin solid #f5365c; + border-radius: 3px; + background-color: #fce6e6; +} + +.cbi-section-error ul { + margin: 0 0 0 20px; +} + +.cbi-section-error ul li { + font-weight: bold; + color: #f5365c; +} + +.td[data-title]::before { + font-weight: bold; + display: none; + padding: .25rem 0; + content: attr(data-title) ":\20"; + text-align: left; + white-space: nowrap; +} + +.tr.placeholder .td[data-title]::before { + display: none; +} + +.tr[data-title]::before, +.tr.cbi-section-table-titles.named::before { + font-weight: bold; + display: table-cell; + align-self: center; + flex: 1 1 5%; + padding: .25rem; + content: attr(data-title) "\20"; + text-align: center; + vertical-align: middle; + white-space: normal; + word-wrap: break-word; +} + +.cbi-rowstyle-1 { + background-color: #f9f9f9; +} + +.cbi-rowstyle-2 { + background-color: #eee; +} + +.cbi-rowstyle-2 .cbi-button-up, +.cbi-rowstyle-2 .cbi-button-down, +body:not(.Interfaces) .cbi-rowstyle-2:first-child { + background-color: #fff !important; +} + +.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + width: auto !important; +} + +.td.cbi-section-actions { + text-align: right !important; + vertical-align: middle; +} + +.td.cbi-section-actions > * { + display: inline-flex; +} + +.td.cbi-section-actions > * > *, +.td.cbi-section-actions > * > form > * { + margin: 0 5px; + display: flex; + align-items: center; +} + +.td.cbi-section-actions > * > form { + display: inline-flex; + margin: 0; +} + +.cbi-checkbox { + margin: 0 0.25rem; +} + +/* lists */ +.cbi-dynlist { + + line-height: 1.3; + flex-direction: column; + min-height: 30px; + cursor: text; + + & > .item { + display: inline-flex; + flex-wrap: nowrap; + margin: 0.25rem 0; + position: relative; + max-width: 25rem; + pointer-events: none; + color: #8898aa; + outline: 0; + + &::after { + content: "\00D7"; + pointer-events: auto; + display: flex; + align-items: center; + justify-content: center; + width: 2.5rem !important; + margin: 0; + font-weight: normal; + font-size: 1.2rem; + line-height: 1.5rem; + + color: #fff; + border: 1px solid #f5365c; + border-radius: 0 0.25rem 0.25rem 0; + outline: 0; + + background-color: var(--red); + background-image: none; + box-shadow: none; + box-sizing: border-box; + } + + & > span { + display: block; + padding: 0.5rem 0.75rem; + box-sizing: border-box; + min-width: 15.5rem; + width: 15.5rem; + transition: box-shadow 0.15s ease; + overflow: hidden; + text-overflow: ellipsis; + + white-space: nowrap; + word-break: break-word; + font-size: .875rem; + line-height: 24px; + + color: #8898aa; + border: 1px solid #dee2e6; + border-radius: .25rem 0 0 .25rem; + outline: 0; + background-image: none; + box-shadow: none; + box-sizing: border-box; + } + } + + & > .add-item { + display: inline-flex; + align-items: center; + width: 100%; + min-width: 16rem; + margin: 0.25rem 0; + gap: 0; + flex-wrap: nowrap; + + input { + display: block; + padding: 0.5rem 0.75rem; + box-sizing: border-box; + min-width: 15.5rem; + width: 15.5rem; + transition: box-shadow 0.15s ease; + + white-space: nowrap; + word-break: break-word; + font-size: .875rem; + line-height: 1.5rem; + + color: #8898aa; + border: 1px solid #dee2e6; + border-radius: .25rem 0 0 .25rem; + border-right-width: 0; + outline: 0; + background-image: none; + box-shadow: none; + } + + .cbi-button { + display: flex; + width: auto !important; + padding-left: 0.8rem; + padding-right: 0.8rem; + margin-left: 0; + align-items: center; + justify-content: center; + + font-size: 0.875rem; + line-height: 1.5rem; + + outline: 0; + background-image: none; + background-color: var(--gray); + box-shadow: none; + color: var(--white); + border-color: var(--gray); + border-radius: 0.25rem; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .cbi-button-add { + width: 2.5rem !important; + padding: 0.5rem 0 !important; + + font-weight: normal; + font-size: 1.2rem; + + color: #fff; + background-color: var(--primary); + border: 1px solid var(--primary); + } + + + &:not([ondrop]) { + & > input { + overflow: hidden; + min-width: 15.5rem; + width: 15.5rem; + white-space: nowrap; + text-overflow: ellipsis; + } + } + } +} + + +.cbi-dynlist[name="sshkeys"] > .item { + max-width: none; +} + + +.cbi-dynlist > .cbi-dynlist > .add-item[ondrop] > input { + min-width: 13rem; +} + +.cbi-dynlist, +.cbi-dropdown { + position: relative; + display: inline-flex; + + min-height: 2.1875rem; +} + +.cbi-dropdown[placeholder*="select"] { + max-width: 25rem; + height: auto; + margin-top: -3px; +} + +.cbi-dropdown > ul { + display: flex; + overflow-x: hidden; + overflow-y: auto; + width: 100%; + margin: 0 !important; + padding: 0; + list-style: none; + outline: 0; +} + + +.cbi-dropdown > ul.preview { + display: none; + +} + +.cbi-button-apply > ul.preview { + display: none; + + li { + color: #fff; + } + +} + +.cbi-button-apply > ul:first-child { + li { + color: #fff; + } + +} + +.cbi-dropdown > .open { + flex-basis: 15px; +} + +.cbi-dropdown > .open, +.cbi-dropdown > .more { + font-size: 1rem; + font-weight: 900; + line-height: 1em; + display: flex; + flex-direction: column; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; + padding: 0 .25em; + cursor: default; + text-align: center; + outline: 0; +} + +.cbi-dropdown > .more, +.cbi-dropdown > ul > li[placeholder] { + font-weight: bold; + display: none; + color: #777; + text-shadow: none; +} + +.cbi-dropdown > ul > li { + display: none; + overflow: hidden; + align-items: center; + align-self: center; + flex-grow: 1; + flex-shrink: 1; + min-height: 20px; + padding: 0.125rem .25em; + white-space: nowrap; + text-overflow: ellipsis; + +} + +.cbi-dropdown > ul > li .hide-open { + display: initial; +} + +.cbi-dropdown > ul > li .hide-close { + display: none; +} + +.cbi-dropdown > ul > li[display]:not([display="0"]) { + border-left: thin solid #ccc; +} + +.cbi-dropdown[empty] > ul { + max-width: 1px; +} + +.cbi-dropdown > ul > li > form { + display: none; + margin: 0; + padding: 0; + pointer-events: none; +} + +.cbi-dropdown > ul > li img { + margin-right: .25em; + vertical-align: middle; +} + +.cbi-dropdown > ul > li > form > input[type="checkbox"] { + height: auto; + margin: 0; +} + +.cbi-dropdown > ul > li input[type="text"] { + height: 20px; +} + +.cbi-dropdown[open] > ul.dropdown { + position: absolute; + z-index: 1100; + display: block; + width: auto; + min-width: 100%; + max-width: none; + max-height: 200px !important; + border: 0 solid #918e8c; + background: #ffffff; + box-shadow: 0 0 4px #918e8c; + border-bottom-left-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; + color: var(--main-menu-color); + margin-left: -0 !important; + left: 0; + + li { + color: #000; + } +} + + +.cbi-dropdown > ul > li[display], +.cbi-dropdown[open] > ul.preview, +.cbi-dropdown[open] > ul.dropdown > li, +.cbi-dropdown[multiple] > ul > li > label, +.cbi-dropdown[multiple][open] > ul.dropdown > li, +.cbi-dropdown[multiple][more] > .more, +.cbi-dropdown[multiple][empty] > .more { + display: flex; + align-items: center; + flex-grow: 1; + +} + +.cbi-dropdown[empty] > ul > li, +.cbi-dropdown[optional][open] > ul.dropdown > li[placeholder], +.cbi-dropdown[multiple][open] > ul.dropdown > li > form { + display: block; +} + +.cbi-dropdown[open] > ul.dropdown > li .hide-open { + display: none; +} + +.cbi-dropdown[open] > ul.dropdown > li .hide-close { + display: initial; +} + +.cbi-dropdown[open] > ul.dropdown > li { + border-bottom: thin solid #ccc; + padding: 0.5rem 0.8rem; +} + +.cbi-dropdown[open] > ul.dropdown > li label { + margin-left: 0.5rem; +} + +.cbi-dropdown[open] > ul.dropdown > li[selected] { + background: #e4e9ee; +} + +.cbi-dropdown[open] > ul.dropdown > li.focus { + background: #e4e9ee; + outline: none; +} + +.cbi-dropdown[open] > ul.dropdown > li:last-child { + margin-bottom: 0; + border-bottom: 0; +} + +.cbi-dropdown[open] > ul.dropdown > li[unselectable] { + opacity: .7; +} + +.cbi-dropdown[open] > ul.dropdown > li > input.create-item-input:first-child:last-child { + width: 100%; +} + +.cbi-dropdown[disabled] { + pointer-events: none; + opacity: .6; +} + +.cbi-dropdown .zonebadge { + width: 100%; +} + +.cbi-dropdown[open] .zonebadge { + width: auto; +} + +/* progressbar */ +.cbi-progressbar { + position: relative; + display: flex; + width: 100%; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.5rem; + height: 1rem; + overflow: hidden; + + & > div { + display: block; + position: absolute; + height: 100%; + background-color: var(--bar-bg); + border-radius: 0.5rem; + transition: width 0.3s; + } + + &::after { + content: attr(title); + position: absolute; + font-size: 0.75rem; + color: var(--bs-heading-color); + width: 100%; + height: 100%; + text-align: center; + line-height: 1rem; + z-index: 2; + } +} + +#modal_overlay { + position: fixed; + z-index: 900; + top: 0; + right: 10000px; + bottom: 0; + left: -10000px; + overflow-y: scroll; + transition: opacity .125s ease-in; + opacity: 0; + background: rgba(0, 0, 0, .7); + -webkit-overflow-scrolling: touch; +} + +.modal { + display: flex; + align-items: center; + flex-wrap: wrap; + width: 90%; + min-width: 270px; + max-width: 600px; + min-height: 32px; + margin: 5em auto; + padding: 1rem; + border-radius: 0.25rem !important; + background: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + + & > * { + line-height: normal; + flex-basis: 100%; + margin-bottom: .5em; + max-width: 100%; + } + + & > pre, + & > textarea { + font-size: 1rem; + font-size-adjust: .35; + overflow: auto; + margin-bottom: .5em; + padding: 8.5px; + cursor: auto; + white-space: pre-wrap; + color: #eee; + outline: 0; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + } + + & > h4 { + display: block; + flex-grow: 1; + max-width: none; + padding: 1rem; + margin: -1rem -1rem 0 -1rem; + font-size: 1rem; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + border-radius: 0.25rem 0 0 0.25rem; + } + + h5 { + margin-top: 1rem; + font-weight: 600; + } + + label > input[type="checkbox"] { + top: 0; + } + + ul { + margin-left: 2.2em; + + &:not(.cbi-tabmenu) { + margin-top: 1rem; + } + + li { + list-style-type: square; + color: #808080; + } + } + + p { + word-break: break-word; + margin-top: 1rem; + } + + .label { + font-size: .6rem; + font-weight: normal; + padding: .1rem .3rem; + padding-bottom: 0; + cursor: default; + border-radius: 0; + } + + .label.warning { + background-color: #f0ad4e !important; + } + + .btn { + padding: 0.45rem 0.8rem; + } + + &.cbi-modal { + max-width: 90%; + max-height: none; + } +} + + +body.modal-overlay-active { + overflow: hidden; + height: 100vh; +} + +body.modal-overlay-active #modal_overlay { + right: 0; + left: 0; + opacity: 1; +} + + +.spinning { + position: relative; + padding-left: 32px !important; +} + +.spinning::before { + position: absolute; + top: 0; + bottom: 0; + + left: .2em; + width: 32px; + content: ""; + background: url(/luci-static/resources/icons/loading.gif) no-repeat center; + background-size: 16px; +} + +#view { + border-radius: 0.25rem; + overflow: hidden; + + & > .spinning { + position: fixed; + top: 50%; + left: 50%; + transform: translateX(-50%) translateY(-50%); + padding: 1rem; + border-radius: 0.5rem; + background: #ffffff; + box-shadow: 0 0 1rem 0 rgba(136, 152, 170, .15); + } +} + +/* luci */ +.hidden { + display: none; +} + +.left, +.left::before { + text-align: left !important; +} + +.right, +.right::before { + text-align: right !important; +} + +.center, +.center::before { + text-align: center !important; +} + +.top { + align-self: flex-start !important; + vertical-align: top !important; +} + +.bottom { + align-self: flex-end !important; + vertical-align: bottom !important; +} + +.inline { + display: inline; +} + +.cbi-page-actions { + padding: 1rem; + text-align: right; + justify-content: flex-end; +} + +.cbi-page-actions > form[method="post"] { + display: inline-block; +} + +.th[data-type="button"], +.td[data-type="button"], +.th[data-type="fvalue"], +.td[data-type="fvalue"] { + flex: 1 1 2em; + text-align: center; +} + +.ifacebadge { + display: inline-flex; + align-items: center; + gap: .2rem; + padding: .25rem .8rem; + + background: #eee; + border-radius: 4px; +} + +td > .ifacebadge, +.td > .ifacebadge { + font-size: .875rem; + background-color: #f0f0f0; +} + +.ifacebadge > em, +.ifacebadge > img { + display: inline-block; + margin: 0 0.75rem; +} + +.ifacebadge > img + img { + margin: 0 .2rem 0 0; +} + +.network-status-table { + display: flex; + flex-wrap: wrap; + + .ifacebox { + flex-grow: 1; + border-radius: .25rem; + overflow: hidden; + margin: 1rem; + } + + .ifacebox-body { + display: flex; + flex-direction: column; + height: 100%; + gap: 0.5em; + + > span { + flex: 10 10 auto; + } + + > div { + display: flex; + flex-wrap: wrap; + gap: .5rem; + height: 100%; + } + + .ifacebadge { + align-items: center; + flex: 1 1 auto; + min-width: 220px; + padding: .5em; + background-color: #fff; + + > span { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } + } +} + +/* textarea */ +.cbi-input-textarea { + font-family: inherit; + width: 100%; + font-size: 0.875rem; + min-height: 14rem; + padding: .8rem; + color: #8898aa; + border-radius: 0.25rem; + border: 1px solid #dee2e6; + min-width: 16rem; +} + +#content_syslog { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); +} + +#syslog { + font-size: small; + font-family: 'Google Sans'; + line-height: 1.25; + overflow-y: hidden; + width: 100%; + min-height: 15rem; + padding: 1rem; + resize: none; + color: #242424; + border: 0; + border-radius: 0.25rem; + background-color: #ffffff; + +} + +#syslog:focus { + outline: 0; +} + +/* config changes */ +.uci-change-list { + font-family: inherit; + overflow: scroll; + width: 100%; + display: flex; + flex-direction: column; + flex-wrap: wrap; +} + +.uci-change-list ins, +.uci-change-legend-label ins { + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #0f0; + background-color: #cfc; +} + +.uci-change-list del, +.uci-change-legend-label del { + font-style: normal; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #f00; + background-color: #fcc; +} + +.uci-change-list var, +.uci-change-legend-label var { + font-style: normal; + display: block; + padding: 2px; + text-decoration: none; + border: thin solid #ccc; + background-color: #eee; +} + +.uci-change-list var ins, +.uci-change-list var del { + font-style: normal; + padding: 0; + white-space: pre; + border: 0; +} + +.uci-change-legend { + padding: 5px; +} + +.uci-change-legend-label { + float: left; + width: 150px; +} + +.uci-change-legend-label > ins, +.uci-change-legend-label > del, +.uci-change-legend-label > var { + display: block; + float: left; + width: 10px; + height: 10px; + margin-right: 4px; +} + +.uci-change-legend-label var ins, +.uci-change-legend-label var del { + line-height: .4; + border: 0; +} + +.uci-change-list var, +.uci-change-list del, +.uci-change-list ins { + padding: .5rem; +} + +.uci-dialog { + .cbi-section { + padding: 0.5rem; + + .uci-change-legend { + line-height: 15px; + padding: 10px 20px 0 20px; + + .uci-change-legend-label { + padding: 0; + margin: 0; + position: relative; + float: none; + display: inline-block; + width: 25%; + + > ins, + > del { + width: 14px; + height: 14px; + } + + > var { + position: relative; + width: 14px; + height: 14px; + + ins, + del { + position: absolute; + left: 2px; + top: 2px; + right: 2px; + bottom: 2px; + } + } + } + } + + .uci-change-list { + overflow: auto; + } + + .uci-change-list + .right { + .btn { + color: #333; + } + + .cbi-dropdown ul:not(.dropdown) { + li { + color: #fff; + } + } + + .cbi-button { + padding: .45rem .8rem; + } + } + } +} + +/* other fix */ +#iwsvg, +#iwsvg2, +#bwsvg { + border: thin solid #d4d4d4 !important; +} + +#iwsvg, +[data-page="admin-status-realtime-bandwidth"] #bwsvg { + border-top: 0 !important; +} + +.ifacebox { + line-height: 1.25; + display: inline-flex; + overflow: hidden; + flex-direction: column; + border-radius: 4px; + min-width: 100px; + background-color: #f9f9f9; + // border-bottom: thin solid #ccc; + // box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 1px 2px rgba(0, 0, 0, .2); +} + +.ifacebox-head { + padding: .25em; + background: #eee; +} + +.ifacebox-head.active { + background: #5e72e4; + background: var(--primary); + + * { + color: #fff; + color: var(--white); + } + +} + +.ifacebox-body { + padding: 0.875rem 1rem; + line-height: 1.6em; +} + +.cbi-image-button { + margin-left: .5rem; +} + +.zonebadge { + display: inline-block; + padding: .2rem .5rem; + border-radius: 4px; +} + +.zonebadge .ifacebadge { + margin: .1rem .2rem; + padding: .2rem .3rem; + border: thin solid #6c6c6c; +} + +.zonebadge > input[type="text"] { + min-width: 10rem; + margin-top: .3rem; + padding: .16rem 1rem; +} + +.zonebadge > em, +.zonebadge > strong { + display: inline-block; + margin: 0 .2rem; +} + +.cbi-value-field .cbi-input-checkbox, +.cbi-value-field .cbi-input-radio { + margin-top: .1rem; +} + +.cbi-value-field > ul > li { + display: flex; +} + +.cbi-value-field > ul > li > label { + margin-top: .5rem; +} + +.cbi-value-field > ul > li .ifacebadge { + margin-top: -.5rem; + margin-left: .4rem; + background-color: #eee; +} + +.cbi-section-table-row > .cbi-value-field .cbi-dropdown { + min-width: 3rem; +} + +.cbi-section-create { + display: inline-flex; + align-items: center; + padding: .5rem 1rem; +} + + +.cbi-section-remove { + padding: .5rem 1rem; +} + +div.cbi-value var, +td.cbi-value-field var, +.td.cbi-value-field var { + font-style: italic; + color: #0069d6; +} + +.cbi-optionals { + padding: 1rem 1rem 0 1rem; + border-top: thin solid #ccc; +} + +.cbi-dropdown-container { + position: relative; +} + +.cbi-tooltip-container, +span[data-tooltip], +span[data-tooltip] .label { + cursor: help !important; +} + +.cbi-tooltip { + position: absolute; + z-index: 1000; + left: -1000px; + padding: 2px 5px; + transition: opacity .25s ease-out; + white-space: pre; + pointer-events: none; + opacity: 0; + border-radius: 3px; + background: #fff; + box-shadow: 0 0 2px #444; +} + +.cbi-tooltip-container:hover .cbi-tooltip { + left: auto; + transition: opacity .25s ease-in; + opacity: 1; +} + +.zonebadge .cbi-tooltip { + margin: -1.5rem 0 0 -.5rem; + padding: .25rem; + background: inherit; +} + +.zonebadge-empty { + color: #404040; + background: repeating-linear-gradient(45deg, rgba(204, 204, 204, .5), rgba(204, 204, 204, .5) 5px, rgba(255, 255, 255, .5) 5px, rgba(255, 255, 255, .5) 10px); +} + +.zone-forwards { + display: flex; + min-width: 10rem; +} + +.zone-forwards > * { + flex: 1 1 45%; +} + +.zone-forwards > span { + flex-basis: 10%; + padding: 0 .25rem; + text-align: center; +} + +.zone-forwards .zone-src, +.zone-forwards .zone-dest { + display: flex; + flex-direction: column; +} + +.label { + font-size: .875rem; + font-weight: bold; + padding: .3rem .8rem; + white-space: nowrap; + text-decoration: none; + text-transform: uppercase; + color: #fff !important; + border-radius: 3px; + background-color: #bfbfbf; + text-shadow: none; +} + +label > input[type="checkbox"], +label > input[type="radio"] { + position: relative; + top: .4rem; + right: .2rem; + margin: 0; + vertical-align: bottom; +} + +label[data-index][data-depends] { + padding-right: 2em; +} + +.showSide { + display: none; +} + +.darkMask { + position: fixed; + z-index: 99; + display: none; + width: 100%; + height: 100%; + content: ""; + top: 0; + background-color: rgba(0, 0, 0, .56); + transition: all 0.2s; + + &.active { + display: block; + } +} + +/* diagnostics */ +#diag-rc-output > pre, +#command-rc-output > pre, +[data-page="admin-services-wol"] .notice code { + font-size: 1.2rem; + font-size-adjust: .35; + line-height: normal; + display: block; + overflow-y: hidden; + width: 100%; + padding: 8.5px; + white-space: pre; + color: #eee; + background-color: #101010; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); +} + +[data-page="admin-network-diagnostics"] { + .table { + box-shadow: none; + } + + .cbi-section { + padding: 1rem; + font-family: monospace; + background: #fff !important; + } + + textarea { + background: transparent; + border-radius: 0.25rem; + font-family: 'Google Sans' !important; + color: #8898aa; + border: 1px solid #dee2e6; + padding: 0.5rem; + } + + .tr > .td { + background-color: #fff !important; + border-bottom: 1px solid #dee2e6 !important; + } +} + +input[name="ping"], +input[name="traceroute"], +input[name="nslookup"] { + width: 80%; +} + +/* fix status */ +.node-status-overview > .main fieldset:nth-child(4) .td:nth-child(2), +.node-status-processes > .main .table .tr .td:nth-child(3) { + white-space: normal; +} + +div[style*="display:grid;grid-template-columns:repeat"] { + display: flex !important; + justify-content: space-evenly !important; + padding-bottom: 1rem; + flex-wrap: wrap; + font-family: 'Google Sans'; + + .ifacebox { + text-align: center; + flex-basis: 100px; + + .ifacebox-body { + font-size: 0.7rem; + padding: 0.875rem; + + .cbi-tooltip-container { + font-size: inherit !important; + } + } + } +} + +@media screen and (max-width: 484px) { + div[style*="display:grid;grid-template-columns:repeat"] { + .ifacebox { + flex-basis: 80px; + + .ifacebox-body { + padding: 0.875rem 0.5rem; + font-size: 0.6rem; + } + } + } +} + +[data-page="admin-system-attendedsysupgrade"] #view .cbi-button { + margin-left: 0 !important; + margin-top: 1rem !important; +} + +/* fix system reboot */ +[data-page="admin-system-reboot"] { + p { + padding-left: 1.5rem; + } + + p > span { + position: relative; + top: .1rem; + left: 1rem; + } + + .cbi-button { + background: #fb6340 !important; + border-color: #fb6340 !important; + margin-left: 0 !important; + } + + #view > h2:first-child + p { + margin-bottom: 1rem; + } +} + +[data-page="admin-system-poweroff"] { + .container { + h2 + br + p { + margin-bottom: 1rem; + padding-left: 1.5rem; + } + } +} + +[data-page="admin-vpn-passwall"] h4 { + background: transparent; +} + +[data-page="admin-system-filetransfer"] { + + #cbi-upload { + margin-top: 0; + } + + .cbi-section-table { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03); + } + +} + +/* samba */ +#cbi-samba [data-tab="template"] { + .cbi-value-field { + display: block; + } + + .cbi-value-title { + width: auto; + padding-bottom: .6rem; + } +} + +/* admin-system-admin-password */ +[data-page="admin-system-admin"] .cbi-map h2, +[data-page="admin-system-admin-password"] .cbi-map h2, +[data-page="admin-system-admin"] .cbi-map .cbi-map-descr, +[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { + margin-left: 0; + color: #32325d; + color: var(--gray-dark); +} + +/* admin-system-admin-sshkeys */ +[data-page="admin-system-admin-sshkeys"] { + .cbi-dynlist { + margin-left: 1rem; + } +} + +/* software */ +[data-page="admin-system-opkg"] h2 { + margin-left: 0; + color: #32325d; + color: var(--gray-dark); +} + +[data-page="admin-system-opkg"] input[name="filter_i18n"] { + top: 2px; + vertical-align: text-top; +} + +.controls { + margin: .5em 1rem 1em 1rem !important; +} + +.controls > * > .btn:not([aria-label$="page"]) { + flex-grow: initial !important; + margin-top: .25rem; +} + +.controls > #pager > .btn[aria-label$="page"] { + font-size: 1.4rem; + font-weight: bold; +} + +.controls > * > label { + margin-bottom: .2rem; +} + +[data-page="admin-system-opkg"] div.btn { + line-height: 3; + display: inline; + padding: .3rem .6rem; +} + +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), +[data-page="admin-system-opkg"] #maincontent > .container { + margin-top: 1rem; + padding-top: .01rem; +} + +[data-page="admin-system-opkg"] #maincontent > .container { + margin: 0 1.25rem 1rem 1.25rem; + margin-bottom: 1rem; +} + +.td.version, +.td.size { + white-space: normal !important; + word-break: break-word; +} + +.cbi-tabmenu + .cbi-section { + margin-top: 0; +} + +/* admin-system-system */ +[data-page="admin-system-system"] { + .control-group { + margin-top: 0.5rem; + } + + .cbi-dynlist { + margin: 0.25rem 0; + } +} + +/* admin-system-startup */ +[data-page="admin-system-startup"] { + [data-tab-title] p { + margin-left: 0; + margin-bottom: 0; + position: relative; + } + + textarea { + line-height: 1.25; + overflow-y: auto; + width: 100%; + min-height: 15rem; + padding: 1rem; + resize: none; + color: #8898aa; + border-radius: 0.25rem; + border: 1px solid #dee2e6; + + &:focus-visible { + outline: none; + box-shadow: none; + border: 1px solid var(--primary); + } + } +} + +/* admin-system-crontab*/ +[data-page="admin-system-crontab"] { + #view p { + margin-bottom: 1rem; + + &:last-child { + margin-bottom: 0; + } + + textarea { + line-height: 1.25; + overflow-y: hidden; + width: 100%; + min-height: 15rem; + padding: 1rem; + resize: none; + background-color: transparent; + background: var(--white); + outline: none; + color: #8898aa; + border-radius: 0.25rem; + border: 1px solid #dee2e6; + } + } +} + +/*admin-system-attendedsysupgrade-configuration*/ +[data-page="admin-system-attendedsysupgrade-configuration"] { + .cbi-map { + .cbi-map-descr { + padding-bottom: 0; + } + } +} + +/*admin-system-flash*/ + +[data-page="admin-system-flash"] { + .cbi-value { + padding: 0 1rem; + } + + .cbi-section { + .cbi-section { + margin-top: 0; + } + } + + .cbi-map-tabbed { + border-radius: 0.25rem; + } + + .cbi-section-node { + padding-top: 0; + padding-bottom: 0.5rem; + } + + legend { + font-size: 1.2rem; + width: 100%; + display: block; + border-bottom: 1px solid rgba(0, 0, 0, .05); + line-height: 1.5; + margin-bottom: 0; + letter-spacing: 0.1rem; + color: #32325d; + font-weight: bold; + padding: 1rem 0 1rem 1rem; + } + + .cbi-section-descr { + font-weight: 600; + padding: 1rem 0 1rem 1rem; + color: #525f7f; + + } + + .cbi-page-actions { + padding: 0rem 1rem 1rem 0rem; + } + + .modal { + + + label > input[type="checkbox"] { + top: -0.25rem; + } + + .btn { + white-space: normal !important; + } + } + + .modal label > input[type="checkbox"] { + vertical-align: text-top; + top: auto; + } +} + +/* wireless overview */ +#cbi-wireless > #wifi_assoclist_table > .tr { + box-shadow: inset 1px -1px 0 #ddd, inset -1px -1px 0 #ddd; +} + +#cbi-wireless > #wifi_assoclist_table > .tr.placeholder > .td { + right: 33px; + bottom: 33px; + left: 33px; + border-top: thin solid #ddd !important; +} + +#cbi-wireless > #wifi_assoclist_table > .tr.table-titles { + box-shadow: inset 1px 0 0 #ddd, inset -1px 0 0 #ddd; +} + +#cbi-wireless > #wifi_assoclist_table > .tr.table-titles > .th { + border-bottom: thin solid #ddd; + box-shadow: 0 -1px 0 0 #ddd; +} + +#wifi_assoclist_table > .tr > .td[data-title="RX Rate / TX Rate"] { + width: 23rem; +} + +[data-page="admin-network-dhcp"] { + .cbi-value { + padding: 0; + + } + + [data-tab-active="true"] { + padding: 1rem 1rem !important; + } +} + +/* firewall */ +#iptables { + margin: 0; +} + +.Firewall form { + margin: 2rem 2rem 0 0; + padding: 0; + box-shadow: none; +} + +#cbi-firewall-redirect table *, +#cbi-network-switch_vlan table *, +#cbi-firewall-zone table * { + font-size: small; +} + +#cbi-firewall-redirect table input[type="text"], +#cbi-network-switch_vlan table input[type="text"], +#cbi-firewall-zone table input[type="text"] { + width: 5rem; +} + +#cbi-firewall-redirect table select, +#cbi-network-switch_vlan table select, +#cbi-firewall-zone table select { + min-width: 3.5rem; +} + +#cbi-network-switch_vlan .th, +#cbi-network-switch_vlan .td { + flex-basis: 12%; +} + +#cbi-firewall-zone .table, +#cbi-network-switch_vlan .table { + display: block; +} + +#cbi-firewall-zone .td, +#cbi-network-switch_vlan .td { + width: 100%; +} + +[data-page="admin-network-firewall-custom"], +[data-page="admin-status-routes"] { + #view { + p { + padding: 0 1.5rem; + margin-bottom: 1rem; + + textarea { + padding: 1rem; + border-radius: 0.25rem; + } + } + + & > h3 { + border-radius: 0.25rem 0.25rem 0 0; + } + } + +} + +/* applyreboot fix */ +#applyreboot-container { + margin: 2rem; +} + +#applyreboot-section { + line-height: 300%; + margin: 2rem; +} + +/* openvpn bug fix */ +.OpenVPN a { + line-height: initial !important; +} + +/* custom commands */ +.commandbox { + width: 24% !important; + margin: 10px 0 0 10px !important; + padding: .5rem 1rem; + border-bottom: thin solid #ccc; + background: #eee; + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05); +} + +.commandbox h3 { + line-height: normal !important; + overflow: hidden; + margin: 6px 0 !important; + white-space: nowrap; + text-overflow: ellipsis; +} + +.commandbox div { + left: auto !important; +} + +.commandbox code { + position: absolute; + overflow: hidden; + max-width: 60%; + margin-left: 4px; + padding: 2px 3px; + white-space: nowrap; + text-overflow: ellipsis; +} + +.commandbox code:hover { + overflow-y: auto; + max-height: 50px; + white-space: normal; +} + +.commandbox p:first-of-type { + margin-top: -6px; +} + +.commandbox p:nth-of-type(2) { + margin-top: 2px; +} + +[data-page^="admin-system-commands"] .panel-title, +[data-page^="command-cfg"] .mobile-hide, +[data-page^="command-cfg"] .showSide { + display: none; +} + +#command-rc-output .alert-message { + line-height: 1.42857143; + position: absolute; + top: 40px; + right: 32px; + max-width: 40%; + margin: 0; + animation: anim-fade-in 1.5s forwards; + word-break: break-word; + opacity: 0; +} + +@keyframes anim-fade-in { + 100% { + opacity: 1; + } +} + +/* other fix */ +input[type="checkbox"] { + appearance: none !important; + -webkit-appearance: none !important; + border: 1px solid var(--primary); + + width: 16px !important; + height: 16px !important; + padding: 0; + cursor: pointer; + transition: all 0.2s; + margin: 0.75rem 0 0 0; +} + +input[type="checkbox"]:checked { + border: 1px solid #5e72e4; + border: 1px solid var(--primary); + background-image: url('data:image/svg+xml,%3csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3e%3cpath fill=\'%23fff\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3e%3c/svg%3e') !important; + background-color: #5e72e4; + background-color: var(--primary); + background-size: 70%; + background-repeat: no-repeat; + background-position: center; +} + +.fb-container .cbi-button { + height: auto !important; +} + +#cbi-usb_printer-printer em { + display: block; + padding: 1rem; + text-align: center; +} + +pre.command-output { + padding: 1.5rem; +} + +[data-page="admin-nlbw-display"] .cbi-section[data-tab="export"] { + padding: 1.5rem !important; +} + +[data-page="admin-nlbw-backup"] form { + padding-left: 1.5rem; +} + +[data-page="admin-status-iptables"] .right { + margin-bottom: 0 !important; +} + +[data-page="admin-services-ttyd"] .container { + display: flex; + flex-direction: column; +} + +[data-page="admin-services-ttyd"] #view { + flex: 1; +} + +[data-page="admin-services-ttyd"] #view iframe { + height: 100%; +} + +[data-page="admin-system-fileassistant"] { + .fb-container .panel-title { + padding: .5rem .75rem !important; + } + + .cbi-section.fb-container { + padding: 0.5rem; + } + + .fb-container .panel-container { + border-bottom-color: #dee2e6; + } +} + +[data-page^="admin-services-openclash"] { + .cbi-tabmenu > li { + border-right: none !important; + margin: 0 0.4rem 0 0 !important; + + &:last-child { + margin-right: 0 !important; + } + } + + #tab-content .dom { + padding: 0 1rem 1rem 1rem; + } + + .cbi-input-file { + padding: 0.2813rem; + box-sizing: content-box; + width: 15rem !important; + } + + [id="container.openclash.config.debug"] fieldset { + border: none !important; + padding: 1rem !important; + } + + #diag-rc-output > pre, + #dns-rc-output > pre { + font-size: 0.875rem; + color: #8898aa; + border: 1px solid #dee2e6; + background-color: transparent; + border-radius: 0.25rem; + font-family: 'Google Sans' !important; + box-shadow: none; + } + + #debug-rc-output > textarea { + font-family: 'Google Sans' !important; + } + + .CodeMirror { + font-size: inherit; + font-family: 'Google Sans' !important; + } + + .cbi-button-up, .cbi-button-down { + padding: 0.8rem 1.5rem; + background-color: #f1f1f1; + font-size: 0; + } + + select#CORE_VERSION, + select#RELEASE_BRANCH { + width: auto; + } + + [id="container.openclash.config.version_update"] { + table tr:nth-of-type(n+1) { + + } + } +} + +/* IE hacks */ +@media all and (-ms-high-contrast: none) { + .main > .main-left > .nav > .slide > .menu::before { + top: 30.25%; + } + + .main > .main-left > .nav > li:last-child::before { + top: 20%; + } + + .showSide::before { + top: -12px; + } +} + +@media screen and (max-width: 1600px) { + header > .fill > .container > #logo { + margin: 0 2.5rem 0 .5rem; + } + + .main-left { + width: calc(0% + 13rem); + } + + + .btn:not(button), + .label { + padding: .5rem .75rem; + } + + + .cbi-value-title { + width: 15rem; + padding-right: .6rem; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"], + .cbi-value textarea { + min-width: 18rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 9rem; + } + + .cbi-input-textarea { + font-size: small; + } + + .node-admin-status > .main fieldset li > a { + padding: .3rem .6rem; + } +} + +@media screen and (max-width: 1366px) { + + + header > .fill > .container { + + cursor: default; + } + + + .main-left { + width: calc(0% + 13rem); + } + + + .tabs > li > a, + .cbi-tabmenu > li > a { + padding: .2rem .8rem; + } + + .panel-title { + font-size: 1.1rem; + padding-bottom: 1rem; + } + + table { + font-size: .875rem !important; + width: 100% !important; + } + + .table .cbi-input-text { + width: 100%; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"], + .cbi-value input[type="password"] { + min-width: 16rem; + } + + #cbi-firewall-zone .cbi-input-select { + min-width: 5.5rem; + } + + .main > .main-left > .nav > li, + .main > .main-left > .nav > li > a, + .main .main-left .nav > li > a:first-child, + .main > .main-left > .nav > .slide > .menu, + .main > .main-left > .nav > li > [data-title="Log_out"] { + font-size: .9rem; + } + + .main > .main-left > .nav > .slide > .slide-menu > li > a { + font-size: .875rem; + } + + #modal_overlay { + top: 0rem; + } + + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table) { + display: block; + } + + [data-page="admin-network-firewall-forwards"] .table:not(.cbi-section-table), + [data-page="admin-network-firewall-rules"] .table:not(.cbi-section-table), + [data-page="admin-network-hosts"] .table, + [data-page="admin-network-routes"] .table { + overflow-y: visible; + } + + .commandbox { + width: 32% !important; + } + + .btn:not(button), + .cbi-button { + font-size: 0.875rem; + + } +} + +@media screen and (max-width: 1152px) { + header > .fill > .container > #logo { + display: none; + } + + header > .fill > .container > .brand { + position: relative; + } + + html, + .main { + overflow-y: visible; + } + + .main > .loading > span { + top: 25%; + } + + .main-left { + width: calc(0% + 13rem); + } + + + body:not(.logged-in) .showSide { + visibility: hidden; + width: 0; + margin: 0; + } + + .node-main-login > .main .cbi-value-title { + text-align: left; + } + + .cbi-value-title { + width: 12rem; + padding-right: 1rem; + } + + .cbi-value-field .cbi-dropdown, + .cbi-value-field .cbi-input-select, + .cbi-value input[type="text"] { + width: 16rem; + min-width: 16rem; + } + + /*.cbi-value input[type="password"],*/ + .cbi-value input[name^="pw"], + .cbi-value input[data-update="change"]:nth-child(2) { + width: 13rem !important; + min-width: 13rem; + } + + #diag-rc-output > pre, + #command-rc-output > pre, + [data-page="admin-services-wol"] .notice code { + font-size: 1rem; + } + + .table { + display: block; + } + + .Interfaces .table { + overflow-x: hidden; + } + + #packages.table { + display: grid; + } + + .tr { + display: flex; + flex-direction: row; + flex-wrap: wrap; + } + + .Overview .table[width="100%"] > .tr { + flex-wrap: nowrap; + } + + .tr.placeholder { + border-bottom: thin solid #ddd; + } + + .tr.placeholder > .td, + #cbi-firewall .tr > .td, + #cbi-network .tr:nth-child(2) > .td, + .cbi-section #wifi_assoclist_table .tr > .td { + border-top: 0; + } + + .th, + .td { + display: inline-block; + align-self: flex-start; + flex: 2 2 10%; + text-overflow: ellipsis; + word-wrap: break-word; + } + + .td select, + .td input[type="text"] { + width: 100%; + word-wrap: normal; + } + + .td [data-dynlist] > input, + .td input.cbi-input-password { + width: calc(100% - 1.5rem); + } + + .td[data-type="button"], + .td[data-type="fvalue"] { + flex: 1 1 12.5%; + text-align: left; + } + + .th.cbi-value-field, + .td.cbi-value-field, + .th.cbi-section-table-cell, + .td.cbi-section-table-cell { + flex-basis: auto; + padding-top: 1rem; + } + + .cbi-section-table-row { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + } + + .td.cbi-value-field, + .cbi-section-table-cell { + display: inline-block; + flex: 10 10 auto; + flex-basis: 50%; + text-align: center; + } + + .td.cbi-section-actions { + vertical-align: bottom; + } + + .tr.table-titles, + .tr.cbi-section-table-titles, + .tr.cbi-section-table-descr { + display: none; + } + + .tr[data-title]::before, + .tr.cbi-section-table-titles.named::before { + font-size: .9rem; + display: block; + flex: 1 1 100%; + border-bottom: thin solid rgba(0, 0, 0, .26); + background: #e9ecef; + } + + .td[data-title], + [data-page^="admin-status-realtime"] .td[id] { + text-align: left; + } + + .td[data-title]::before { + display: block; + } + + .cbi-button + .cbi-button { + margin-left: 0; + } + + .td.cbi-section-actions > * > *, + .td.cbi-section-actions > * > form > * { + margin: 2.1px 3px; + } + + .Firewall form { + position: static !important; + margin: 0 0 2rem 0; + padding: 2rem; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .16), 0 0 2px 0 rgba(0, 0, 0, .12); + } + + .Firewall form input { + width: 100% !important; + margin: 0; + margin-top: 1rem; + } + + .Firewall .center, + .Firewall .center::before { + text-align: left !important; + } + + .commandbox { + width: 100% !important; + margin-left: 0 !important; + } + + .btn:not(button), + .cbi-button { + font-size: 0.875rem; + } +} + + +@media screen and (max-width: 768px) { + body { + font-size: .875rem; + } + + .cbi-progressbar::after { + font-size: .6rem; + } + + + .main-left { + position: fixed; + z-index: 100; + width: 0; + + &.active { + width: 13rem; + } + } + + .main-right { + width: 100%; + + &.active { + overflow-y: hidden; + } + } + + .darkMask.active { + display: block; + } + + .showSide { + padding: 0.1rem; + position: relative; + z-index: 99; + display: inline-block !important; + + &::before { + font-family: 'argon' !important; + font-style: normal !important; + font-weight: normal !important; + font-variant: normal !important; + text-transform: none !important; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + content: "\e20e"; + font-size: 1.7rem; + } + } + + + header > .fill > .container > .flex1 > .brand { + display: inline-block; + } + + + .main > .main-left > .nav > .slide > .slide-menu > li > a { + font-size: 0.875rem; + } + + +} + +@media screen and (max-width: 600px) { + .mobile-hide { + display: none; + } + + #maincontent > .container { + margin: 0 1rem 1rem 1rem; + } + + .cbi-value-title { + text-align: left; + } + + .cbi-dynlist p { + padding: 0.5rem 1rem; + } + + body { + overflow-x: hidden; + } + + .node-main-login .main .main-right #maincontent .container .cbi-map .cbi-section .cbi-section-node .cbi-value .cbi-value-field { + width: 16rem; + } + + .node-main-login footer { + display: none; + } + + .tabs, + .cbi-tabmenu { + &::-webkit-scrollbar { + width: 0px; + height: 0px; + } + } + + .cbi-value-field, + .cbi-value-description { + display: block !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + + [data-page="admin-system-admin-password"] .cbi-value-field { + display: table-cell !important; + } + + .modal.cbi-modal { + max-width: 100%; + max-height: none; + } + + .modal { + display: flex; + align-items: center; + flex-wrap: wrap; + width: 100%; + min-width: 270px; + max-width: 600px; + min-height: 32px; + margin: 5em auto; + padding: 1em; + border-radius: 3px !important; + background: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 2px 0 rgba(0, 0, 0, 0.12); + } + + .cbi-dropdown[open] > ul.dropdown { + margin-bottom: 1rem; + } + + .login-page .login-container footer { + display: none; + } +} + + +@media screen and (min-width: 600px) { + ::-webkit-scrollbar { + width: 10px; + height: 10px; + } + + ::-webkit-scrollbar, + ::-webkit-scrollbar-corner { + background: transparent; + } + + ::-webkit-scrollbar-thumb { + background: var(--primary); + border-radius: 10px; + } + + ::-webkit-scrollbar-thumb:hover { + background: var(--primary); + } + + ::-webkit-scrollbar-thumb:active { + background: var(--primary); + } +} + + +@media screen and (max-width: 480px) { + .mobile-hide { + display: none; + } + + .login-page .login-container { + margin-left: 0rem !important; + width: 100%; + + .login-form { + .form-login { + .input-group { + &::before { + color: #525461; + } + + input { + color: #525461; + border-bottom: white 1px solid; + border-bottom: var(--white) 1px solid; + border-radius: 0; + } + + } + } + } + + } + + +} diff --git a/luci-theme-argon/less/dark.less b/luci-theme-argon/less/dark.less new file mode 100644 index 000000000..0b666b359 --- /dev/null +++ b/luci-theme-argon/less/dark.less @@ -0,0 +1,1154 @@ +// out: ../htdocs/luci-static/argon/css/dark.css, compress: true , sourceMap: false +/** + * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template + * + * luci-theme-argon + * Copyright 2023 Jerryk + * + * Have a bug? Please create an issue here on GitHub! + * https://github.com/jerrykuku/luci-theme-argon/issues + * + * luci-theme-bootstrap: + * Copyright 2008 Steven Barth + * Copyright 2008 Jo-Philipp Wich + * Copyright 2012 David Menting + * + * MUI: + * https://github.com/muicss/mui + * + * luci-theme-material: + * https://github.com/LuttyYang/luci-theme-material/ + * + * Agron Theme + * https://demos.creative-tim.com/argon-dashboard/index.html + * + * Login background + * https://unsplash.com/ + * + * Licensed to the public under the Apache License 2.0 + */ + + +body { + background: #1e1e1e; + color: #cccccc; +} + +.login-page .login-container { + + .login-form { + background-color: #1e1e1e; + -webkit-backdrop-filter: blur(var(--blur-radius-dark)); + backdrop-filter: blur(var(--blur-radius-dark)); + background-color: rgba(0, 0, 0, var(--blur-opacity-dark)); + + .brand { + color: #adb5bd; + } + + .form-login { + .input-group { + &::before { + color: #adb5bd; + } + + input { + background-color: transparent !important; + color: #adb5bd; + border-bottom: #adb5bd 1px solid !important; + border-radius: 0 !important; + border-top: none !important; + border-left: none !important; + border-right: none !important; + box-shadow: none; + } + + } + + .cbi-button-apply { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + + &:hover, + &:focus { + opacity: 0.9; + } + } + } + } + +} + +header::after { + background-color: #1e1e1e !important; +} + + +.main { + .main-left { + + background-color: #333333 !important; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .15); + + .sidenav-header .brand { + color: #cccccc; + } + + .nav { + .slide { + .slide-menu { + .active { + a { + color: #cccccc; + + &::after { + background-color: #cccccc !important; + } + } + + &::after { + background-color: var(--dark-primary) !important; + } + } + + li { + a { + color: #cccccc; + } + + a:hover { + background: none !important; + } + + &::after { + background-color: var(--dark-primary) !important; + } + } + } + + .menu.active { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + color: #ffffff !important; + + a::after { + background-color: #ffffff !important; + } + } + } + + li { + a { + color: #cccccc !important; + } + + a:hover { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + color: #ffffff !important; + } + + } + } + + + &::-webkit-scrollbar-thumb { + background-color: #252526 !important; + } + + &::-webkit-scrollbar-track { + background-color: #333; + } + } + + .main-right { + background-color: #1e1e1e; + } +} + +h2 { + color: #ccc; + background: #333333; +} + +h3 { + color: #ccc; + border-bottom: 0; + background: #333333; +} + +h4 { + color: #8C6900; +} + +abbr { + color: var(--dark-primary) !important; +} + +a:link, a:visited, a:active { + color: #a5b2ff; +} + + +input:-webkit-autofill { + background-color: #3c3c3c !important; +} + +#channel_graph { + background-color: transparent !important; +} + +.cbi-value-field .cbi-input-apply, +.cbi-button-apply, +.cbi-button-edit { + color: #fff !important; + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + border-color: #483d8b !important; + border-color: var(--dark-primary) !important; +} + + +.cbi-section em { + color: #ccc; +} + +header.bg-primary { + background-color: #1e1e1e !important; +} + +.cbi-map-descr { + color: #ccc; +} + +.cbi-section { + background: none; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35) +} + +.panel-title { + color: #ccc; + background-color: #333333; +} + +div > table > tbody > tr:nth-of-type(2n), +div > .table > .tr:nth-of-type(2n) { + background-color: #252526; +} + +table > tbody > tr > td, +table > tfoot > tr > td, +table > thead > tr > td { + color: #cccccc; +} + +fieldset > table > tbody > tr:nth-of-type(2n) { + background-color: #252526; +} + +table > tbody > tr > td, +table > tfoot > tr > td, +table > thead > tr > td { + border-top: 1px solid #252526; +} + +#swaptotal > div > div, +#swapfree > div > div, +#memfree > div > div, +#membuff > div > div, +#conns > div > div, +#memtotal > div > div { + background-color: var(--dark-primary) !important; +} + +#swaptotal > div > div > div > small, +#swapfree > div > div > div > small, +#memfree > div > div > div > small, +#membuff > div > div > div > small, +#conns > div > div > div > small, +#memtotal > div > div > div > small { + color: #ccc !important; +} + +.node-system-packages > .main .cbi-section-node:first-child .cbi-value-last { + line-height: 1.8em; + + div[style="margin:3px 0; width:300px; height:10px; border:1px solid #000000; background-color:#80C080"] { + border: 1px solid #999999 !important; + background-color: transparent !important; + + div { + background-color: #ba8b00 !important; + } + } + +} + +table > tbody > tr > th, +table > tfoot > tr > th, +table > thead > tr > th { + background-color: #252526; + border-bottom: black 1px solid !important; +} + +tr > td, +tr > th, +.tr > .td, +.tr > .th, +.cbi-section-table-row::before, +#cbi-wireless > #wifi_assoclist_table > .tr:nth-child(2) { + border-top: 0; +} + +.cbi-rowstyle-2 { + background-color: #1e1e1e; +} + +.cbi-rowstyle-1 { + background-color: #252526; +} + +.cbi-rowstyle-2 .cbi-button-up, +.cbi-rowstyle-2 .cbi-button-down, +body:not(.Interfaces) .cbi-rowstyle-2:first-child { + background-color: rgb(102, 102, 102) !important; +} + +.cbi-section > h3:first-child, +.panel-title, +h3 { + color: #ccc; +} + +h4 { + background-color: #1e1e1f; +} + +.cbi-progressbar { + background: #282a2c; + + div { + background-color: var(--dark-primary) !important; + } +} + +.cbi-section-table .cbi-section-table-titles .cbi-section-table-cell { + background-color: #1e1e1f; +} + +.cbi-button { + color: #ffffff !important; + background-color: #483d8b; + background-color: var(--dark-primary); +} + +.cbi-section-node { + background: none; +} + +abbr { + color: #5e72e4; +} + +div > table > tbody > tr:nth-of-type(2n), +div > .table > .tbody > .tr:nth-of-type(2n) { + background-color: #252526; +} + +#content_syslog { + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35) +} + +#syslog { + color: #ccc; + background-color: #1e1e1e; +} + +#iwsvg, +#iwsvg2, +#bwsvg { + overflow: hidden; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); + background-color: #1e1e1e !important; +} + +.tabs { + background-color: #252526; + + li[class~="active"], + li:hover { + cursor: pointer; + color: #ccc !important; + + a { + color: #ccc !important; + } + } +} + +.tabs > li[class~="active"] > a { + color: #ccc; +} + +.tabs > li[class~="active"], +.tabs > li:hover { + border-bottom: 0.18751rem solid #483d8b; + border-bottom: 0.18751rem solid var(--dark-primary); + color: var(--dark-primary) !important; + background-color: #181819; +} + +.cbi-tabmenu > li > a, +.tabs > li > a { + color: #ccc; + + &:hover { + color: #ccc; + } +} + +.cbi-tabmenu > li { + background: #2d2d2d; +} + +.cbi-tabmenu li[class~="cbi-tab"] a { + color: #ccc; +} + +.cbi-tabmenu > li:hover { + color: #ccc; + background: #2d2d2d; + border-bottom: 0.18751rem solid var(--dark-primary) !important; +} + +.cbi-tabmenu > li[class~="cbi-tab"] { + background-color: #181819; + border-bottom: 0.18751rem solid var(--dark-primary) !important; +} + +.cbi-tabcontainer > .cbi-value:nth-of-type(2n) { + background-color: #252526; +} + +.cbi-value-title { + color: #ccc; +} + +select, +input { + color: #ccc; + background-color: transparent !important; + border: 1px solid #252526; + box-shadow: none; +} + + +select:not([multiple="multiple"]):focus, +input:focus { + border-color: #483d8b !important; + border-color: var(--dark-primary) !important; + outline: 0; + +} + +select:not([multiple="multiple"]):focus, +input:not(.cbi-button):focus, +.cbi-dropdown:focus { + border-color: #5e72e4; + border-color: var(--dark-primary) !important; +} + +select { + background-color: #1e1e1e !important; +} + +#cbi-dropbear h2, +#cbi-dropbear .cbi-map-descr, +#cbi-dropbear .cbi-map-descr abbr, +#cbi-rc h2, +#cbi-rc .cbi-map-descr, +#cbi-distfeedconf h2, +#cbi-distfeedconf .cbi-map-descr, +#cbi-customfeedconf h2, +#cbi-customfeedconf .cbi-map-descr, +#cbi-download h2, +#cbi-filelist h2 { + color: #ccc !important; +} + +.cbi-value-field > ul > li .ifacebadge { + background-color: #3c3c3c; +} + +.cbi-section-descr { + color: #ccc; +} + +.cbi-input-textarea { + background-color: #1e1e1e; + color: #ccc; + border: 1px solid #3c3c3c !important; +} + +textarea { + &:focus-visible { + border: 1px solid var(--dark-primary); + } +} + + +.cbi-section-remove:nth-of-type(2n), +.cbi-section-node:nth-of-type(2n) { + background-color: #1e1e1e; +} + +.node-system-packages > .main table tr td:nth-last-child(1) { + color: #ccc; + +} + +.cbi-tooltip { + background-color: var(--primary); + color: #fff; +} + +.ifacebox { + background-color: transparent !important; + border: 1px solid #1e1e1e; +} + +.ifacebox-head { + color: #ccc; + background: #666; +} + +.ifacebox-body { + background-color: #333; +} + +.zonebadge strong { + color: #333; +} + +.zonebadge > .ifacebadge { + background-color: #3c3c3c; +} + +div.cbi-value var, +td.cbi-value-field var { + color: #5e72e4; +} + +#diag-rc-output > pre { + color: #ccc; + background-color: #1e1e1e; +} + +.node-services-vssr .block { + background-color: #3c3c3c !important; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); +} + +.node-services-vssr .block h4 { + color: #ccc !important; +} + +.node-services-vssr .status-bar { + color: #ccc; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); + background-color: #1e1e1e; +} + +.node-services-vssr .cbi-section-table-row { + color: #ccc; + background-color: #3c3c3c !important; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, .35) +} + +.node-services-vssr .cbi-section-table-row.fast { + background: #483d8b !important; + background: var(--dark-primary) !important; + color: #fff; +} + +.node-services-vssr .ssr-button { + color: #ccc; + +} + +.node-services-vssr .incon:nth-child(2) { + border-right: #1e1e1e 1px solid; +} + +#xhr_poll_status > .label.success { + color: #ccc !important; + + background-color: darkolivegreen !important; +} + +.notice { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; +} + +.cbi-input-find, +.cbi-input-save, +.cbi-button-add, +.cbi-button-save, +.cbi-button-find, +.cbi-input-reload, +.cbi-button-reload { + color: #fff !important; + background: darkolivegreen !important; + border-color: darkolivegreen !important; +} + +.cbi-button-reset, +.cbi-input-remove { + color: #fff !important; + background-color: darkorange !important; + border-color: darkorange !important; +} + +.cbi-page-actions .cbi-button-apply, +.cbi-section-actions .cbi-button-edit, +.cbi-button-edit.important, +.cbi-button-apply.important, +.cbi-button-reload.important, +.cbi-button-action.important { + border: 1px #483d8b solid !important; + border: 1px var(--dark-primary) solid !important; +} + +.btn[value="Dismiss"], +.cbi-button[value="Terminate"], +.cbi-button[value="Reset"], +.cbi-button[value="Disabled"], +.cbi-button[onclick^="iface_reconnect"], +.cbi-button[onclick="handleReset(event)"], +.cbi-button-neutral[value="Disable"] { + color: #fff; + border: thin solid darkorange !important; + background-color: darkorange !important; +} + +fieldset[id^="cbi-apply-"] { + background-color: #333333; +} + +#detail-bubble > div { + border: 1px solid #ccc; + background: #252525; +} + +.ifacebox-head.active { + background-color: var(--dark-primary) !important; +} + +header .fill .status span[data-style="active"] { + color: #ccc !important; + background-color: darkolivegreen !important; +} + +#cbi-wireless .td, +#cbi-network .tr:first-child > .td, +.table[width="100%"] > .tr:first-child > .td, +[data-page="admin-network-diagnostics"] .tr > .td, +.tr.table-titles > .th, +.tr.cbi-section-table-titles > .th { + background-color: #252526; + border-bottom: black 1px solid !important; + +} + +.network-status-table .ifacebox-body .ifacebadge { + background-color: #252526; + border-bottom: 0; + box-shadow: none; +} + +td > .ifacebadge, +.td > .ifacebadge { + color: #fff; + background-color: #483d8b; + background-color: var(--dark-primary); + border: 0; +} + +.alert, .alert-message { + background-color: #333; +} + +.alert-message.warning { + background-color: #986400 !important; +} + +.alert.error, .alert-message.error { + background-color: #784f00; +} + +.alert h4, .alert-message h4 { + background-color: #784f00; + color: #ffbf00; +} + +.alert-message [class="btn"] { + background-color: #777777; + color: #ccc; +} + +.uci-dialog { + .cbi-section { + + .uci-change-legend { + + .uci-change-legend-label { + + > ins { + border-color: #00ad00; + background-color: #688668; + } + + > del { + border-color: #c60000; + background-color: #896565; + } + + > var { + background-color: #333; + border-color: #666; + + ins { + background-color: #688668; + } + + del { + background-color: #896565; + } + } + } + } + + .uci-change-list { + > var { + background-color: #333; + border-color: #666; + + del { + background-color: #896565; + } + + ins { + background-color: #688668; + } + } + + > ins { + border-color: #00ad00; + background-color: #688668; + } + + > del { + border-color: #c60000; + background-color: #896565; + } + } + + .uci-change-list + .right { + .btn { + color: #ccc; + } + + .cbi-button { + border: 1px solid #3c3c3c !important; + } + } + } +} + +.btn.danger, +.cbi-section-remove > .cbi-button, +.cbi-button-remove, +.cbi-button-reset, +.cbi-button-negative, +.cbi-button[value="Stop"], +.cbi-button[value="Kill"], +.cbi-button[onclick="reboot(this)"], +.cbi-button-neutral[value="Restart"] { + border: thin solid darkorange !important; + background-color: darkorange !important; +} + +.cbi-section, +.cbi-section-error, +#iptables, +.Firewall form, +#cbi-network > .cbi-section-node, +#cbi-wireless > .cbi-section-node, +#cbi-wireless > #wifi_assoclist_table, +[data-tab-title], +[data-page^="admin-system-admin"]:not(.node-main-login) .cbi-map:not(#cbi-dropbear), +[data-page="admin-system-opkg"] #maincontent > .container { + background: #1e1e1e !important; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, 0.35); +} + +div[style="width:100%;height:300px;border:1px solid #000;background:#fff"] { + background: transparent !important; +} + +[data-page="admin-system-admin"] .cbi-map h2, +[data-page="admin-system-admin-password"] .cbi-map h2, +[data-page="admin-system-admin"] .cbi-map .cbi-map-descr, +[data-page="admin-system-admin-password"] .cbi-map .cbi-map-descr { + color: #ccc; +} + +[data-page="admin-system-flash"] { + .modal { + label > input[type="checkbox"] { + top: -0.35rem; + } + + .btn { + white-space: normal !important; + background-color: darkseagreen; + } + + .alert-message { + background-color: transparent !important; + } + + .danger { + border: thin solid darkorange !important; + background-color: darkorange !important; + } + } +} + +.cbi-value input[type="password"] + .cbi-button-neutral { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + border-color: var(--dark-primary) !important; +} + +.btn, +button, +select, +input, +.cbi-dropdown { + border: 1px solid #3c3c3c !important; +} + + +.cbi-dropdown .preview { + color: #ccc; +} + +.cbi-section-table-row { + background-color: #1e1e1e !important; +} + +.modal { + background-color: #1e1e1e; +} + +.cbi-button-positive { + color: #fff !important; + background-color: darkolivegreen !important; +} + +[data-page="admin-system-flash"] legend { + color: #ccc; +} + +.logout:before { + color: #adb5bd !important; +} + +.cbi-dropdown[open] { + border-color: #483d8b !important; + border-color: var(--dark-primary) !important; +} + +.cbi-dropdown[open] > ul.dropdown { + background: #252526 !important; + color: #ffffff !important; + box-shadow: none; + border: 1px solid #3c3c3c !important; + + +} + +.cbi-dropdown[open] > ul.dropdown li { + color: #ffffff; + border-bottom: 1px solid #3c3c3c !important; +} + +.cbi-dropdown[open] > ul.dropdown > li[selected] { + background-color: #483d8b !important; + background-color: var(--dark-primary) !important; + border-bottom: 1px solid #3c3c3c !important; +} + +.cbi-dropdown[open] > ul.dropdown > li.focus { + background: #483d8b; + background: var(--dark-primary); + outline: none; +} + +.ifacebadge { + background-color: #333333; +} + +.cbi-dynlist > .item > span { + border: 1px solid #3c3c3c !important; +} + +.cbi-page-actions .cbi-button-apply, +.cbi-section-actions .cbi-button-edit, +.cbi-button-edit, +.cbi-button-apply, +.cbi-button-reload, +.cbi-button-action, +.cbi-button[value="Submit"], +.cbi-button[value="Upload"], +.cbi-button[value$="Apply"], +.cbi-button[onclick="addKey(event)"] { + background: #483d8b !important; + background: var(--dark-primary) !important; + border-color: var(--dark-primary) !important; +} + +.btn.primary, +.cbi-page-actions .cbi-button-save, +.cbi-page-actions .cbi-button-apply + .cbi-button-save, +.cbi-button-add, +.cbi-button-save, +.cbi-button-positive, +.cbi-button-link, +.cbi-button[value="Enable"], +.cbi-button[value="Scan"], +.cbi-button[value^="Back"], +.cbi-button-neutral[onclick="handleConfig(event)"] { + background: #483d8b; + background: var(--dark-primary); +} + +[data-page="admin-system-opkg"] h2 { + color: #ccc !important; +} + +[data-page="admin-system-startup"] textarea { + color: #ccc; + background-color: transparent; + + &:focus-visible { + border: 1px solid var(--dark-primary); + } +} + +[data-page="admin-network-firewall-custom"] #view p textarea, +[data-page="admin-status-routes"] #view p textarea, +[data-page="admin-system-crontab"] #view p textarea { + color: #ccc; + background-color: transparent; +} + +#view > .spinning { + background: #333333 !important; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.03) !important; +} + +@media screen and (min-width: 600px) { + + ::-webkit-scrollbar-thumb { + background: var(--dark-primary); + } + + ::-webkit-scrollbar-thumb:hover { + background: var(--dark-primary); + } + + ::-webkit-scrollbar-thumb:active { + background: var(--dark-primary); + } +} + + +@media screen and (max-width: 480px) { + .node-status-iptables > .main div > .cbi-map > form { + background-color: #1e1e1e; + box-shadow: 0 0 0.5rem 0 rgba(0, 0, 0, .35); + } + + +} + +[data-page="admin-dashboard"] { + .main-right > #maincontent { + .Dashboard { + color: #ccc !important; + + h3 { + color: #ccc; + } + + hr { + border-top: 1px solid rgba(255, 255, 255, 1); + } + + .dashboard-bg { + background-color: #333333; + } + } + + .router-status-info .title img, + .lan-info .title img, + .wifi-info .title img { + filter: invert(90%); + } + + tr { + border-top: thin solid #4d4d4d; + + &:last-child { + border-bottom: thin solid #4d4d4d; + } + } + } +} + +[data-page="admin-system-fileassistant"] { + .fb-container .panel-container { + border-bottom-color: #3c3c3c !important; + } + + .fb-container td[class$="-icon"]::before { + filter: invert(0.7); + } +} + +[data-page^="admin-services-openclash"] { + .cbi-tabmenu::-webkit-scrollbar-thumb { + background-color: #5b5b5b; + } + + .cbi-tabmenu::-webkit-scrollbar-track { + background-color: rgba(60, 60, 60, 0.75); + } + + #tab { + border-color: #3c3c3c; + } + + #diag-rc-output > pre, + #dns-rc-output > pre { + color: #ccc; + border: 1px solid #3c3c3c !important; + background-color: #1e1e1e; + } + + img[src$="arrow-clockwise-light.svg"], + img[src$="wrench-light.svg"], + img[src$="eye-light.svg"] { + filter: invert(0.9); + } +} + +[data-page="admin-network-diagnostics"] { + .cbi-section { + background: #252526 !important; + } + + textarea { + background: transparent; + border-radius: 0.25rem; + color: #ccc; + border: 1px solid #3c3c3c !important; + } + + .tr > .td { + background-color: #252526 !important; + } +} + +[data-page="admin-network-network"] { + .ifacebox-head[style*="--zone-color-rgb: 144, 240, 144"] { + background-color: rgb(73, 126, 73) !important; + color: #ccc !important; + } + + .ifacebox-head[style*="--zone-color-rgb: 240, 144, 144;"] { + background-color: rgb(156, 79, 79) !important; + color: #ccc !important; + } + + .ifacebox-head[style*="--zone-color-rgb: 238, 238, 238;"] { + background-color: #666 !important; + } +} + +[data-page="admin-network-firewall-rules"] { + #cbi-firewall-rule { + .zonebadge[style*="--zone-color-rgb:240, 144, 144;"] { + --zone-color-rgb: 156, 79, 79 !important; + + strong { + color: #ccc !important; + } + } + + .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] { + --zone-color-rgb: 112, 112, 112 !important; + + em { + color: #ccc !important; + } + } + + > table > .cbi-section-table-row[data-title]::before { + background-color: #252526 !important; + } + } +} + +[data-page="admin-network-network"], +[data-page="admin-network-firewall-rules"] { + .cbi-dropdown { + .zonebadge[style*="--zone-color-rgb:240, 144, 144;"] { + --zone-color-rgb: 156, 79, 79 !important; + color: #ccc !important; + + strong { + color: #ccc !important; + } + } + + .zonebadge[style*="--zone-color-rgb:144, 240, 144;"] { + --zone-color-rgb: 73, 126, 73 !important; + color: #ccc !important; + + strong { + color: #ccc !important; + } + } + + .zonebadge[style*="--zone-color-rgb:238, 238, 238;"] { + --zone-color-rgb: 112, 112, 112 !important; + + strong { + color: #ccc !important; + + + span { + color: #ccc !important; + } + } + } + } +} + +.btn { + background-color: rgb(112, 112, 112); + color: #fff; +} \ No newline at end of file diff --git a/luci-theme-argon/less/fonts.less b/luci-theme-argon/less/fonts.less new file mode 100644 index 000000000..c264b8749 --- /dev/null +++ b/luci-theme-argon/less/fonts.less @@ -0,0 +1,190 @@ +// out: false +/** + * Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material and Argon Template + * + * luci-theme-argon + * Copyright 2020 Jerryk + * + * Have a bug? Please create an issue here on GitHub! + * https://github.com/jerrykuku/luci-theme-argon/issues + * + * luci-theme-bootstrap: + * Copyright 2008 Steven Barth + * Copyright 2008 Jo-Philipp Wich + * Copyright 2012 David Menting + * + * MUI: + * https://github.com/muicss/mui + * + * luci-theme-material: + * https://github.com/LuttyYang/luci-theme-material/ + * + * Agron Theme + * https://demos.creative-tim.com/argon-dashboard/index.html + * + * Login background + * https://unsplash.com/ + * + * Licensed to the public under the Apache License 2.0 + */ + + +@font-face { + font-family: 'Google Sans'; + src: url('data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAFW8ABIAAAAA2DgAAFVQAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGoI0G9x4HKUeBmAAhAIIgTwJnnURDAqB3UiBvQwLhQIAATYCJAOKAAQgBYRnB41NDIQAGz7EJ5hubiR/lNsGgFCW81d/0QXsVni3jdDeRWCO9bMDLTIPKCA+/y/Z//+fkJyM4UAPm1rm+7lslg6TcoycK1yhVF4Fd00lKYMnOBQOl+CKjFHEfIuq31ySSDU87HzeHbmNsgX6LmfjlEVKdIfIiz8bD8xUr+9MmpvlGb1NBxps4YKro8j/gJhCqGbPZIYkd4vYzcfT4a9PuRMK1fqG8BHfIPbCDjeuZ6suWAX5jxolVYEh44GfRhVJC1foEkk8ZPN8ThiPb2Zfje53BraN/ElOXvKI5mxmT3NJ7iJGEsIRQpAHr2BNUKtRatQcqkaVquqL1cT5Maf1erYl2ZYt2Y7NSexwE7dNZtIOdXbTBeauPmsJ8Aj0T4BwIkCe/3//nneufb+MkK7UgargKiNVKhgd+M71OfX3WU46s2sXGR/YVhOl6LTpR46u1rVA7ACCZBUAjp8o3Mb9lkK1dKPgAG3zf8E2llgYIAISdWTLHRx5CMgBCta0Z+Yi8y26//uuIl7Upl9vc3NFk6a+oqmuTstV4J34R2wRW6D7iC1iD4lt5DPMIndJQKjb7i/yLJQwkilFFrz0kxpam69aImwe0hqlvfiZvTRCyIsFK01LLM+5vft/iRJkBjXyID++8zyztHK0ApYyAN3XB5lsaKEsacguL5LNAiXRF8D/oLvjThiR0QEHbnKVpma4F8Ugg/DXnlLKlGXNsOzxP23mSrItA2l9zP8u3ycdwQYI5JSZecHdcFGlalI0R9D0KTqgok5+WAxd6f63u6eRj+q9CXdo69XN5KtJEAtaQtOFkr7K/9/rrE7t7tPTB4HLM8hMgI7y6cM5MBF33OIOaUVPiMtZzSxW79/3pP/ff/rSR+Cxvii5VFBBAocPsn2E7KmWhKtbklV1oMpTB9MhJwEdcCaUp1OIq0l5swghLpazXKawWK6Gf74//FfzZk+oL3saDF7HlHooeFOatUIB++qhUgkCJDmas3+bXh6TsM84QAmoZDsz6TTd5PoA8LOQmdmdDZQ+ALhvhD+oyYFTHHJazVNvizXT+8jAj7G0980AExtN61DFowRRiLv/PHayHp9a0B0WnsjDXSIiXQkllBBCF0oQEff/vSxnF7o5nXlFU5OJPj4V4GwYS234pLXfe5s1USMRFBQQBATU9LoBACfh4oM7vwQvu0sn4cpHYU92pYpIjb4EC92Zetc9xH33aYMe+I74EQ+MN17EJwZhakiSq1R7vY0w1WKrbbbbYaf95ZJbHnkF0TBpPIePCpt/djVsZWR5EC5ahdZT66M1dtMRTj/xncj3hKCBtuhttstvANajW3t2Bffxde26QMwp+b3LwYMGv3Cv+/d8PPnYnuXAMwDAy5E6ulMexR1DNflkFvod7PdoXGrqP3pUWEd+VHhn/szwKwL9hQYgcovi4ZGuvcHmW2mznTY77CzC0MDUDMVIYCHwwUCGZvi3Odz1CVetURG1FGMigUav2tHQlL29GxodFjmMA3S97S4TSQPTPWhmIMwNfHpKpDENIgOuXc+LviRYLaFSGPX7d2IikYGRiZmFDzt/AbxuhkYRSGQ0gMnu4ChAtXo9umo029STHgjT+J5xKDojxNjpNfUVjHgbLwg1ZkAT0CSEBtIidBgVUOXK+t0f0J8o/6BcQNy6w2CE+M3SE44BYUIxQxY8n2EAoodOHTbn3zAEShINLR2PMhUCRif/rCIXUqRPKYF3RF6odwIhpzF93wsQZIRdnzbYNRB9zKWRhKg0iXla1/N4SEAvWQ2NpEHfC1oJF+/YnojlTTEfq5iWEnCjwevU0gri4r9i88tF7WgwUiGkVD/tD1EiFDVB1dBDKWKiN886QDYU+0U24gIcIhHPl0SkJdLR0NMysDLetUGeYcyQOZ+t4wLkZhHKIhwvhkUNFrURcfzFoySgJWIkYaWvCpmyqeRSqkelPrUGVEpIepP14acftUGr3QhjoSqccavFTHNZzF8tFljM35KvsbLD5dZSWGcTle3NqrfHXir7qZxgcYbKnxyucLhBdIXgJpNHFzWJjuyJj+QkR35JnxMgN7dUexMQK/59ATlhgCIy6Gl7j+JtIjVUVoiotBQZvgUaDDljqIsFCJreUYsXU93H7f3BIWH4Xs7cgbtTCpfkRfNO5ahS61VRZ2WTynTcK82OpjwX2DLutqxe8kDLzbJ3tVpbETIjFt5i0c1bZHrtKlNcBAkQYIKCWwEI5zTjyAxXImpDrmCJxJUSg14yQFuawyhohzYjl28VKBVmmQhl8lbLX5TMBDbAksc8zlfiklGQMFEb2BoFGDVXQkOEM40sDBqGEZwLhimh4cDXipjs+t4RkoXziEweUaLttfbzL2iaFMiJPaoQYkeXjT+Zndk0QNdCj6yNkAQwiqp3sSrWQev9CDxmwWOCqwW6ZWG/l6Np7NnoO0bJO7eQPmf5D7VBAKvYlsBPBpVNoq2iXTFVn/SayBX5o8ejvmMNq9TEer1EBsyI61ulMz0eE2hGxm6aNkcLW+mLSt9Lxo5SUAagLYpaiuJV3dxiEHEAXh52/qC1m3I9PuNjakm/bgx14REhjDWacX3cjR4/AJipRwvxYCdJltYUP0iBgzzlB8vrVgMlDMNIMvA90+qCYEjCIDkhvDgUxT8gOcfUBmL6oWdA3wTMyiM3diwB5bjLAYiHADPuj89t2E0QHLshBatAAw68p7GCx/zrj1mAGMsFZTDuAmdOaEl+WGXNtOTQ8prKKNiJGqQ83ETJ0c4YyAgA4INZGWIZ6ofaTE0nL7CrNwkkrpJDueV+GJZSiizdVEw+GLupU7XzfR/51FIWeUgcTg8MMALKwXJuG1ru/NwUSocY65eyrkuSDHsWYIZp9sJxe7OdJVnYTHAugQPkRgShBKOFYISurN+E4YRTiCCIXJWiROPEUImlVoNKTaJaJLVpxNGKp5NAL5FBEqM6TKrQxq3EeJPQJq+cKabhTUeZMdwJL1WqtNtoKZid+DoNMT7Tqg0gjnmJhsDrbwEQIUEEf0l8ASSLAlAHgJddCigg9pjj4thYLg8DazG/8fEICo0hY9UA4AMAIBZAgCDK3uUptpRLOL2876ukphQyqqO/7JNOOcHfvHpxVKKdnIBzRK08X9MqiW5hJMfU4weBqjkwEGjFHgBE/egsgCABrcrtgdwClQ1/xPUAKOlzJkFMJ4DlHXK+T6IR8z5gFSEarS0EzX8gNM5PNJjoJgmai8eVRpjLar6loqVw/jhkSHs0UGwxaCO7UIPDPTU9LPS/RzUx42XW1PveqTa3s7HcbO5zZ3pCJozeQjP5QOu+OQDcCiOjE6m+F5zlxszn6onYZRjr6bARPii1VwI1E9ZhOLfeANB7bM+5IV9SYwulUhY+ETS+U4i0KzvtSKNtKImXiJzbXXy44wTXL6OFG1pjRl9nsEuR2u3XrBbOz8DUSiVPV95Apkmbwd5S0/ZXG2ebGG4OChhPecLXNYkrFPOBmSJvsywSji+xyDEZGMaAollBZ5HR8ZglBOjHZpDgOYGWfygwMZUy1O0mQEZxNLrw6VjXuS1A02MuG8a43W4jjKvvwzAk0m6hoZJrdkbuCzAqv7smhjUxEtA3w8Y571NNvZ9zn16mKq/vSQqUuAEjDPXox7GRlKo3oakoLz01Ga3nhAYX5uayOa8TuP6tBIJG2a+P7K6JL4gkGQOUichCyUbLwcjFyiPKxysgKKRUtKoUq0tUj6Q+jQa0GtIpodeIQSmjxkyaMGvKohkfzVn1Y7QMZy3aupVYbxPa5pW3xTYK29nsGPHWJ+lzyQGHGR0BH0ehY3wcp3YS7Qn0FOMZ9JzoBd5LgleUXlN5w+At0Tu89wQfKH2k8mk1+OwLxlcG3zC+X25A5FDwo2Ij8aXlS8fMwp9VCCeD2gLEc0kQKImbl0oym1Q+0qGMJ1qZ3EWi0qY+aB4U0bKWLjp9dKaY2Cxx8SkStlJLYtONUz96QwSrJFvCbdlob+3C62yeEq/Qp5KtthE5zZouOjpLQtqE07o7f4LRX4L8ff3Gbxv9C0H+43CBr4ucLgl2jd2tvzN74hPis690vvmOReRVuuagoC9bLbOXzX7HxWacpAc0P66DDGiNBuyYfg+YBJjZ/4OXLnH5Xqd1d2JA1rbvgxsFW6f4hDhcP0+4NSBgNA9UwBUqzHpLS5TudCMpe/3EymcWNERMAjqAFPacDiG7qEs0ggNa4J2NU4qNMezqqwUAsh7E9YCa9y75E/D1YTYZwb4xAHo/jt3UpjuXC1zHC9nAaRUvcBNDEYx975NNMzEa6WAMY0NwXsEBGjopxKrnAklrztkM76JkdGzy8+neLexww/SDoCUHsKUJIqp33q4tscdwNA4wo69nJhz7K8KJng4MNZaeQE0FqZNwNChaHN0q8uVAOCl4aSRDqYxaQm3odMOoQBmANwSrcgyP5IZqjClTJaRMtQX/E60LOBcxLg3rPhQRXgYwceG4SUJPSo+FkpJi0sRGpdi0OuCUPrJpSQjHbFeyDjEq+SZkSciRT9r80qVPlXr82/hYHhrFJSYlJaWJTh7BZ8ueLWW+CQn5jdqnHt+ry5G6EbqMY2Ah4xhMSJhv8KQWChLRA7MESirqx5AoEeakx104WaoyLbXRTYUBhjyRPNNf/vaPf/3nfxdcfMzsEpfcdoCOhiqlCjTodEbc0pY9KwkrbMzU+FhOITIvCAo/oCiggAMhckHhiNpo8RgJWIkESTiN8ZqNgrNwKG6GozcFNUIr5mL+4gJ00R1xFA0gVAykfrajeIiJkcH51hAsJMyP4WSio6Oih74JiYmNi0+RMEo5n1QhHiK06OjoODy28q4D2R9VQeIu3BoRgQZg4kZBUmsJnWkEczVdPHUGdayAszgDntZSljwRBxBmjRJFmeUq9F+PuaGuDeLJ+QPOj0xr0MLWjnEz5fmfxuLwuy8NAW69ZQMZ5IA7opCv+egju/aGuGOqKrqB5/9pvC5IP6VTh1bQ+pTyPt2g4ykVbbpC+TrWE3qfsUkMPOethkMpgyMaWw1rM0NcUbNKPFb6N9VSoBLF30x0LGIkSNXXUGNMNvuPI5zzk19hUUQTFgAS8XCE9bvanCZ5UUM7mhrfh6aH9nnRt0nfg/0c/Xr3O9/f0L+s/8L+1waoeM+AtgPGD1g54HD6rgF7F+0//5etA0O1jv7tWwfxWmf/la2D60W64A+YxiFOp4VqMdtGoC8dyl86nL71iGGA2rTgJkCNEgaBKbkPGqGKfNsDvu8jsvnfxJU/4BynJWnm/5fKorTVHueqdjoQ3TTPPjJ/fnopx+uEINHGCnBqYgkoSsFiJMlUrIm2yvU3wkTICQAAIR0C6dnBV5FFUe7YlhOTHpqdwC1KgnSFSrXWVV/DuXIYBShpyDhUENwVXCLESZWvREud9YYcoOeWXjpys7NueE5hakmWq4EyHeGRDbQSC3s+Yqafc2ShavDIVk8zyAr6WEpqzcEBnyyHUgxkQT9lnZg7LLB1Az5l2Kv3e8iEMj62lgmqHpDHNGtF/SgyoLFjaBjSYyY+oFhEjivOass10aWYoz8mTGQjw6MfstTEBUZAmd9DIohMdeKRuvsYWVN2u+CMJrxc2mNkj1PyTy6T7YgotWNwfxYONZGPTajaCwlhSU8saBUKClaA71kxmm0KdrAf2LFNMFKwA/+IA2c9ogd7lh/KeE38DdvrHuwZs7OYk6KxPFx6Ghwe/NkXdxFa+MNxqKrw4EciqkzpNicDmPNuJy67/JR+hgWsYmpuhKq9y1nH5bddsR7w7p+knReQnzYoQhgZEBAIRWKJVCZXKCFYp9FiFE6bDHqOJ1EmoZA/6rz3lEUSLU7EqPzQuG21I9kBo+V6+XfHVTdh3uCZ9Dc3ckZkeY7nFgovQm68t3a5XEWyPX6V9Rzk/yKSrpFSDWW7S73/yPFSJsdTh6cS0R6kvBNJZMGixEmWrVipMm111l1fg43wBiVHI6+XziKvOgu97CzwojPf8848z/IzfEQUce4Wet99UeBdvrd5PjXyNMcThu+GzCDhPvHwnn2ER/fsY0Q3oWHypdNFfcVPP+cTLJXvG/pNoZbJbFa5YNMaagQTs5KOR7GVdjub0pgD7aJ3sSyWb166NIFTDZnJtfxe/dBu8VwPM9R/5HZ+jIhXlt2jUqq+bA1BjVBptzYXRrGEiN4uae6ED9LulJzxN2+ndDkc8qhAAZWoQjWKKKEmUJ2I2Pw5P/1SHQEGCVJII4MsEMRQuQB63BJEF49TMYBcXqUA8pZfbTxMg8QAMpihKIbQhAYAzuvdlLV7URYcpZ41ljrZuweoH+KYAXgPAMBe/QFApjMraQr0OYAfKADwsv74BKhBRjNQG6o6mpD6dbqu1Y0ZRB4oD5bHyFbZITtlt5wgp1N6Uzb6O/2n+c9w6pzG6i4EarKliU69hDuMli2y/R7E/8F8+729tf3W03r8fLV/+f/5F6fvHL1zpAPtbU8729bS5lRY+O1iOVbO+/utc4Bee7Af/FwQsO4eAdxP9WFY7i/2ifwVP5G/7Ot/CRpTU2l0BpPF5nB5AF8gFIklUplcoVSpNVqd3mBMM4GQ2QJbbXaH04W40z1eX4YfDQRDmVnhSHaSJRpJW2DMhHETZsxdvGL5ytWr1qzbsH7jpi2bt27bsWvn7r17Dh44dBjq2u7Y1XqurEH39nKoWgz1AMf3A8Apg2Htoco2FIBTh9jD6HFzTnBtXVNzfUM2J7k8nRiAC//+h1FTR04aP2XqtMmzZsPcpYsWHD+sbFgP4PRFAJBX8L5DUxsD+XU7UN0KtBj3xJrfb8i6Q7ChAvw+WqzBIEtE1iNVckRyjs7kMUyMvBiuIaqpAOc2kckHipTIRMhMBPMVjWbJ2cr62J4hV8GOSTzSZMpH/z4/UmTJU6B4i9x5vXNmjx0zetTIEZXDhyVDBg8aONh1HrvRSgrOKMEIgm1d5mkc+q5tBLIj4azMUDCA+jO8nnQ34nI67DYrzCZv70+3t54lMQpTvp1vVysiYrSaOyYvgUyhdN4QtGmC7xrV6ZnsTiplJSt4cJstr/azMKVr2kopLiQg3a/U6XOnmxvKwjjoSe1AIazix8bhfRKUiotaLaV9Wmd0SH0ZQIOAJZkA7SGfjsBsbtzLiLtTi/SnAbRpy5jUrNjM62ZEDbuVgbu9t8RLJdQApVRcEBO/b/oRFwgzcgPjFrZJqnIcyOLtoH4Bz/nz/KIczJQI0vLkQxMqwHGWxWDP8PITMlRYkbVF+Zc9Zo+3S7USCW5ikvzQEX3yQ1dulheEMD90m58JKXU3Nj7IswwY6n2ECcY+s110kk7PpzNWLn0ZzRQ/4sn4tgLhuUUHEvBT9EIn1LEsKfk59TqRVb+OZpDaI7Lpu5B3D4QgMvGSiDApp6ttr/nN2lZtt1RFtyMey59N0T2CCBB+WSLYHmS0lykw+1c3LJdY7N4DyfCUZvypnaAUiWk/xKCreqg/UuTmlxj28PanfmrdvLyQaiWL1KpZpplPguwO4Jizkn8Ck8TsKNE3cFc4qaw69u4aKtYtJsNzyTZeeRjWM7RpjhPrbzgdJAyfkpyeUhGYbU257s664FZl6zk5HZFxJ51eJyith1oVsDzkWwXXIjEbkdvkUlxGJBkXYTK/QZTcVH7DlbjySVCXAa/x+HXOOKPy0zDFEyL4D80TubAeZgrPHjy5ub1eHG6UsuWkWqEsQqu+q1Y63eg/0B+OTQIYopBX08TqG37qD4fcKckqlD9ycndnoc2MncLXSHcayCxHJXknW8OeZtmZXXBLgC5eE3kO7x3kJsTTPDh989VbCxM09bKftDIMTPmbuatWEgVRtWaLwolV0nDXThefBxdGTBxPjlAXKz7XfRLJRUVZlOB2V/ybYi40cjY7xXfT26NY2jOKZlZCEtBuJY6xwUA0aU9ZxHvChbOChrrR20VCMZe0zlv19+0O3D7mScIR0gdSWJRYtrp+OY9skoJJ+ZQ/+IWkAQ0p5lQ25U2RJdVOfyLtQjITqSy4ezEWlI0ZPTZ6WYhVjY4b0OnYbRTIDsWDrJ2cVeky0OEoGYhI0cJLFhpZ9eFY2BTMDbk+dF2zYL7kJFS3KUrOWUV4qixPcVKw21O1AV0GcDvkSShwIJH1wiKCcJCu9aW3Reua/RzG9WUaYDu9JBo4g5iyMmNld3WHfESmjRUEk4931jQknjDiNIQ9DJeCOQn99zCSCsHddOQ0K0qpTmJ2vIyQAVYLOPYMolEgsLwtfzvKYUXHkY3XTwwwsqYbtmt3OAE6DdrrlYpAmBuJS9ePD3DgSezMb4oLKQFWl205gr+SULLlOIG6I5s/Wq3LbHkC3C+5kbXUS4RWGoU7VPKNxhCAdlY12CvhOksNJYIPcyRYwAOLbhCPMXZjU6VP2O5Hitv5o1j8kHic9JT3/O6RRflnsVkSjgFj7FrpThCao1XhgIPF++NrNmCl8eaLVIv8sjIVRkrRi9ViODWC6Qbnxpfln8A1fhAZVqaZ/V4jwzoHMzAfnbWw1623SzRt2afqhhbmuCSnWG3IHUIHe0KXDlPjin7P0WjbMujLtSips6hDJEVwTQCSZvKREQS0DohbkyL+mSDRyfEtBNMjoSrwmiHypHu7+RTriJsty1M/NIBX8nwfGSED5tNq7ZqlvG6zJletvLAkuidO5T6x1kisPX2MKS5aujoeUmQivxAkSPxEcPzNFjdDrjsCraI3KwDcEv0k3OZDdEU40baoRtolrLLteTbB3TTkZi0VR/a1043dYc57hNCeQHlBIfJl4lgD2rtV+oTfJgZmEHYksiG7syvTOvWXXOtfiQKpJARmY8vyGTRzSMEAjPAZ30RduCVXTIyktVb9Xbp3qw7CWmTvaGhtbPEN1BDgW4WaOCPCRd5mbKLgROQzDcyqXLMIHaVg9pSXpnuTKnbCm8OtyvkE0J6QR7Yfk8klgBe+5KIwEI5eGjjR1UrIdVVl3c0KtZeGJ9je+xYl4bkwEaaI0tAF3ZIVCP+QxxD2m//szXxuxy2ObwQs21OGtnlWaJEj7TQHs9p85Tg4MN8gl9z/QIFgSjj1LuVvm+gJ1XvXmvZrrW8mVr77VvjZn+ipB08TToy73DWeKvWWGzg35BM7lv8nVi1m2SY6vVD4lfRzwykl5+J87WPzpsJjCNyaneITCxwvyv/ttgrjhG28TxkEQ+nhPgt5R8AJfGRtuFrxKRvTkA5CX/THSMhhkPKi3VLe1Ad32y9z28pta6ynTvjP0zqL2hYBE4zx54oNOfTyF2pnB4ahj41SU+pesiE3g5Vsm0ZG5hPLA/gMfZEfzybh4HY1/4T4awwFThTlL12semo5gk3+Xyzc3zSmIlSwIRxqxRsnfTy+ENy3/hTu0BOGwyCrIYHyfDsVNOBPEPEipMI394MEiOAIrUsAANwCAJCLAe4IjI8B+A4EoG8F1MXA711BAOATrp1+7BQGgdVkISRIIZEVJRo1gadbT04U6UjCsbMm6jh2kdYdeGdsB1E2JAALhT5o4AFKcujkVq7PAhTHcm9LPYYOYEHEgdNRcwzvmalLETJhpyKktZdj2lcjbyFDJU0tuFpaBwatRPMOn8/uYRAwxhFY4OC9QHEfkfOABYTkF3cJu6H8ihyKZAlAWPKLwXUpLVPDeEaouC5LbRoMunQdBnGYYwwIAVi3I61GmobJVmOCJeN0JI2Gf3O7i9koFDbxgMPC0C3801Iz4LmQ0mSTnaQGIoHKucRVn072jURpOYmxpJuH0L6T2IrgJDZjYa6jQiRHxhigFDqH29B5D3PY1WHYCtK5rr/1c8sPPl/+XnDG42Z0O6mzevsw86KfniasB/RTcsAEgjQRZwr8QWrMSO4QB8psh0H3N7ylbf8wYUyGAZ0RBNApQLOQrHwwDw0CVAcdHGwhvoVjGyoZtqs9tzkgi8WkOuVMYV3nUzHTdZcxAsfpww8XTDVnhb95BUtrgtnKzJaVcP/8EFnZYm0bAylrku+nDkbo0dlML89Vl1bnfyVWSxsjj1et63r9dqPkBB57g7xmI4JK2ItCWTb4okXkWw5USq2xT9g1U1ROMjMm12HNcl11lf3MboygixK8892LfBsCsgHoMCChzl9mhnOwe+kifvBxZ7HN6NCpXORmrLft7ptxqciLyt3UWspDtxt29/SWRxonuB8d6zID1Smnl+5ptiSGyFZEwIzZVBaLor1sOlRjL9rmY2HyENCY1jDQMtI8VTdckng579JIjiAvuUgXO43l0niwSvExPyTDpVaxnK/K3Ubv40fouXQ3zyjVNYvLufBdzQ/cr77Pteo7cVlVnQCzixTbBkmwBUYjwReqbWwr2wJJ+iO1rrBUIsrZ86Szs24C6lv7lJ4cRhr6Xh2NEu8IYuRJvbZUoNK1Vol/c0rH9vOWQrtQ+jiGQxJ5wPCzZNIXthqjgl2AEPxX0vHCDetLMCeVt8nGjUkYQSU2F72Gs+E9kld76F+4YH0BimJ33hW3n4/5D40akU31+DXyolYujTDuxKRSiKRGnkOeLEdhgu07AEMcMuwhRQnUsEhTuBkTUVyW2kUSh7W7cH2eKnbpCCY8qFuN0gsNi3m+smXhpbNe8NgqqURh27zJnYOAIQQtrunc0hPVLaWeI6fiSvfgxydll5jS9XQDmR/Qq+Z8sBVGnUkQpGAl/x0dQIM+GeucHIjj6TWHQxQknQJBDGGgsMuD2jDDD77fCDDeb44SKWEBtUFG8WhQECVyBA5GxQxDyqJDZCY1eu2NwkEwkOFVpkXPE/yLsJmexsYiYBwBpxt8FdiEYau5PuWPPE7ctG1OZgxJBqOLWduLp9HOvlOyh5em9MO3Ifb215HR2bEhcP68+fSQAnrwpdGJ6hgD5zOcL3QMmoFKk2iMZBIGamapvlQ/nonsrEIx+4/bvnNb3g0WR95U6TSVCfCgX16JOgG6qjFIoQXqyv4aEGWdXjebLFoYdS9WJDYWBeBriJvYpkb+kLx4D0/0BPs4PYJ19NqE2bB0acXBcFBQtyd/irDL+2pGFjBtqfEAelJ7XDLPZBTsPYuOFPNUCDeqK6b4Ducy1L5SSUIRD6LkqJTXTDa+sNruXIoZMwuQWYVMQk9PgJEi4Fk0GdKLgWfxyYzfKB4nkNV6miudxjJKgmpZhqRDbj7BXws0nx58XjMzI8P2utodzdLaTPWM9PTxRd7oRalFVcjs+F6dgoCBQXVFQIAcWK/0ZDb2E8+cJVqZDZeNPlbrMrOrLNjf8zqnho+3aEvm1ph9XYYCAoRUe3iXt6a5vdSmEmYu8m3a0MjmmjG0vhicX7zxoo2RtR63UTTQ4KtL1ZNire6LQyQW0CJFASwIUN6GEGA/n/4qaWp4Ep+lPqqPuflWVVfBeuEMfzaPpc+4EIXzdE0rgnXdmFfMM7sEXkSrIK8Y5tRrVJuwyRjLHjF8/9xDNl9ljZqR18awJZ1Vw2VJmmwsZdWqIiBK1NMkXz9PPyo0KRu5OrizAJQIqKwLzLyMCAvNBu43lDCztJGs+mKwqA6jhfIiqInr0jkKyI3d5RzDc+JZ+uOxDca7cI/T0HPVvkvGuoLbG+k+U9H4C9GjbwabCKw4UWUo1AO4qYVPc6OMkaRW5xXZzpTV2s9+qXbuOGmcv/5QrYgPuzo4dhHsUiUs1NUp7tRiy/e1NBwf+Gzz3rTUjZDZWGzJnvv/5ektzSX/fwrZcxzNnXN+vWql5Dyh5nAxW/K/bc3VMm3tok6OFNCa+S+cOeGajtQ3Yam526vtaQk2CWK41vGnQ9k5KS33FQ/YsGEcX23+WHFZuqZutIwa1HKXYBWpvznx0/5uYaixF6yGn/OrwQo31djj+zIDfd4R3a6XzOQTVc1S5Qg1gUvGsYaP9Xggbr/mas9KYOW4gjtdIVwx+okzQs/xPamNofTk+nLLP0+n4GeeYHLUcNFCewILomw9zs0L7K/4vKyhSABuxPX4uEWVxVM0yl2u0O7jDLdme6MZrT0xV8TFVj9KtZExFhiP6R2gPWOmH+mlZvBzl7I6RhhtuxIg4YWz6moNF6uVkusElylrkn21rERGhx+y1xR1BWJx4zLT5gR4EOxB3DOWuYcWqGKKBK0ON8v6IUeJfQANVAK9OI/iyEtrpTjj3XzhD1t3taoE1pd6yeUNHIWOHIvb7t3q4lyJpYSl7WaPJO7CwugOa0+rj+dy1MUTGQFuz+QtFB89top/VGh+0zzkw3mDKyqmUxjVwHf/ix+BfnFdfU6nEE3tz0qwyw/42PxbA1c/enTDmnk1NOD7Nf9HEES3CA7t5AJ8pxfqf/v3vL18mzbdM8N7OyOb70d0zCRm4NT3AbGfMGIU9B3ODD4nB+4+epo+lP7xzRJeF3Tt1EOK/eFr54/NjnDCNIAvlZCMeMOIMiJCIRLdWwaID3AA4DRufCkEPI9m6Qr/ubF6rrrwUldXbhjcV1ndV54wljeKhpu//rVnA1cdyjbvC5mZg5Q5vtHoirTx0fRqmJRSBUnXGGv7L2zoOy6AA1v5iB/IRHmzDj2uZ9FRak0a4HVlJOc1JTduDAtygBoAN85d66npuobCaZNkJdnX1F4S3tzVN4dz96Ei7ZrUPQLf2MH3X6jo36f5uuy1622HPUTdm6QrfNX+Z33pbbbeeQxH5Hx2NwlMJB7YUZ6IfxUebXjUvJzkba+aFyNwBcf6q2taca6nC8zMn5enrr8s9TwzwMdM0evy+7oL67SzswRZUT16AOTf+e7/3p8x9bljJhK0g2gmzCQOivkdeYhMfyCbGbLoz46Blva4qZ0DLB3JZ5ykM9PTXR0DSqZ2ki46Uy5Oh9Mz9smc3n7cWj7nluW7BwThANyvKSfO7SRdtVn/+rcvkxbOhgGeO0M6FoWDlgGo+4GDPOVT6fsgPS/oGMrv7f7vXCHz9oESgBHDfJCwusgtANx8PuB2CwQCRMDfOvhu5DcZvv3IfOjwvNRNywXCZTzeVqFgG69sd8PqrQ0+GaS9+0OhbgloAfOtjSZzHWwEa+b0mLYwBeA7EJ5A5zX3tjEJbi3jPwZjxheNqQZkPTnz4uKQdbEevkSY7gMkeJ54setjSz9NmOD72zLuQ57gvbo6Fh75Pja2aYHlI+fXgnWtdBYnVDPiwUqmt9nabKpiruyrl+UqXuQo7qffYdDn9/v2wUclSHxyX8zlhGn4WUY/um4qGKgv1cN6bNM+k5MdcL3LfZcKB3zBDc4BVxUW2q72HJ9PQhsDSwu9Kk+Gjd/pdqMrw6ZWS4B9wP+a8FdkzSgv7dQUxRZ0ENDg9JlhTD1AuvkLR2EyzHWlzJCagyKdMU8uz5SVVVZfuAh5d+Dv4jJpNtffLvLfLqOMaaKU02llIIWtTZcr7QaZyKqWy9aeQyj44oBXlytUoHK53N6AoacEtDpdbqncyGqYbUsz3on8GvKE5vifI5hnLuJTXDbb6vvgIP2XblNBfi9oyvCD9C86lMELDfUmEy6JXIi2UK0tSUvTlZbrIMY1XLlJU6pRAoXLdg2CBJu/RLPksgK1odCgM5aWGw0sD8RkgRw2C4SYbLa5CbA5YH5bEF3xBijXeyDoLIy+hiuTayNqjSHAxvSTuHkKWTBHrNOCBUfBiwtLMGxPQKPWRSqapcmWQXqJxKyRyVnnAr1c5/LBaiV66fUZsFL9KHrtzhQKiGGu0UzgXCsKqtmUucTwmD/EyNtcwiShzsO1Kr9R8zlJaBKl+GwYvt/NGI/hGW6s7ugx+FiLzRA14+jPQGd5vX0XYf/XSxJoGlyfShfdU0o2vEUo9sKQRxcWSVC5UuFaN/gmnRuM0nYfoQkhyu3dVVK8o6zMv892l1RU7Cgp2lEWdjVYGQu/NdiYAnlIKoloNdLsgFTKAilTMaK0PqTnKVxKSBtCZ83yh0Kz/YE5Royah6zt2yxkP+9Pm02vRy+ZzG7X6ZrJlCldebiubOsZhemXfTQutycxH/O+ze2pKurqqSgTK4NKmQw5g/FCQa1GExkqVeNgNj3vRjLxjIm248UxC33Mm5SUv2YzD/8uU+LWtcrbVFYGxquXesZqsedH5vGN7lE219hgEAxrcI/OKr8/YHZ6EJ/edadqdVZwZSEjRoVVd257RsydNWYM3BFjuAcrLvfaP3I8nI9273JOgfzeTIESNbh1rQo2l5YSC6sXpU9WnjrCKQP0zjE299hgEAxvE6ctD6AvIbuN/YtCzkSQ0/FoaPkaeXoXKq+RoxdQuAZGyZHevx6D1kuNgQR3OoXWWKaFvdAf6GenojxPYYw+Wk8rxtRSicGKbbMwJR/9NaOvoezMFe1q7/S3TPtzB0abtF/wn+89gX7rhhsTMyfP+PHZJUuL1Rhq0lb0QqjJD1ZdGCvDrWmTu7m42LMwt6QkL3B5RjocY1GUGM1FkKgZPr3rq65IrsvT60mnjS2lo98a2GeJVCrxLHt5X2IuwcPNwTJvUwnGX5uAac5psd3EXVr5KDDKBKAjx/OrQMxdfue4EZC05Zt2sxIAdav/jvmVjml7ilZDRz/UMdKoFcwe/m+DZdzFFQJIYLCHgmvqNRhQUCOxpfmIl52E3KBbqgwUSA2GMF9h2u6mroG1GiWiF3JNMjD+cxalaChqgbOH8dSaZ22/el95/9eOxv6F6webhmecRs8HwxWBQKQieB49nWEY0Wzx4gf/nrOjb0ImJjHzQN+cPl3BIVG/54wavIN+smJwaOHgJ5ipnpwTXaEFff7EcMuYEL53j+eZxbvjMTtMRc8zv9YWnuJiTnALY3s4vo4s2MfD7Pit4ONIJzqEUTqKWue9kTmKOt77Bt+HSjwHd2A74F+jHtw1zsMDLAVzrmTPdUGHxCWf348xI29nDpp9A36Aze/Klg53YjdKQZ7QJfa2ZmUL3LEusjrdrOfa6GndD4E0rbSxIgfy2jH+oFQpcdh5PDswwhLLgmG1gPtdvLkfLiIrwji9F9DrvWFMcUSmsVRZjO2I29hWZbGkuhAhP6jR8IOIEOC7hIKNeRZeZz7pPq4RNrUhiKm90eLIqHGNcJEFDpGcj4gEQbUaDGvkKxAx30leXof48NdwVRZjmxsxtje/qhZNWNaE6Q1fRy94nZjGsEwjd2H1AohQEFKridG/JQDpDq7ektaG2HUdNXa7sxLUNLoGkWZyxOkuFrdQEram/ldr88w2k7t3Ml2G65K0dUcOkqMU8ax2Jp/3b0b8X/HUn1zBGGTMTlR45nVDhgah/OtWKNIDYb8aM6aJSANWQMZWN2Jsq4BATZZoAsbufdc+YWQ1n+vgA6hWB6AOQCBw5l1aIOD87WgydKHXe1swcJZUkZ1fkWVFNRaLScUGhUwnJxlNCoalSQRJEiGVkEQjcLLRn6jk+J3Xb4UH9jY0DiDvZsIojDhcoMzQhZ76/L0Cc/7XizxM+9W/BYPL0ASD1r+TDT+9TkwgKBWrfPLkLSG5NhQqj1j9GusKNfN+qp1HQdW2FSrmg1QHLwWlQk6xhGWySF4FoGuCjFpOGp/m4JDRpEe4ZivY7nR6FpgrzQsELo9AFNRqmXFaKPRG4H3yeM0Pr0sdLI20PJd6Wx6ijDjJkGfP+KTWtYj8ueTy3kKb40T9P1HDD68P8xZVCGmTIt1sxl06zCGhSctxla5hTirfIeaLICadElj2+BJiVQMyMEiTQqXqDDuVCgW5r1KSdx2yxzhinA6FUA6HGSr7835QVCPEy0QyZ6IzO5HOeO53Bp08MuPVy0TSElzesHwTKrObIBUP5NPtHAr60+vAWMJSWVLfn+Fli3qtmJd5+UdgSN8foZbZPUdOD46c1bNlVmDNj8CY+aPno/gTvbZ/yxt9ZPiRwl3/7O1VMOb06NMFsffI1x5GVrT1WjQworkZGkLPBkroyFQ7UCJHluEPtAdDju2cKVSYOoWz3REMOeNhPPM7sF2YQMTYTKLtwHcmHo6P6kMlFsxEsC/xzN75NlHfABfp613f2fqWRRW8Hz0r/VJ0wgk8xCJWpyTV7TQeK7xQXi5Z2aNH02m+wOvLqcPGpfSPe+8f+Gh9xAH2Q2H0Th4sr4QgeVUefPvO0v8KMu3FLnKK04ortVZ/d5A7JY78SGnEkW+J/auKU9Ugt/eR1BVh/VpZ4dg3SwggTybJish1nnw/CyHvWyNSplkEqS0TFctnRCZbmwZyZc8jyUFmxVYaNP1glgnMPBS9oc1ua9sQvdEOgfaN0RvWmOJptikbngRe0UEWiw6+YjD/FjBZv2/YDG9G/b8/ww9S86e8TsTwEx/n76O2w+vR9fD6jX59+nekA/EjSxHsV35Ia0SLAKV7xND4LDd5SD6iUiE6gdRlCBJCRDRg4gC2CUFZmCtMj0iMchSQgzMR8uo0rZBWdi+BcdyEL6HURAI8uv1l1NQVaXFbanPWJslcuhAx3/FrSlI48gWf8DM+4VFC/OOEGT0e4VOzzwnq/+PK9PoygwEsMFcaZ0h+sVhNiR3yi6wpIimJ9TTDT4Ms7V/chcyS5PrU91umxKUcoVCOpDBG9DcmjFiJc9IBkGepQDwsMIYbJTGpRSzN4KxUZkhhUYS4Up+mbyGIkeQCYr7laTmjR3VOiv4Em9bIhFYqh8Hb8eZBtLxNnexc0sGUhNOWaK2/l6S2n4ACWR2DjWpVtBiVKNbtxoP4pOEHT3FpNN5JH1jJa8ZdRTsUIpFCycktslJLcuwH7j543zJ42Z+17rXugncRL3Vlw8MdRBoL0BdLdLlGI1i/kp6yxp2RmYFEpfVWRRGSvq2wo18wtuDdhVFxLTGxrXH4K7tTI3JPTB93Boe9gJd7CleoVZWaTMx4rtGYe2n2P5kwn097/qQzHk5iRD2W9mFdY7h6diY5zX5w8Eu6OmCU0MHkQmpIG7rrpqiLhnDxHx7C9GzrGbmsMbt75SorkXeYx+viJdoFno5FMTGLohsSM9E5IKdnssfJpkeS7+664vf9lM5iG88UPo0rxpzcL+VPlk83+3tEez3KuF42JHd2/7ntM1bmB56WhyDdH+gVYOpO0VR1LhQwW2FHL6DjU2VywS6zh3rE2O8X4AtfafHDy5jqly8eOj6tWMJaczH43zUNOZHlWJxVkrtpQ0FJ2Ml0zHWA0qdoOFzbbNjFisxz/lsla3gtfr8ZREY4nOP8RXQv7UhYWn9b8m6ziUYk+py1S0NB2Djg7w8uTdtvVPFuos6DaBjTzDQWy03UmdPkYlgv1YI2A6YEY4jOz1WCuhyxLKAsDwGYdCjTZFAPLVGaWJTXJwQ5v9pOs45zK9pKG1qsN1mGymb8zJXpnZWmECHAKziNLXVwD6vHXm3+v3XEeIWvYNqSSZ/z0oW/Q6Hb5sBx7OdqxztDNeIR2/PSczfXLqu1hDw2+XEoscbAD3hIH2POwadInf+nH3qKq7WYGixWsK4qzSiEqQyw/w/uCOWyEHP6FqK1IBkWFwLLIBJkhLaXeg0dNRY74LHzuOkSCddtAwC+A5jp6QhAFO/wb5M3gEKvnvmd0C5419HbG8ODYn5uFlUanf7RBtvCqsNnRRWmn2dJU2/KPZL1k2iddM4gYgYBw09Oegb5AcVZAy7YfzwvnrYLvdUbwjSFQ4KOsKyxHXpsuPMK4IUT4B/oT3SQTNoOrCVzpk2Q1rbC6/jI9XA/OrwrWj8ntZnbDaFuYkNQa/Rhimy14IB35aDZL5xV3C81uNr077+xyebf7Ab/DBs9PHWwqN6pS/fx5WDdvvZlqsM84NC/fwSvJ/NwXNymuNjDsbFHYus/ZQimnRxIdcHMb4lJ5MH/9F/zlKCGc7LHQ6KO8cvZ+IZhYSw244eZGHXxhiGrVeSIOZZANBMGRZhlDuhibBOrV8bO/A8EBULQJBCYwPcCrFs8c4f0yybXi4RNaLNiUwfp/J2PTewW29V90NW9Q3ISYXbEOUoTqYyz58E+Ek4i1YPz4uzZlaM0DhaCf86CjgEpSIePiLyAv9MTE+nf4RdEpNOHgCsQ12oLezcbPATMeaozru5l++uecduIvdLWpqyhF3Egl3y0acHBg4cOLvwAY0sXiPNh4bYGrD56F7wL2wN8PsYdL685XF3tWVi1enVjjdvtT2/0jk9HJnq9YFiz1zaUL+0x8BxU05rNtvKnpFbW7SCOYh+rTh6rrSVGq9b6pijrm5rT9DlQDWSqg2DW418MKKs5PNj+ZOXEYmFTwf49JU08ww+vF5PcUCzDPwv2JqV4UAsR5dzCNVugFjsCNteC5nB1WeXRvFns9KBHbMvUPqi0ekK1C3NSySYax4KLOvhfc/ayQs7vkFIMOtKdTEyOjcoH6y1wi80OtzTAJr6NasPwyu9NnjqxSuBPY9NtfAFCaRwWG1zazuezbCCbTe61gm9wmVu4VvMFx+GkrlbIZmNhyOnYsmYbqwSqSNoEAta5mh2/6qiRuIisEeP0jpnD/LD+uKidOUiOyJEddL251xvCFGfLNObq2cP4oTFTXTrTgHZDY75JOrhWR4hDzFC+jn3qwHzj9yq1V6LCPbfMtfylx9+JBOkJON+KGX3dV382Es2O5gTf3F4dCVYYxFx/y7jgZ0L/88DhD5mE0pKSaFupLuOap8UwLr2a+fe5G2InthcKI3YXhJkTh6lxeEj1zm3QKg6kcW3Lulea/jSoVFCwaVESMZ1HdP6bmejMDqRjI5NH+iXjj5uJHBRyxfnuC5A86r/7nJNQ+fkV6U0Vb+pVsJuVUd5sW9eG/iZX6be01QqChs994RpcgHY7h+aiPJiaK6UjLMbW7di4Et7QfR3v2zORftuRi+Q2Cilf41M/PUejkdE70d3W5ASVOZvDmzD0gb0f4fOKk2KItRRDrRz6slcz/T1Ab5LyNd5MJGdESVJpvFf3xWLND1TsAC3KNWmng0N+HYsDEmVKKQ2TuA8l5f6SukP7l3KbZdCEhmY5LSgWexbSIpElB0t2E88rkdAIjxv9S8qNqm7WpOe7VVUmbOKs8eMt+XFx/yYmCrIPLLFIAIlNIyLLF+XlrdT+GVWB2sU79o2YnkTIS0p0ETkqetL7ePzbeCB5/JkuvhzUCAQPV8jkLqOCeG79FmD7n/oPYpXYYRo9CZM/MaEq4AAunsusICYHSaRAMnt0U+KRy6pFA9FFhBiZ1ayiq0/QiC3oVXUqqTh72LzUQNW46NQ6LMVp30k7ZE0mBpNfYu1RVlICo3Jp6pYBfojb0Pu+VMLRFYQWvMimFYutWlFcC3HFUYI0XS/HP/03Lu5DQuJ7PP6fhMR1IxMTZiYSZiQmjSCq/TXBqrVRmK86SaOf7O+WiE5bicnWZFIwmRgkEad7lr9o+SXjZxle6p0+pKO1sPC+Azty5MbkRVD7tym5b8V2ns4lTNr3flwGA4QEXMehbo3e4LGbXyAMhvs5k3HdzWAgNxg5M47Mlx6eZ/24hULZkkLeDu4h4z418D0/6gXj3VIKZSm5Zp6Q51lumYGzPq4QRqncx/uCiaO3t18erKe8qMGpr6yPLxeb7hvy3XmEt7ZpzrvAU26OizsUG3s4Ng7pGctL/JrbKE1qDv6b5L6L2T0W14N86X/pTMhIbMA25F2pu2b5bORb1c11+4XzvnkW1C94aLq8tNZdN9I5bqRDYFA4ReOEiz3QdOMdOQ00BZptqPiVEKpP6A+XB6ijl+glc1YPPlNmw+VoyQ9GxK4+xa2hOsrXBLtV5DuXBRfQRoMTSxqcVPbBdco42FOmzoTSU+jswVq8PViHLwbr8WGnBu/bQBuaoAE0SwNosi3umYbYEoppM01CO2kS2lqT0DaahLa0VRgoq6moXlNRla2KqWDraKSfqHmhHE8UBivwn8FKPDdYjecHy/BMpwr/sG346A3NRp9qNvseEBjoHftUGxqjnaJe7RSNs7100Be2D9Bnmo9+1nz0jebT3oqe6SstRC9pIXpfC9EbdgjQa3YEqvrvQlBG5eR0R3/4a+jnXRn1p8oH/7SGEf2L/gXzndY553B0TUJbSr5N68k4aPOX7hDlaIHugUT27Q8DvGZQ92GCT9Njan/kqru9+4PGawpN0JRERe6z1UCTqCZHQN8HunbjZu2m5e3mce2Whe0+S5X1TLttZbt9WZt21mO0/Yn2f4H9B9puCO1HA7cWrvaDdptAh3kgLoWby2HeWpDngv8u4LcDlK/gX9MGnab2h869k73c2benOk/1+nSc6fWs8TKDGWp+0btkibd9OydHTy4VYOwf0OK725+LDwhUK4/zhCf6DEpjxpRFJBeYUhI/OnVii73LL+aU2VZ/iK8l3/Oj2l+trP+B/4+hDvHckQC5phsFtCpvpWKAv+WOBViV8QisigLwqK29jvYDS5BzuirhrdUpm9lj41xHJW9bFc4OeB9BINuYTnpscqPuRNp9/42uzsbllIRjAVNv4AAshMwC3GprJfgV4B3HP+o+jIyi2SMDdNyQ2JZ3swMdIb7FfoTBqW6IbAO2GSA8v1IKA7BcW0pz8e2/RmNpW8oSX38gABc1pJh8Bt43gB5XFzjab+qmLxOArSlnAji8qBPxA2s7bsCB6gZG5QwFyh8m2Ips1gxLVGkd1AWQyY0sIeJD0jrX10bpBmlihcc6ZACTMhJGmsoInK1x++aqAULasCsG/plRNFgAOaRWNgdZnm2kecX061S/LazATiOgtapdHdQakLUgNeXe/Lbrolb55oluXpRfYvSTUcZc1dqhknPMWHHF4iPD0JZfb58OOpUpQ7VrloLqRm+na2zcVTZRY6pHulG9La6y+qh5HWe4qurnruo9SP4LTmpEaoCYierT20ptkADaiA2xxEAyw9Y4+dBGo0BmJSLI/LTdlpzYYSZQuzCZDZmd2WZShIlregqRJRsuLjL7s703c0fWfm6iPh1Z2/RZPKJGsULMzrzqe01aDTZ6uoH1kb4h66xLIcuSdSapr6aNBBFRuMhkbmxq7mUaXpZhThau1XP6TW2QqodLGbWfy23pNdoTftEytg2YSIw1syGiG3L2OF/kIEALhwEo6Z5TjDIYib60AwW8fOSIUtJEUqyESxQybNoORSvsFLC2d5HCt6SvimN+s+70sz7Px3/E83pPaLnqqjJFiUmMy/X1WSUrcw4mlqZp6YayWtqGtFWjOCvJLAv7tSQGGJ3+DkGEwEhYf4NZdHE+EfbhNKXjhBSr0L3D8iJL16RuKFLCj7Kjf9wQ7T0d4zqGHP4D18ApX/t0Wm6to+Uq3pOcOtYl45g+sQswUoYRZhEQ7n3pXa05TDDz0MKR/Xobq74UCK4GCIcc7PCosR6kFgXqDaaBrlHw1TiLpnTspz17zuAw8foJD02JBv+Gd/lQhgfLrk1ZDptdTWWdGuuwZx172AqYdEVSpZtBjbO49kHSRnmInp51sQO3KxwOIZgbczTsSozBxBgpZSokNxFJK/Y+tPBsJQrypnaMJgybuG+Ilw5hOAz8UfimMndZYGmoEy3S6/GcL1x0HqcZg3K9RldNS+zTHLshUdh4t22WrCenhiwpnEUf8IRSVNCSHdgKpbi13taIiMsotcqVdXFE0G9kb2ePIO24R7ba2N0SRivslmarpYcxhpaiwUBkNajD9LweZRjlSFoWQ3KTmfIhZpTcSamOynJXAktbU8JqltomN5V2Zw8PVvipPo/qJiY3adf9LZbodwJrDxTjRR6bOj6GhPpoCPDWNV2StrilegU6tfjo78hOpG07qKXV4eUBbcTKuwJT2VQTaUckmju+SYAQqBT5EWGlyNqDmkt/k1rL2lJRCxEVmH3oX8RhSeFpuAwuhQOAutxEfyG45KfdWfVYQlgDqVHCFdPLuNGwpIFogwQEu3e56bJsixAPqYNoiPYQObCzhREW4yYYcywi520YC78f2+NoqQy2NtgjW2iasLIDYLQaV3EESaP3TDYoCL6safNE12UG8A+FQ7PWYDwso6z8mPMOwBYY8Fd4CU6Dg2EOuDch4YgEbt6u0WYqs9XJVTisCXmHumA3CV0ZUvWZnXED9lq69OON463zLY1Y8I/GAdYnV+hbJriSoPUGQ4fif9N2qv1ZDlNhZnimC8Z6v4kgGobbki5V2FYEJRHLwtoVbc2521HVYhwaqCtslavHwevVuUs+U4Ur4JXknKYBUqbubqHVArPVwc2I8komZs3yZZJXEETQAqLukZJVD+WayaUtzJtMzQSFSuT2Ft0eYl9tlZCYDIleEXmCgvcoXLbxWL9Y1/RKqIKoeAkxVXwmJxw4Wcqnlh2rWAZM50x5VJhBYdSmmytLpsttJW+cei/GlyzivyZvT3hPwrcyEGzKjmE6o8rKuSnM32q5gZsLFROFDQYfVHjGuhm2qGQLdg4zzExMxYiraZ/mWNTVScfE5Qm3DQCa3bThdw4XI+mQUqKq2xCqBiPkskMiziIiqrWoXMeBlgoLOBBkhICmPFwDGNzeDaIwU25riH3c1kSZaCe/+RrtJP3z/c86xte3wiofO+/1p5Y6ouO+3uL9CjvgvfDkdHeJyCWmPAmbks9lb6uZn86L22ughHHJiLKyA/CodTTEMa5HppTt1sktn8XfgYHMJrVzNuPYSiiPzP2MyTD0lEUAkLvLgbTa2QAZ3Fe7B0TAg1UdIIOWYM1Rt06Di6HE2C0aKAwXdl/owjaGd8ML8ETCRTMtkSRLplgiGI1saZy1xbTdTVsvhaF05yKiUF+Vw3GeSdvWoyYifCZKQRRXiqWbzSWaLSPLmrXdL2KTHflZyjyI4O2d0Qu1BqDJBDyGiWzgCsDCYAIGbKaOEqbhSfIEE5EMkzdgwBL+2Ti78KKddmR7iDZGHBp6Bv5XBp9RYPAfuBOug9/At869gY/A2hgDxglD7BxbGjPpMM7ud87CGkMPIjDWYu7cjt3LYrnKskMHyzhtHo5qYA+Mu04ewIGwDkNn58AsqXeU90qtfF91fli5jCil2J08TLSkHSo7ejKWfxehcfhFj1U993DWb27l06MzajwS9gjISA7J11264T0LWRlOSbNcQfk5V25sLWSaJF8UAQi/3Np2TJbBBwyqT18vgO2Eaifqivq0UQJFV7EETFqgEU4YiWBjE6g10P6erEPgtQ46Yj+fAUlbFMaK/PG0QKx1k8KRxFoIg4YIUrzIc0I3Z/K+g9xE4+D9KI2EdjeqQVrRrkZpcWmxG+6SRhilK/pkOPAn3cv5JNc4sOWAU9n80NCRpzZBFIowrH4n7nJz3GU3F5MriXYigQMIrBPoE2gQyInMvf5tYmmYH9H60d4zOLbQjH27IU6MlZyPY10a92hLO0XzEeDukxHNiHot88P4gva7k0BXpDFgsSWqSK9lc8LTNa+burqWWd9hmDLbtKP3JVJ40Md6VhW+Bg/BD4/Qdey0pQOh04jlMNCK9ZMHjRgmXlC4oaSGdKlLUUUrH/CZImYANlx155UYInwR1lIsX0zxdoXT+m+kl1PtPxPZm5V6bW2Ffo2+rq4KIQwEC+QGA4Y4rh1ffGERRv6EwOGsuF8QTwGEywYVbuQVcD/gT3ga8Or+JA0STiBst0F0UodieAwU63squl1Tr2osvMuwpDDpVFO44JphYk4T8kJqkCfI87IRh2c3wk1jhXR2VaWKBnq4anMqt1dd1WJAq8YVP0yvo3rd476qyGDAdMtoO1mvnilDort2zxCoaevuo7eVCqxbiJno5aJYqqWgG1Ggtg15OaklsSYYs3AcCmPVFPMTlzWPIYlUv6K7laoKsnJhJOKle4b7Vxohl0Gf3LeLz9dwMuk4HMkbUtM4YqRt7DreZxPIllMF0m1f1XK7CZmt2qCWnWJ4/c5nW2h5VTXTwDQccMJjmK6oYUX3+kx1yLYBp26Z70M2q08HidXNewa58x6/APDHAWsD9m1yEg1Qz45Y/LnCt+AVOAS9N0sLeT10cckCDiTQ4E/O2mJl5g00dkFnF+x1yNdxSD908v6OpvpZWWfKdsE0y8KD5AkDziYmwqdoq/4OMzFDDw1YIFMstfAaqphQTGGTQp2eajK2X86Mx9DvqkHF8GSgamQ48NRLe+tkuZEL9G3nC2o2IgNonZYtc9U277feSR43n0z2XWO8U+GtcAocDDshfKVJkVcpUT7DgANkDHCNwevmZyuqGeiSpLQKharYjgXKa9eoeSAfmJDa03VSa+58gta/xycMPJVuI2v3zOmtF8zck1RSiAIXbVi9p4RRmJnIPhMTZT9uG1BFIreTEKey0LRyBj6GLJGDiu4ylxUpqre0sjOdyEBH3+mybseGAXFaLkgGYkj72lIwtWEoDY8R0XbWgorcTwgLdoD155tNiIBAyOVAnKNAThcEOp8gt1TcQGyq0PcaTdHuVYXwbI5sV5rk7Ta0+zMI92rvcEgvS3f3OKWqzxbbqjOX+FVPuaCvpt/0k1Cgvzbez3AdHA7fgc/DmXBwroYN0A7gG/DB5LNmfQT3wE1wlLkgqKEFdn8AS0f/sY9ZOJSVrtMnA/hikii3gK35+NZEkARYIpnlZ0Za2JfvwrjZg+Hs/SnDh83HAW+AE1VUkf2BdTk+z5y0cwyggJ/Bu2AfM2clTPVodBJNXtDPEX4VdvcF98gzZp+W+JtJccH2IbaMsaEtdqVONbSXE1KWsBG7hBkGk1enYMv4HKIGWIbhEzEU2mJn5RTxcvlcloqRuKtQkZA7CZDPDEUrRnyn/rpXK57qb/nahi++Ur3aU7PnK2r3VLzJhzcht/Cv+1phUeELywffn4XiJfaU5iy/bf62emV3sQXAXLdMdpPaLzC+D9pmOV/xK8TpDU683upXjiAT+anDd5F4Sg9WM+/+7YP57DdC1JRLtLOr/M2c4LIt1igMKdRiQ2hUUKGFBUKstFpqV1iFt8xXAC1+hYiHWcbVODF3Y1IEceCpzCtSahMqeGXprseFHTA5XjJOAR9r6CAWNAuzvRB5odPyQe1IuoUyTHA2v8OKc1oty5FluhPhoQ52qDtNpUgR+xrGPsGGM4EEEibNx90F14xASOBr7joSkM8TrnbGbdXuyiBKmkoaFnjNlr6M5DNN8Gp3IF51XmV2tit7se+cqB8UuGwwosopSqpYycp0dB7Ys9Uo1VKkkKKrC/FpaMi9B7yiYQ5caoxumk3bCNLhymw97HiOwSHt2LUgFtP+s7g8CpCw0dtrfoB0VC1TOZpPTrpR1dq4LJeZavVQiha0QHk4tBWy3OzH6bqsgWj6eIcI9mDef6Y9Qhs/X8kUQbu1tSdU5t5dUwOUMMM+ZkGwYm++uEiiO0KgdcfR0U0HHtLKeCgtT4Wf9W5d2vfMgSGf27LXcBk1nmI+duPtC2kJu+r2XhQigwyU4wXBwmG4B1TUWRHBNkzyYWSTIYJkeErZ+XSol3rjwvCDU/a60RGqxN9cfDxoTyoKYfXRzgqtmFybVftGJlERNTG5cMv6qb1y/5y7FHchFTHEw2ZCiSsT/h4j+vVAbwit5zbIE8mp6vEep0utUJdSUKAIGImhNEWp2+6Bt8kVE6cdDtcM97VUlndWKQ4i6V3m1IKi/tl1Rqg71J+e+XBnSVs4CB1fcNNA7oW8Babl9sXMc12GFRqTwshve8fgNaB5z9rzdGRRpxEmIilsdfMFkSUraHNFYSamRrHit6IhfPBBmYjZSyjOt1a136dSuYQeG9mDyeLZpXhKwkmEGKvYJxrKqRRXAzBWxe01waQyazIPEAp7MJo6Zdtu68qC3ThRCytbZVF0qJBm89kEgivbBlKcYcZmzFrJu1vR4hYSskgFrCSb9RkK0+JhyrEVMrHMN7CMMefXlyQqRdsCttbIMOKePYsRnGostTkePiDS5XhW7qBoRjGwlHH7V6y49f9rCA1tJ3H0WSU91Rq8NvCwRomM4aqsphv3dYgmTzTYOSS+QdDf8KSP9YkYTb5NmkyK/ZlIZ0gnPWLLjFOok/jfE7F3N8H1Ur5zVV3MGiyTDDHhJn76DicgYDutsb8dUjG9rTXvDoCbzQOscvc+TGGxyogayn7NlNOSWX7JnB76nzHU+KrUI//Gbnqj43hu8Z1QUIDStfwqa5OtL8mZpCsTuERhCFFU826a3V3P+q+ea3zY+tmAMeTgFprYlwzD7r9a8yuAF/vX+DqshRg+BffB5bDR7HX73H47d1k8p4Ea7AMmRtz4yAn3oqThUya8X/gKZUm4KwWfUXg/vAinwRHwT/gFfH5V28iNiaGbhmEbHDZOsuaBgJ/1fynvzuSujFcmIz5YwVizGXLJQtgIzbEGp95r7yEN9X/5FeC7v/U+qr+9nhN6m4536F5PCK+sStPzAxs3LrDhZBu221DZ8M6IL0ac2fCt6NPR7RHPsWHZBvuTTaSDrNuknuOm6YrF70TGh+RuMy8K4GaRRC+TRu/X0V1Oi9MCWmm/zubyzs4ppJxVrlSGrGvLrdZQYG95IBAiWsuJxJBwUrlQGDIuKjcaQzlby3NyptWMKq+pKf3saCm9gaKpcS79uuzREwDCqfP5kuO5ON1HrB/1pFHOF/g5p1vxRu+JbdwAeKR6v6kv9/4CqndOoP7J0Ow74haVrgj69/q+UjtpYquSoxwcXaLg6i3MTrFJ4/VnNmSDoIrg8VZs9vE4XzoMqdGiM1h4iZDmc1k3yFgi4UQbDTqiU49P4vKWuytOnfUk5ouwrreatZhUZYrrIeQRyCAPeqvD5/Yr9jHur2Otnorzs61rLU9yT5zwSobcKRXDUdaapSbxVj9it5UWy+uqPqmSuONRHF8d6wnMv1S5AfAqrUvPWU3qXScXmIfYKRnEXg03bw1e99RAv4Z85fV/oOvaVtF9G3BVicTX35V+vLnKmnL2ipZYBLhOAVweUxcNPO8YmHhmLxXv9yuLwHw/bem5Sg3uaiO9kkjWGy6nqFRJKp2AXBNSLoFVR23g2h2nqJM0fiWvFMGYVKZMsiDc1689sz3smSHba+aiILBc4uuGqI71ED+eVyLzvCLAovHuKK4caJAB3T6SoDjQmochdYN/GVSEonJK7eKFS2WAgOU1XomK8nw2KdDN4VKdWOh2HwdZr6GV3Gt/lS+iDCoB5gluMS/Kpek08NVIEkF/Xo8+k4R3z7kyQUKma53J/LMEwHjqDwDkAJ5u1O3cEXn7VAlfaojC2i8+zQQ1G0u0qdXHErYazDfv8Tkh6AtvG7zsxgHA5fv6NRfWPVE/PXiLgK1qMTkgtFKZuv9h7vWBvlKgz5P2brK+kU1krHwB2Nhe9XSQHiRPbkXoA2+fkLZ6KnfE0bWX4hLpweE5U8KIJH/rBqyJY9obxJz4o15D/IiZmImZ2IhZM3O4osaryaSKdCEldtrWbqIlZbmmkSCGrh2RKI0TIYTMqKEsyQDnsjmRRqQ+CSCt7Zp40k32g93ViIy1hylJB+Kfawd+PUPwbqC60Pbr8af0Rqb2ZpD35g3ZBWEQ4BZ2E6SjERqR5gOypWcoBIBo8yMzHanlsQcpre0hOCd7KD6BHpo+qT0MdXp6WbqsRklbH0W6DEAPMpnaQ4h29lBi/NFDc8faw7Cm5PVnuTJcmgrdDdBTJx101JssRpRoNV0uS4WKXLCrdn3z5UsTIVMS0jVeD6F6Kdx2enm3p74i21bFgXc85JxCMPR2Vb4rLYIRW7Yf6/Uv0qkHoY3W16rybRtcTdTPL+8FYeinso/sa6UnEJBBBVxNosLwo244EX5GEzfosx3u0zHF4vgyWsQqLhNVkgNuL51YleemjBAm6VjAssPzTUxEVFQsxLBy1IaJ2Y/06ysNdOAWGsSWrhht1LkOdaC/MU4BXAK5BQkWItRvwoSLEHmGXGyMWDXUVEttceIlSJSkTpt3ZIr8xDTpMmTKqkN7Mk++gpaOYe/Lt576GmioRCOlGmuiqWaaK9NCS61CYIVRRjtktifGmGyCRdZZGQrGu2akGaGRgUlhocoJt8LBYut99MEny21yzhmbtdbGVG39rp2zzvu77T2TT7X3f/t7+m7RwRvT3Asudpt/7qVxOuuki266KrdUhR66F+rfhvvora9+nulvoAEGGWKwvZYZZqjhKr3wyn6XbbXNFTddDY8KFGC7HXbb46SddjllrA0OO+JglKiCiVGjCH+pz4pRHff5lRoA67p3CeqmcoKketMwSrwG/L6d3mD88p8tVpvd4XS5PV6fnwkIYmYBs7Kxc3ByQbil8/DyyeCHCggKyZQlLCJbjlx58g1VoFCRYiVKlSk3TIVKVarV1DjwXTeJtn7zVlCiSTW5T23+WlsCmtoPppQyDAeVdxrmX7LD8Bgbnc/NxqxYjhE2uOO5nlMjrIOHuPuGw4fg/LK+/MyvEDqPBOvGjym7wl3awQcWX3/nMt0ooJAiigPalRsRQCBBgPWcKU+kT8yxRY9A66x06sakIFQJG6RcjCfPksmS0Vk5Xx9Wqubtt7xvVW3/r6C6kbId/4AKnJz9gfIxZ2qgfGxWhXJQRSwjItPBHslLFUgNiJbUkFVBS0ZIS3FIS4DTUiWnpS6RloAKqdtQHPxUcINxYFBR4HqvwlD1gMGhlf7jIPAAcMd9RlP9WyLE4u/FBy8MM393CIi2YUajMdsEekcj3HETHXbmiJ/YOesEw2D1mwtM5BLkdeGSWMq6AYYjeGBAC7yEEXZQepYY0HU4uGJnhZwZ6CYQEb6Lpfwgc7RgJwHNODsKl9gJvwzoDjlBwLih+4hbO2fuIkFZVOyE5Qo8hLlDQOBn5skiVX9BG7IM6/KGuB+N3oeNbQnNM/XXAE/UThEHBAX5PEdxBSINCDuhEk4MQ/5EEzfk+/zv5bmQHBH+Qxd2Cwk7yZlCCTkk6Kb43SRPQEZ5frKf120Tbz1T+oBuXuAfsodrI6dzu7m5aROEayS72H6yk705Dna+l53dzcZxrBwEYJZjYXEvM6uQDDE9IJNCNjHiXmmMbka6Y6DBo6fZyLpUOFpqLqChOmoqHBWlNqCkeBSUTrKcDEdGzgekZEeSQo6Y5AOi5F4Az0jmsB0Gnbx0NjEpQiPaXqkEFZlKcChJlCSndJpsYjdSAgLJ8csR1UmmVRmXz5/7evzi3vf8J/qjF2pZ7blneY2OhoeUDo9savdod7hGq8Ndu2oPaH+4Q9vDDVofJldiuG+37boVdos2hytUGm7akl2p1daS//gbunWnUGXvMnT7GPilsH0567s5pF039ORjExF/Dnz74wfcvengd5f5mcHqsZEo7R4EOMsJLbT2VOgkBuFedTIXSkF4BwQfos3IrF5yEu4bxCoDAAAA') format('woff2'), + url('data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAGw8ABIAAAAA2DgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAABsIAAAABwAAAAchAIKSUdERUYAAFhcAAAAiQAAATQq2xtHR1BPUwAAXgAAAA4eAAAueIspnAJHU1VCAABY6AAABRYAABKe0ti5NU9TLzIAAAIQAAAAVQAAAGBo/J16Y21hcAAABWQAAAGYAAACAvsSjndjdnQgAAAQjAAAAIIAAAC8FwsLm2ZwZ20AAAb8AAAICwAAD3VvxKKUZ2FzcAAAWFAAAAAMAAAADAAHABtnbHlmAAATlAAAP2QAAG7Ii71PBmhlYWQAAAGUAAAANgAAADYY+Sd1aGhlYQAAAcwAAAAhAAAAJA8wDDZobXR4AAACaAAAAvsAAAUAjaApAmxvY2EAABEQAAACggAAAoI4BhyQbWF4cAAAAfAAAAAgAAAAIAQ9AhduYW1lAABS+AAAATQAAAJnkYfHqXBvc3QAAFQsAAAEIQAABs0y50E9cHJlcAAADwgAAAGBAAACAM4gBt0AAQAAAAIAxddkoRtfDzz1AB8D6AAAAADVg7ZYAAAAANjaLOj+k/8DDNQDiAAAAAgAAgAAAAAAAHjaY2BkYGA+9u8cAwPPlX+T/wfzXGEAiiADRgcAtmQHfAAAAAABAAABQAC2AAoARAAEAAIAEAAvAJoAAAJBAOoAAwACeNpjYGHiYJzAwMrAwNTFFMHAwOANoRnjGEIYjYCi3KzMzKxMLEwsQDl2BiTg7u/vznCAgVdJlPnIv0cMDMwvGOUUGBjng+QY/zGdAVIKDEIA7CIMcgAAAHjabZPfS1NhGMe/73NWFqhDKye6Zup0Gdv8WW5NnahRVORqpmXpxaK6yAJD8CIrgkJZaJEXXUR1G5QkJPTrosD+gMK6KLwIJTQsRcrIi1zfc84mIg4+fN/z7Hmf9z3P9znSgEYkftNkFpWqHuVyDQ5xwKEFsF264MYIyhkPks3qMVziRQ3mGXtJ1fe4IXIDpaoHHkklNuYcppYTD0kjLnOt5+MPfGoeleJDNTWg/sKtdWGnPIBV2hGSb8x9Q3WRTQhpeo1XCGGBz+nIkosIqX+MR/j8jurj/7Vx3c9YGe+fxbx+BKUbqdow0qjpEmb9KhSqGu7nnakF6gOS1Tig+hHhWXnSyj15cFKdvL9TXYJdjnJdgSAmUIGJ2IRa5HoMQa2DuaWkif83I0Ccqpt9+owsdYH7ShkTJGkbkaSmkCIWbKAWKD9s+Mk7+JEjmShI9J7nOyUFhXIKDbynVc/hXUpUH6r43vnqC4rEiQKpZs/ZeyN2iz2sZ51tjHmxRdUhg+9yzzj7DM95DrsaxD7MwSYa9zrhl3GUaOuJn7VnUWz0fTX3YdXeIsnwwhX3Ig59sOpeYCE2RxXWy034sBrev47neAwvVqJ7Qc8kgEaj72ug3aXmmT6sBJNIInsxGZuiH4tyEN5lH1bDvhiq92Ml9EJa2FeqXsvSz/vO0L+b2K3uIKIGkKse0peo+XnIMdRo1znvX1GcgL54lrmMQ5xRvzoJFwlgKBZWzciWHmxVv+j7KOOj5rejz55e05jhNs7+NMKqk/cX5u9CBl5jh9BHbYwz9AL2dVbYLdOwawMmliFqL/lBnjDniInWST1AhslvBC1FrPmdPOPzI3MeeY4DM5wRN6klTZxVH1XHBRtn0lx3Iod5NubZmGdjXjbjNgMzz1hLlN9tFH3kHGkm9XFtjcfayQllRRnxqhIc55wWJVSuIFPtYX+jaCMtJEzySSReW69xnnSTjni8l1yNP58lueQ0sDRCPgGxVOpT8l7dXhpcIz6Y/BHu/5zu3X4AeNpjYGBgZoBgGQZGBhD4A+QxgvksDA+AtAmDApAlwsDLUMfwn9GQMZjpGNMtpjsKTAqcCtwKIgpSCnIKSgpqClYKLgolCmsUlRQnKk5WElIS/f8fqJsXqHsBUFcQii5hBQkFGbAuS0xd/7/+f/z/0P+J/wv//v/75u/rB8ceHHiw/8GOB1sfbHmw8cG6B3MeTH6Q8kD3/o77Xvc9752+dxLqcpIBIxsDXCsjE5BgQlcADBoWVjZ2Dk4ubh5ePn4BQSFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTS1tHV09fQNDI2MTUzNzC0sraxtbO3sHRydnF1c3dw9PL28fXz//gMCg4JDQsPCIyKjomNi4+IREhrb2zu7JM+YtXrRk2dLlK1evWrN2/boNGzdv3bJtx/Y9u/fuYyhKSc28XLGwIPtWWRZDxyyGYgaG9HKw63JqGFbsakzOA7Fza68kNbVOP3zk9JkLF8+e28lwkOH6zavXgDKV5y8xtPQ093b1T5jYN3Uaw5Q5c2cfOnq8kIHhWBVQGgCq95OkeNqNV19v3MYRX1L3/07B2QhcA1TRJbYkAlDKWwvZNRJCpztZUmufpLNCynZDHu9kO01iJ21lp4lb1a1rY/veut9iab+c8hQ/5MPkU6i/2eWdZMENSizJnT87Mzs7M7sbbvznxb//9ewfT//+tyd/PfzLnx9/8/Wfvnr08OCPf/j9l188uP/5Z5/+7pN7d+/sj0fZME0+/u3tWzf34uij3RuDna3+9Wu/+fXmxvrVtd57P2s36otW3mx0RGfcWFpkeaOJbnNp0VKVjqpqpLoecBVuRe7mdtRddVw3doSrQlXyuvSmI5lNCTFEYBTGQsTmjtjc2ot4VyaaCMzgDcjQl2e0oqfsziBSvQDQKXhNwzPw6hny+pQsuGJ9KUc5m/OAD53c0p1y558xZhILNQyEK6IxePMaa7mDpINea9qz+Bok8kmbDfFmH4mJVfT2IsWT/fgquJntKd12JuwX4pHpJ4pnnKuKJ4b9SLrKSoRTwNsRPGaljnSFy+N4cvx6gbiFC1k2W8mF9XwrD63nO3vRUZsx/nwQvbQtu5OsxPnPQYuOOGOhxtqEJSQBnAC2aWFlXto1ze8chYwdampJIzScYRYaV5viLJZNbINrG0W+VhQyG5SSoYRT7hJwNYM7NNzvFdw1UNpE+ZbZFmOaaB54CSsTNsphLayHLXvexloQ6iUw34K3brFXLWvecnLI3NboiXWY10PnSEvaLjgPwUm4wxkOlhPbKUHQZyZ+42QGN/aiVy0G+foLjhV6lha7uX0tECdhvRVh9bq5dS1IENoEznldjrBW4U5EvImDmEd0ry4tUnTxSIwdEefvvisfdCFG5GnFTwJpgoxCS7QvIzDnvPVM9BLiQKKgrQOV7fJEDZMAXd7uyR7FQUrc7EJuz3m5VfKsD9gH8FSlpRpivKKaYmVG+ZB9aCgVolTFirIuGD93RZdfvCczMUTMhf3ojrMfp5CtQpGqklhx8hJbQYZctDCJbs6uBZjNJqLuetC/ibSk6XMpV3kelvw0SwledZHpsiCJ1dX41IgulypMswQc3VgzI/eA7IqUj+BXTBe+2hHo7u3RmMFeJFsjMRLwaRjKFNN2eBY7Ms60jzEeprGlxfJJPSrKkU1Z7mX7+Ew4GyZiaBCUj2dxd84i9sF1Gic2SJ3+W/ovN0R3BA5605GaQ4y5fBSbIGF9XSn+J5N1ioljTbVw2f7VFLIKCACaVHfeBO/OwB69Cbz2vokVVfIp1iJXfeKoT+NgxpKqwyGXvC0uC/rowWv0JqqMzmGWUjmqUOwBsQEEj4aIXgjsJXIacRhW8mea1OfBGyJRRK0BVNseTUcd9nkS8yQBFvniOlyV8ef7KQUXFdq+mU8f1R6/VO5gLKOUcVQVNX8/HQsX9VlRmhrvk40lWMd2IsUcKYVUFkz0emCGeF9V/HX6oT0IRDrGIpI+no712B7M1d4haU5XuDFYbE/7Eo5DfRjSJ5OIRnUb2Vb2zsnzkl+SqFO3UWJLfrabYCPgbd7jeqlTRDI5YZ2gGIIMY90jRozXzVefBfntqneC0e1+YJhrWios245Uf8pS1Q2dLwJl/2QZRJq8tY39pKQXipxX9tbh3hBR5dBoruxBVCyPHr9OQ53pgplhwOhCSxuhO7W3aew1Siu6tXSre6rmYaFVCTYYcpWmcxIE6MNoM2ZOm2smgD5U8YKiJ5IUQMkb6zmZDZBTwcTRIBX0OpPj7/rYgRNBbxyT+ppWRCO0aGkEk7sqRHybKwpNpjWprespnEY3dKtqm4lmplR+0/GF946Ov2PGc27xUMzQLJ8VWVnk3dhRd+NgZEZVigrOUVFRubMtfb64iWwQbhV1DNNHVnG1E2Db0HN7Zry6YaoDRaXVE6yHGCo67AJTTFy16MOQWuKqsgHOeuKlzayaWKZfXSzntlVFtadi1J5vodDLLBmZrRleZsvOFToMVfRC1/XaHlBpGkRlpxTrkPHVw6CIYvM9CGb0h5ST1akna0STM2JZi3toYsMvvgdB7a2jZO3/U1YrVlPVNY2qkV/7cVVzZoE2zHJt2EbyhqkTwPqZlFTa8tvvUIa2/HPAn4dpl2DkpcJK+OYbmNIn1TWN0SDSrUrmmGXzmiC0wfvahHYTxDasee0YLrSj42N2EEy5jRNgd8MzcV6Qi9EmOh8GMXo9ehOw9OgtMqlZZGnrTNUvxJs1rb9JFDNhtNGLmUSCcquFU2/JKUOjz9tw12XtTx+mApaXc6vqFwxlYrC9y1I2p/Wfyv8RjpxMHydZLM8i1GOsB9Z6/u2U2lnsvEYXqzw/+xOySIdGRzU7dH6hvalOAfA+1vfx90XN0ceJU47RKErF09iL5PvqtCTcD6Zjp37b1yldjD2DHUSPgSVPfU87ibLwL/suvQ65TmujGL8fFEfbx7S6T7S4JwHn93DO6lg4bWGjvEdbFSfumq+LnMSB516a6jqkLy4XcZbapvMwzvyiza0r7Iq5/ojiZoE9oORFV5xLMW4Sk+MfFmJTqmxs8ngHkvP2OZAkP4+rhXqq3VvQhMZhF6/4BRfN4CmS0/CR9S1bbu7ACXQHayw7DbrXTa9UL4IfI3MajyqlPhaPXHKF2hVf4bDQEYrzWyiJQK4txFJiO5WC7k67kfkSyVpcoJMBnWIKXmcBt7ITsLVA4ZZOjl8t0AVppu3rqbYvoY06cqpOZW/VRlFm3TSxhqbNz3/JhNFf8gul8pbcw43QVT8lxYUdAN9ZiLUEWPKCLPkvhv5kWgB42lWHy1IaQRhGewCReNdUkIvwNQIy0MQxxnjXGe+jJCpCJzRjdjxGWFrlRsu3YDu4Mq/Wm18p0NLvqzp1jkN/rRauLQ3PIjStNpS1jMYi4c9Xwm+xCCnqqAtCTXRwVSZUyxqXJRcXJcJ5qYNfJRs/zToqZgdnpsapSXCLhJOixnGBcFTQOCy0cLBA2F/g2MtrOHmCnSPsZgk7WRfb84StjMZmhrCRcbHOW1jjhFXexg+4WIHGdxCW04RvKcLSHKEsbBRNG/mcRs5Mxq+zScJ8Yh2ZBIHHCUi3kY4RUrOEuSghuRHf82Lb0X9eomezPfsSd46cKDU/8xk5zafkjJpS43xMDvGQHFMhNckn5CgfkcM8LA2byQk1osKKqU88IoM8ICMqoIKOM2T8Nx5YXVSehumq4kcuPd+49fO1Hp1q0w/f+kw2vUbXMO7Vzd0dS+1X/Ida4zHIXlR1A4GDaqMbCt4rJpgQgg0uBv5K49373eeb9qNvg/oQ77O32DM2WIGEAAAAeNo9jE0OgjAQhT+7ctljuGZtSIixBIEISjHRw3ghj8JhOIHltYJ5mcy8vzETezNhzQe7+2IhzNuEQ5ij/uN4oRc8rRDvjiGxUXPTPSa/EnPkvMmo15znwSt1n/Jarsq6f8tJb6T1lGrHfZd65qLEwFG/Tso00uPPQqlaTrcAQr8lpQAAAAAAHgAeACYALgBUAG4AwgEcAZIB4gHyAhACLgJYAngCmAKqAsYC2AMUAywDZAO8A+YELgR0BJAE/AVEBXIFpgW+BeAF+AY+BrwG+AdQB4gHtAfgCAIIWAiACJQIugjsCQQJMAlWCZIJyAoSClQKtArQCvwLGgtMC3QLkgu0C84L4Av6DBIMIgw0DMoNEg1MDZIN4A4cDoQOtg7sDzIPWA9sD7QP5BAgEGgQsBDaETwRchGiEbwR5hIIEiQSRhKAEpISzBMUExwTQhOEE+AUOBR8FJIVAhVEFdQWOBZEFloWYhbMFuYXHBdEF0wXVBduF3YXnBe2GBAYGBhSGF4Ybhh+GI4Y1BjsGQQZHBk0GU4ZpBniGloachqKGqIavBrUGuwbBBs8G3gbkBuoG8Ab2BvwHAocKhyGHJ4cthzOHOgdAB06HYwdpB28HdQd7B4GHiAexB8kHzwfVB9sH4Yfnh+2H84gHCB0IIwgpCC8INQg7CEGITwhkiGqIcIh2iH0IgwiViJwIoQi5CNSI6QkBCSIJJAkmCSgJLIkxCTmJQYlECUcJSglNiVQJWAldiWKJaAlqCYQJkYmXCZwJoImiiaSJqwm8Cc6J2wnpCf6KAwoRiiwKQgplCoIKngq+CtcK7AsLCyALM4tMC10LaguAi5YLmQuui8UL3Avpi+wL7ovxC/OL9gv4i/sMAQwDjAYMEwwYjCSMNYw/DE6MXgxkDH0MjQyPDJaMmIyajJyMnoygjKKMpIymjKqMswy1DLcMwozEjMaMyIzKjMyMzozQjNKM1IzWjNiM2ozoDOoM7AzuDPiM+o0XjRmNJw0rjTANNw1SjXiNew1/jYINhI2HDdkAAB42q19CXgb1bXwnBlJI2vfd2tfLEuyZK22ZVuK9yV24sQribMvzkBCIiBNCCn71o1XaF8XtrYPWlp4P+URoNDSlle29lHa/0FLKWlLKe2jO5QubBn/994ZybKdkP7/98fyWDNzl3PPOfcs955zQ9HUOoqCv9HPUAzFUrqHgOVoGUcDlUzGYqnWKOh9jN6nh7/x58AXO/n/pp85tZ8+59QXKfQPqLp/ravvaaqw+A71EGpbSukp1Qml3lBBDcfSqVZjLmNmApZwLpvPpC1mkywwNqlYIwuFnE70Cy+++Sb/zoshpyMUcjhDuDmaysCfQSvCqTkhoyXoWTKZ1mdQaxlzoIB+M2NjN4yN0c/87Gc/E+q40WUHfQ/lpDxUfzlioO0ezgx2vVTh5jQyhckOlB3kSgXYFXaF3Oo0VNRyXYWKpWNpQ3t7Mjm/ZX5en8nE0mnhmmotoI7Ib4Ylv2yA/AYK6BfQ5bOXqI6ZjysvaRx1fwz9XqLEd8fdo56PuUeBNn/M/OzARweeQP/Qn2effRZMH/0oGpF78RZ4ndFRAaoZIc5abmhlUpYwE7EwaIgZPflJtQZlrDmQa4FIwQ3WXKQFctluKCBMolsWPUZ/zZTFmtOA2ZDPZcMRM7zOrRsY/IB5rWY4xZyzOT7ZPjAwrRltSEZmt/O3tmYShZ8U0pltO5Qz0/Kt69zpoYZ3IbhlIL4uK52aUa5LeF3Jht+HZkegJWv9bzYX5gfb4qGM9SSFKNq0+Dpjor9BaSkjwm6SKlKZcqMxqWeTRS4X4XK5JOvRch5PkrVzrL6SNCK8xmKG9mRMjy8xYUwGYRSZNILdpIEAA1YgwAf8MrPJkqFWvO+GpXd3rEsk1rW0jJMPPJrj+wIdHbFYsRgDru5VrPpwTxI/TQpX/kH6U8FTHNxdakl2dydbSvza+tfd1ceEj+KLr9Oz9EnKT8Upc1lJS+OcycGZpHhMaChoHCErG5EF/BjafCFSBdpiZQVgrcaCVVZgEGVMbsjQkr5yZmD74OH+3g5wOBCMnRv0w85iKGV/o6f3l8lnY9nUxvTRuVRvb88FA6VDQfC3u+Oj8f5sZF0iFPLyTxxqeiIHWutEIr0+geYdmhvUZWRuyO8j00KYExkyGdD70uIRSDIqSo3eS9XkPZl7BSuGCEF51759w919s7N93dk/X3vtnyfjEy9VKi9NxFFdE6orEeuyQl0roQJmQzRzWROpN4xa2CzWmiRtoLoROAJXIbiMlOp+o47VodpkvhaSULBizrUWrFrEvJEAO7aWPmg9IBuUnm89yIx1jLKj8IW98nBvhP7AB+hIb1i+t3nvXixjuqk8vA6vUUo0TxQKkMo4qZSW40FjtsqgORoKoGkSyGVQ+xl4/cGBB9HnD/jyIK6fWbyReoQ6Smko5f0aFgxUKYNAshYI6QRhpIVM3tCIZZFG07NxI+O1YkGk95h24f7BCMdgTsA1mp94PD6zrxu6+O/A3ACRi0TuoT6UlOJ+qdKAJYqIcVHabRYlnaxexgEiHQXNhI6K+ykG1yOUZAInx386jkRvFpVoRbw4SeadB/GiSuvhWCvHSitaNZlgSGhbVs4ZOpdtgYBf5L43jvf2XrJhwyV9fccn2idbWibb2ycTicl23dZ/27Xr37YK14nhD46Pf3BYuBLYEugSRrJURqkeYCQVqQp3h6BjI4WMPvC/j8S/k5+ic9NrPnJqslb+ZwhOJ4bSaeP0DZxeWnGqqlAW8gXMRhgwGRvppgVwtYBwmXi8kAm6i9F8j2KsITvbWdqeP/B96OXXTz3RWeiON+Z9pZDH29+aPye77+CzEwLuIouvw+9Qfy1UpGx7Sg86PfeuDnQ6TwvLtagrHhvnkQp9Iz6Zj80TPGEezqQFOGKQy6RF0YMAEvGHZK6Ixp+eM6wb041lwz2RSG9TMVcYGcpli+pxw96Jzm2FfFOmp2tfSRcc6/B2lH3FYKDDt66UTXXkI778TGo6lxsxS8wzxc5teUE3IfzQPoRPBeJEZ1mjAbmUk8sbEGobCI70VW725QCJSjNmaj2SjxfxX4Py5tnZScmvbirDi3xh/U2/gjH+foJzhINTqE0fFSpb7GrObjf4WE4mAYlPXTGYOYOEYCA9T+RwHQZqw8aszFrzNd55ZcuQdlS3vq13arInWDZNx2EH/6pTkhsr7u7sOrdXF93Y5e4a3tCzZsrXGIa5iR9AomOhXN7XJYwR8SqFaGKigmiMWlOQU7k4lcqE2NWkrg6yyrH5gtFa3/UKtn3u3GKi+f6+e+hALrurVD63u6mvCX/68UfXs6+jsLsb1Mk3aFvH7u7OfeWJSG+0qReTKtobEXHza8K/+nIDQ3MI0TJhyiBeBF/OZ4YxKPGfh6/xJ6x038TMqZvRGBhS7100hkYqSuWoYjnyjyjIopCMcseS4EjCu0k4moSZJCSTmsYc16iuaAKcpo7V5ucPHYrNz9dGmaufnkvsVa/16r8/x3WWMk2Z3NbO4tZcJpIpdXHlXF9/Ntffn+vauLGra3KyS5efb++YsUts62L52XR6Nh9bZ5PYZzra5/NwW3c6XSym0938/YPthcHBQvvg6WgjCXISiQmTp0obkUdKUFVsSzAzhurUFYnzHyJZSueW+gidhghZBBJ5ajQRqMS/CdMCWQQSCfNBsBUlWK5T2gf1VkNFqtQh4YxFp6FOdNKnEaPVX7iq+p0/vCRZaapt8QvUt0jbDkr3oMOoNghtE9Ff3zizXA3sENvtX1IHdV20L9MMRO5TbfAg/AZZqPL7aJboykIuZJainwJcyv8Uwq93f238Wsm148KYu6hH4V14jNi0zrKOlXAsxXBaYk8xcopKbpmPYRrgWYl/uuCbfA/5fWzgyIAg94qoz0fEPiVin6FcKIc6LUKIfwn1e/k1uMuvdX9NsGXegceQLeOimpC9728yVHQNHNLMMWKXZwWpvFIGaqARlpnr3w23NgW6C+midty8e33n5kwh5nPP6EMC1oFJ97QEM8FUsb3Z1zHXOp0rjEXc+WDzCps+t/i/mBL9H1QHNUAVyn5NmDMNcK4ypzG5XCYNw0py0JHjOpQJkLMJjsWmeWzLfDI2b7Ai6zxJ5q5kGWsG/OEImkz+JQsMmQF6NI2wiKtj2DSyx5YZk7Du/r17T5x33n17xgZDHTrbcEtuLpOdyUR67ZJej7vZN33j7OxN09M3zQ62OQcm48PD2ezISHbDwn379t23gK6bLooGQpHsfLFjS9bXmOLfbYzPFWdvnJpC9W6ccpW8bw13dQ2PdHaOCGPXossNSNezyLJqKwca9qjgKhWMqMCkArkKVLRUjSwbpBWkFMPKKxSNB4/cEswTJSRU5iuIdyEDgYgPuR4MMqEY8GwD3fwQ/72hefjmNpfEtQ3bDE88AWagx8Z4nsiz9ajfPOpXjzggQmXLPokLwi7uw2HYF4ZwmNJHOL28Im9rgAaacnJCv6VDGVGYYcVp9K2QXT6o6VCzcenreoD81rZcIt9X3NnOvwEQLLgbc4GvfivY7vF2hL9OP5OeLWTHzRLDbLFjPguf8uVczpz/Vf6RYLvb3R74m6jT6K8TfkV2hMvCsRqOZSquhqodIakztpcTGAEGbV/Zvv0rC+uvbu2Kbi+NXzE2dsX4FZu6W2+a0e24e9++u3d0thdbW4avnpm5evjczmI/ogvGz40IPwpktaIeFUaOMmAsKOTVHo1VFRWDAtGcMdCv/8mBO2Zn7zjwk59c+slPXnol/cymL+zb94VNEzdeeeWNp36Mx4HahT+hdpVUtOxAM93Dwjz7UZZmWUop55SodUZEtoDpQ3XzHv+sh9v4hyDKvwDD/A76mYk/rv/jRH27DViKYwnCNggtNcjrpHi1JX2g1s4UauRv6/nviTheRDgOU7lyABkEMrfFTTe6ufZGkDSaGml5YyMbtnDhhoqA/SqQWzA/zJ+ZBliYFJBqxSKDlQWg+JVdu76ye92HE50Brmv0qnXrrhod2h5weCX8P2BW2tyy8w7djnsWFu7Z0Zbpak4IZEmEXOtS61y2nuPJc8Xx0hzBowdJTKWUaqC5hgYlGrBSXjUpBN/SmNH70LeAHo96Cg5OTfH/ggbN/xfkTmVhgH+EEtuj7iQ2t+oB1AgjF+3aDK40RYxuUs6B7IBnUTktth+0Uk5BV7QNov1gQc4QETGoOzwf7jpsWx/cVxycKmwv6WbW+Q5v6IW/8/rRcwtUtU/6XNSWhmoq2xRyjbxCX8PAAAOvMoC+MHIp4YQ0mueHKsLCA4InAxlzA5gDDGtGoEmgZz9Cm2vvnw7hQV0LRyX8s/wBCUxd+d9Vvvi5sPZSbpDSmCOkchFejBnEUVPQzlfQCK+eEMozBiIXzGUFq9JLga7oSQW8+IHr4B+EzUKAQT9WhJ5jr0pePTYpkfxu4HcSySRq6AF6FGH2qetO3Uevu45vr431QtSumjKWG+RqGWpWXW0WtwqZCCYSkBYXYK9EMjXLX4+uqL0nPwRfPZWlpz7E56o2C6NEfLrc92GqhFipDVYbkZC7a9u2u/buJdexy0dHLx8Trrpd9+zZc88u4ToxevXU1NWjwpUSZYIXjUGFbBM0yxRWTqFQURaMU9WyWbYkGfSBJUGoX/9G556urj2dt0y92dTl93c13UY/k9/e1bU9z5+Ei8KdPl9nmH9H9AsWnyNjNCLpbC9r6Qin8HAGeUXBVGhxmKin0CqbzMqGC5GCdYVhRo9ObNlbHXNPV7rn1u6ZnuloizDwtZeNOWO77t4rjHz6E9mR2AHPFYnLI+f3COOfvKY2/k5RZ4TKZq2LU+zXglZLqZWYRapaAjEqllyZekxowYg4NrAcHX8p7ulKrEvR39v1nYNTfwytidRQkp7uUDD8SxIIIsxc4O8KY8y8hfnIjWSUBOElRnWUIzGWizVUzI2cmanIgxDcrYEmDXxaAxdoYJ8GejWATBaNnCKKEtnfmfmaa7zk8CRhCYOC3MKWgAeqrs/ucf2EfnN39/TwxsTabW27urs3F5TrlIMdhfGe3uSmPYPntesSM92+8obejvQal845O56Zybb0eP2hzu5kc86q8+2c6t8SF+UHRiTR98ayQkoDR9MVmcA8eHoHkAOCsPSr78Jvnp6ij01MnLpaqFdC4x4nayjmslIjMTZwErpiFDgBzyDsVeirJo4of94+0jO1eXp6fqp0ZEI3eOlG+A7fPrN//ww8xXdtvExYo9AgePYRvaF5kK2pCyJpjNZMAU3MgGbLfciNeHgL/84MmoxvDw7SLJaGgPiAYm5HdU1YVmhMrArVNwn1xVktNIGuePWCGCcB/ZYrVBLt52Y/o5V8dMtjs5/WSfS3zaJ2/9LaSmvQlS6hqS5razv1DoHPgODbXZUbDSvlBjBEHDFGIoxA8uqeE5ITu1/9y67vSB7fBRU4h/8tWPkv8h+DGP8j0h62t/rE8eLG5NXxVptCMgj+svMhyYmdf5qCUbicfx7i/KX8A6huGNXVkLpI6jTIOOw+1hTskv+IZGoYrkB9Ps9/EK7hbXO0f2Lu1M8nBDm4eBXYGRtZZUdqGutoVlxlx2t12MNf/91LLvkuYxt4762B1etBUF0PyiB4T/50/KdENQEVWryK+lO1XYqTMJyk2q4VyVVk/QZCqNnv5hn5wHvnCe2q4LPwBOFF1f0sTVYMRbIFEKkCT/V+fe4KyeVzSK08+/LLeF1/sQlOLh4ga14McksQ1rAxASf54I0D6P0Oeox6s7r+KK6JZayBHfPZUfqZSwW55kf68yStodxoBt9dPiYLwT9CMBSChlA0RMtC3Ldl8B8yWJCBRAZ/lcEXZTAngwEZZGQglYFMZorEQBoDd4xzKyt2RWVaB8M60A2pQaEGk5ozsZUn/RD1g8IPfvaxBtjQsKOBljXAPxqgt+E7DXSwAeT4I6NKWwSpcOiP6E8MWTAZ/Af9Fdx14R322ecPVb12bNrUu0UWM0JtQFAwVcmR+cps6uL5lnXm9V3Nw+aymysvHJ6QWGYLmZG4bSAyMFhu1cXHWic2mdSe9v6QL9WS3b+Ff3Q4lB2Nj8R1po6W5qyAKzznsY1upkJUY9lgDnHqRk7NVqSKioyqmJWiGsD6LhwJEOZhM++j9eTzVsnElERine/oP79cPr8/gFfG44mxZHIsocuFEZWeG4zkBi4ZGz82MJaa7eiYTQlXgV+CCB4pol0j5v9GwQZnK43KVSuOq+w/bISfPNzTc3hk4yHbmHE0lxhPJscT+XHjWscFG3SDx8bGLhkYK3uTra2z7e2zrekWb2mc4AD36VyGA7aR0yoqqGPNchzU9Z6JYH6vEmbZ8hEZd8dmG7IsJiS2zR15Mvg4BieuGzg2juDIRQafO5UdDeeqKJhrb59LibBo0fhtlJfKlH3Xep/y0lIvaLycRsPaDJxNWbmuERoakZvaiDFD3NR5wSqorfxU6cP63LTonhhbaMxRL164puvQ8OiBIs2fx6THmndlhryV9TfR3r5s56QaATc2fHyk9/BalaZjfdPmQNcw9HvL8bESoY0LXRbo55Flkix7rIoKGMwcbZBVrscqcUhDyzWcQiu/VE7LAcE1n0YA4f2tGNE5GQEsq5nwcCNgQRS4eMuW+Egi5jV4Lb7UlVdOwX1jhdRQRLWRbUg2t4zx60T62GgLwomXSlFryi0ymUUWljFeGbeRgQcZuIABC7OHoRmvtuKUVSxNnAURLsU1I72MaUcUciyN5xhZiw2LerkLAqfx32WBlStOT1xkGtety6+bkdg3dfTsL5f393Rssksmrju/ZTSRGG1pWZtIrG15bbLoixc2T7ZHWvsuHh871tfaNMxbjl0OsZbpYud0Al2LMwlBz6LL24jfLMjq0qgsrI4QkqpYFAKniRuNwjzD01+PxQGCRh8ooall3pSf3zE10NbUG0GW63MDkez+c/iHoaO/J7U2yr8qzGs8vf8X/WPku2ipdNmvUVTUsspDUviiFKR/VcI9SrheCQeVoFUmkaHBKFnRgCHyaflKFYv4fDYYtDsCAUcz8lM2C1/twS08jftafGXRLfblQF5+wKHn1A5txSKrSCVK+LoSPqOEy3BPHmVJuVUpkePOBLmIXP30it7oSE6wmvSEGNWOLzbLbQqPa2q0Z6n/9/6TnZDKImF64NQjY2NUDbd/J7rcivQnq2ZkGLNqhWjECL5aASEX2YoR5N2Upl4/7+ln99wxiz2b7r9Kvsc/L/nb7K3VtqhPVP01qsIolvy1Ur2/hsoxKcSfIcpXNuqdIZWZU8k8HCWryNhKSCRqptq7WSCrdTVx68iMhXlr20aDc644OzfZ0R7uDkx1tOEr8KORbD6RyJ+7GRN9sBwfifEvQ/tQOTEa419ZwoEGyTPEX0qzTCuCYl7OX6djrwmJeXN28/apvmJ0TRD3Fc5V+2kZjfK/rMlLPN7lvhFb0Sr/yX2hXxzp7T0yOkquyYnW1olkckNr64akbuiS0dFLhoTrWHK2WJxNClfSb3GxiU6TcRE5rQlxskYOT3FhdJolOV0dndi9H6kuqzlArZjYxYklNdWB9JZkCsJ12gr4tVVFlQsP/AzMy7UVxkMT0hs1eKREdxoR2ysrSIOa6uAJFU4jagL0CnjgSQlWF/01/TExdaROdUgHwrmq9lh7qrkGj6A6RLrvotXIZkZ0l1MypUh3/WnobjXX0Vw7nQzYvU2h7hAi+YbmgmKzrnkwyv9KXIv4OhpjEzVczrI+q6/g2+uT/NgHBd8HfA/5mCYf+NR3q+Ejasir4SE1/Ksa1E0yrklZwfvWrMj8xM7RZ0Q7J3w6z6i2g73kF91+wLrWOJpI9eU7urvGc7OZ3n2WEf9McykeHxldm9/cphvr9LekI0FvRKPTDrXHe4MdWX9fxO0KKI3G0XxyMEz01uJbMEx/jLIjKuksdiPHypQaTimrNNiVwrZ6OoN31hFc4Zxe3M5F6slkRZ5OwYwAeTVnaJqbmzp+XGcMeuxaj01u0od7ITb2L/8yxv+u2WTRb2Rlwho5wtdfgBfmnoYxy7EhgYRQ1YogflS46kZ1E4dKsCJu2T7V0xbrDU2ROag7bzus4Z8Z7msZiYKXp0fCWdI+iy7vovZZ5FtIEXlZxZIvRTwgdtNt9OfmfjgNPL8HPoskNKnD0KiOBvtQSo20AdXTKJb5UJlqdSUE2NmjcPnM5XB0+s7pq5BO5vn9cBN/AG7kafgUv0+QeWp0+SlqU0nWWpRSkFWUiqW1lkjGWsiwyMZnA499dduVl+66/8GdV125E5h3H330Xf7U44/jNuTI1n8PtSEnfpKsIteIYykIfhIEXnpu8+foz27mn5j1ws/5q+HYqWbsh6DK/4nq1ftIiJiK1T5SCBLIuf8I/xzk+J3DsDA2zH96jMBvRT6SA/kyAeTLBJBxpec0AdGXsYS7AEnEHLYQsvkimIm9IqxBo78W/OTh2ajPF50dtZjDKT/6lwqbLZfMjdwbjQ/Eo/eOzA1k4/cm21QSVSF1bzwr+ljrF6+jbkV9Loud0AfWj40xtvcOCmU8CC5/FS6KM+g5Q6DmYwkQ4W09DCHZRbZgiDJmAcIYeMzhVp/f72tF8IxWYcwjYFIFBExbEgNTB6bQZ4j6A7wJl1BOvDMSk4JaCh6pVO00ck6JGtp3qaFVDQ+o4Q41fBLNbgp7LpUK3h0RFmZTrcFwRNhdD4hTWTDJM3gSw6725lBCb22ke/0Ft70tHoyTm0De8wejQaf1WSKd3tqX08d2NVEPIRmkRJJNeb9O2FBLrthOQwxjru3SNTesUUzCx2r7Zx8FM//7N4nMJroRx2n5Mee6GY9WUmFUNc4VI5/o+oCncESPbqxBi1WPJCb8Yr53oHt7Pr+9e6D3HOuYZyhU0I3yV4zm86N3jcqnphoGD/T2nj+IvslHCt61Ov7T8lTQm9mhhgX1jn7Bx0f23zeoNBUom5gWLhxVKDmFgjG7OLNUBCYmhJgI62++HNYUESSZwpEV/g+Wl1b8g7ft8docxju83Xwh/1+tGXr7AK11ODPznet3GMdVxVRhjc0uUTTIPnTY55Y8HI4ozz9/2LIhJdcNSuzx3lh2U36qzYuUXou/PcpqdepBZfOEh2l0CzZlHzVPe+gW5AfEqUjZ6DKrWXucs9vNrCKI4DezZjE0hoRdCSvjJUBEwquFiFDWgpVFxGKtLNk4i7ArzIK+znC4M11sGx5qK6aLoRC6OHsCQ+3FX5ZCoVIojK/hGzqKa3o6iun2WKw93dHR29PRkW43W+PtMxG8yyt+auswCURrO9VVDphYGoDmrKBTSmWcEflU0CAFOSB7WG5TVbRyCYnGI8F4JBaPCEfkxeBIPKQS0C+T8UCmBOgvwjUJk/j73Xff/cFHtn/EL/Fdv/2hY1/60pcmvzwwNQD+19rbX+N/jr5+Ga9p4nlP/5XsvaKZL6vNfLMw+8fG6L/yV03yu1DZ1KIN/kKfpDJUD9IgqjZpyS1Vce4w55YSMSDG51XNmpoejQg7/uHlq4xCzJWwahvEXEL2IZOA2fgv5T2F8cus6/RjbW3jY7Nz04nobGq+lJvOK8aVa5KBgruzZ+FQyMP/uWNNrMniHJtjQ4mW2eJ0Yucm5Dl3tWRKTtfMmuiwLbepeX0m0evzBjsdMWsoZfHNT8dGLB9NmdUGbd6e7XLRyg6RhzrpeVhLf5fsvbeXQ/o7pPAZKSD98a4UrpHCMSn8XgovSqEoHZXSUUQcqVVJJTOZpLhWUqlUVmykp+t36b1eNFy39QYf+uvxWOl5nxn/tXirf/G+ZAB08Gdxbb9AXVpeM5CGbBoCaTCnQZIGeSHNtcch7pUrh0Jxbq4AYwXoKEC0ANMh6AtBLgThEBRChRCb90x7aM/XFl8um1FpZApr261zVtqK62KrGO92z+NfIcpT/IfuY8QDml8dl7hiUtTWhGrTXdhR/i+uu7v6SU+l0acVX1tb+vrSriajR2k3ueNxd8jmC3aArruudAsqhT6tpMaagdZ0v8noUqsSXm/C68BrEFGEn/sQfjxUguotJ56I/ChCRyOgiIAswoVlP5bRDFkmkyXCCVruSXCep9XgEJbGKLwMkUSDE7dwayNcta7lhvqFLVoc2xfWJvavj/Qae1KRrH7IONefn8uOS0yjrS2lCFjz7q6utjDoQr2x/nGjUpfucLoDkUJsYwf/Tk8gMeAvhkCnbW0KhKnFRaTX8vA/8JrOT/2Ip3QM9SPqSTF2Yh/8Bj5ISSnVCbw6LsEzK9WKrQZ9AL7AfxLu7YO2Af73qA0xBk9HUzpUV7KMd5JUG9Vaboy1ccoCeAtczBvzshIPYC5QWkEu0l8II8DkR1Q/K72ZakQIcljwglt139d8JoKv3doYbzTTnek2R3yT2mTQpN6H3BBtdluDMnqKnpo6rlOrDEWEjy66AhvoE2hm2MtaFk1M+jMUllvnM8AgZZ/BNruRxIQgLUqf6MHz2AOPQIDEBjrxLoPWybFmHHyrpYRYCcP7RNNe2hUIoE8Rf1zhsMvV1OSCR/B9p9/fiZ8Wo42NUfwrxOsgov2W6H8tjl/TqjhZA9nVkGjJQjVSNulMdZUpI0hmFsH7xweFiEz4D34cYgO33jpw69AAoqkZtoCGfl5HQwOP+cQC0+Ah94pFzB8302MQJ36/s6x7iQI7FaUexlEyICdLzlsIVxszbOAH84Mj9DOXojaQb4rtfsQn74n2ZRNtQ23oKN2DOmWDhmtQYi4jGwo1RxCxG/6BYLxrbxf6gHd8bgyaMttKpW2Z9zYzG9/7d+K/gIS6Ga5C45ffJ1WSNe96AbimGgojqdo7qM7QohGUCBIHtbXc95oKPqT6rIo+qoIFFai8Cs2QScXNmhBpwGTS/UYG18o+JXtBxuyRHZbRkzLolUFOBkEZGGXgkHEOHcFzrCq+hLkdE+RXvTcX8OMYTbYK2TUZZVpq1ZlsNpNZEw/kLAZpONcR+2O40aI12w1Gh94038rko01tFKaDFbZQ99HPIDrICd3RXIZfiHNN95C4zKAVreGzTKPv7G5v310qkWuwHImUgyF8RU127luzZl+ncB1pGkwkBpuEK4GhHcmMd4nM+DGRGT/GMgM9Ty2+Td9BP6fzg9xO6QLUC6Cn0HsAOK/2/pll7xvwe2oRHq2+ZwDxmB8U4vvtYv3vkrEmkd5/nPB4lNI+GPVzUdHMXbk8JsbidyMXICPESxGVIKx/vyzav12bM96Qy+eZDqUjJHZKs860Z/2SQXzqQ63TufCaZoc7H2wvpXsToXQ1ggrBSuKFmKsQDpC1rGegSKMnlKWsoTU6tpGeofUUQPs0FctCLHua8p20Syyv17LBs5fvos1ieauB9aLyRlS+tLL8dbXy3bRFLG/2kvIBVL68svzltfIdqEE0E8o6htb5cQWGtqMaw7gGrpJFsxrX+RiziTJQblQrV/YxQY5ioP/bDLQw8EMGbmDgZSQPGanKzamAxDekk0L4zCHsDCE6+YQAqbq4PjYsKGwyN4xkc5L+2PwQ/19D80AZLJ2xWJfZOOFw6A0Oh+GDWxslrq1PPEF/QRuzxTo7Y7Zm7XGHAb8yOE79rRpYRRN//loSH2KiEmUHjunRqk0cK+HUrJqltPKKvhbhI1q02HAkKm4pyieHYdXjWK6H4IdL8T78W4d3wSuSxq+JgT8kpmtPmn9G8BUTi0YSI5Wn1pcLh6Vglu6W0jYpd6cNrrLBnA2KtlEb/a4N7Daw6Ww2ZTDGBZnKBwxgMoDSwBWVSCwl8Y4XcXHaahtg2PXSQpXN/SuFiuCRnSb0iv7wDVNaQa54l4kb95ZPTp4mICvfDz4icuqE0DrF3i9sXxmiRZF5S2KeCK82CXMBfiHwHqg0Sic9A9rlvL2yfCf8QSyvVStDZy/fBb8Wy5t1SsSqoF8+F4Tyl9fKd8CvBN6mQePFFWiwLuNtYT5Qd5I+4uIYOsQ+JDJGhvpgV8FE/aaufCcMiuVZKdOxqvzinxFMsrryXVAWy6vlDB5DQ90Y0FzDuwZ/Ya4gPoCTspaVVqdeaqMrUqecqBkxX+cMNj7ejvB7Bfv+fNHe3z81xViERxZv9e/IKXGP04cu95IYKCf2uDVOjgaHlXM4NBILDnHQyJd73NiO0K+OvCOGxf61a5fF3131zDPQMwB9dUF4bw68UeMd+kIit1pFuRWt0tar9rIzEJAuk1sk5ojgMS3K3c2inPP6mUYlknMsQPTM5TvpfWL5gI8JnL18F71DLB8NMl5UPoTKJ1eWv65WvpveKZaPpEn5HCqfWln+8lr5DnpbVe76s7gCQ8dYkXMEuQvIy+2Hl+FFxAuaE8oGKdMgpKGRYPACXjCwshG25/bbk5/7nPC58Oabk7fckiRXEjN/klHRbyBO8lExRF2zha40GRo5s4HBcZQOWQwZi4IgFPciKYvgPEewVBFtCNwRZbGCsCZOCUlHYMnQj41u+/LeTWtDHaHe0W137d00Fu4I8ZJcEtLFnrHL1sKey0ezLfz3i2voTTefs/fuXZFiqJi9edOee3Y1dYU7+Y9f1AR/cI1eM8m/NHr11MCFTbzZJfAGibUhtGgTaS0TecNkYVzaGbCql83JleU7iU7D5a1mJnj28l20SizfaGO8qLxdvUyuCOUvr5XvoBVVuWJpwhVo8EhWyxW6j/TRKcqJv1fnvRIZjzN4IbEGU11sm4ayI0oZVXZOpdJQtA1Z8uiPOA311fUjYa+iNguxJ7QU1jV1y+owt2NCnNuX31mKcgNq3eJbtBHpK7xiZQV7XMKp1KjbuNvE2RUVN1TiylqMqbA6L4nkqjHc9Xk6ZJ+strFeDUcGg93l7JyI9kcizs7+wUyxdzq9radza24u19exsEYuXS8Z7wh1B8fX5Fq7h7tPvUdLune0pWcKXEJiPmdN9842hEchXuVlhMc+gsccfEecZ/EWxmWboZMmgI1LtFpZPg8/FMsnE0z47OULxObE5XMpxofKt6LysyvL/6pWvh2+J5bPdJHyZVT+nJXlT9bKZ+Gp6rxvKeMKDF1ANXbW8w6pwzhrddrgmVqd7FKd7nobDdVhLkCskkI82k9dUp6KhbhY6usyQA7MizK4SwaDMsCxATQO42FLe0vQVwK6BG+UIFvqK9ElSRv42jhFDhw5btAHPofPYUr1cyllRaEGuRDaQyIqYoLZhAyT2LyweaX7oxivQwypM4TqWE8TeYFMGRkyCkn4hQxx8KoYnrWd0W7DkHXvmv6ddu+2rlpwRmxnZthXWT98sHHoGrqAQzS6Nqq/PxK3DDatCPCJ+IOZ7lwqmeupRW50D/UXL8PBG7G1pXfiI3GtuRrzg2NsjCTGpkB5ygZkkyHzTTTU2IpSW9OFsf83kwx5IvD7gxOnt8m6t+VOF6BTGl9tlE0oRir9q0J2sOwUYmQwPw+J8+WkyJ++AONCeinILuP/leXz8FuxfNDPhM5evgCviOWbQ0Tvhdll80Uof7JWPgsvV3k5kBP0Xpxdwf/IhqduIX38pziG9GqbbOdSH9gC+3ld+TyUlmyy4qryi/+D3vJ15QvQtmST+USbbKFmky2+jd7+FslJwSbrLbcorUHrpPUT1setkhNWuMYKB60wY4UBKyD6mqxgdSoqNllFr5SCVAz3ITE24hx5f/vNLtptNfttcpI+JHy1eKt/LyDhJUhvtCD8uumfkvgfZ1nrTXFsE8eyXhNUvMqVuX0CRyLNjvU7DpbHuv30awSvVHp6zy8lB41SfSpwmWOuvejaNbjb0dfXVzo0nBiJxYbjidFYbCSuG7iof/CCNX4L09ztbOuOeNRDjelEt7v81YWJ4wMT8fXp9LoEvq6PE91O9piw/JwQ5WfVB2iMmP2KGWiWLZOfQjwFptUGkRd+t2T3uUQ7buOZy+fhH0t2X/Ds5Qvw+mq7b3Zl+V/VyrfDG1W7r5WUz7Kngf9krXwW/nQ6u29nvSwvUCb4LbIxyJoeZXhIq+K0WqfUKe4grYhAQu5qfUrY38Rljhfxyt43qxl5H8bZXngpbG7gJ3XJXwyC72UEn4fYiM2Ur2wyG2TNHDISLbKKQlExsBVZLcYPc+6ZLESJxWoULEQL2Y9jLBlYbO09MtqdcxRcCfytnHXmXfydLvtTwXByQ+svJ1qzT/qa4J4DpdFLhuxRTzy8fw365oh5E4tDDijpk7PF/0S/0wX+MR1F1hFfh78QWs2KvPBjkXcsNtop2m11cmFl+TzxB3F5u5UOnb18oSo7weOgsV3oVC/JhVr5k7XyWfhp1S60NdPELvQxABfUyzayr0/62CzC9IOqz6yAELILVdIlmPCe0GITnSHxcGEcR6MNc6yb0yorYlTc8rge9p8I7OmcWhFIQyJ7cAyNENlDP/PjvqXQnr5fgFkIoqmG9tTGcLI2hiw8WR23shG8MjRuZJ7UjRvpVSyjbwFeiBeTLYsXG5zCcRR0Ne/idckkkrUOxI2lcjPSsQYtFzfAVgPIDGAwsI5mztFQsRg5i7yCI1XoCuuvJUPVkn1JNGNdPlSufnHnjAkpcx9Pwu38g9DM/xhG+O3Jj8+JySmXrV172ZhOSNEYXnMxWfw5Wh6uZqhcM0kyNIT59DrzFLIfglQWWf6xssNt49zBLGfq5EymIBvn1O2cGhEvqBQdL2JNZJZL6NNbSqvBDgmWkxAyNlTxec7tW2khDRz0eitD9YFkdG81olWIJestFnt762yjns7OnmXxZW8JUa5AddAbYYLE3x8rzwyxR9ifsIyVBfZ3AA8DHAMYAXgJ4LsAmwEGALkIRaDRyxcAvg7wWfgK0NcDXAowhtwr/BoaARSIU6CBoRal8G2kLnEARSYj7mnOL4WB483NSobsLRQyZPuHDXTsGd2zIS/PbaBnL7xQWiph/tlBt0MrwxJdfUF5g9UKMisorZyyQW/X0w1SPXdCCmUpSKTQ+aoUHpXCJ6RwrhQm8XIdfvoLKVwoPSF9XMqsk4JTCr+WAqrRJQWHFLQigCJMFeEf3vIQNrLml4vm+n2d2zrxgmZXzOhymowul5Fu74zFi+hZZ8FlMjldRmMjsT999CTsp39ImanHyh//jP5hPa0vW51DCj1YGiRRCV1qk8xK6C8pgVValRHlXqVEouSOSGBB8rSEZiXQIJHoZdqwli4VtDPaL2n/oZWw2oj2Wi1j1nIFZPo/aQZzQg8v6d/V01/Ww6x+QU8X9fCsHr6Me7tFj4ikh0v1sF+PRPA6PY0KO/XQoAe9Hpsywr+tVRQkD2XQXDtE9jS3kHl3CN0gJ6GCcRHB1rAQ90LixTIIK38O2BuVPmbAm7Z7Wt0N6FtvlJ7UagyhcMbu1ocKxbOfabT6vhuMtON054Gc5IPV80BQGWbgNGUY+XtvVcskkYzC+7saSnVCxuorGuGkJELWEgjWkiwwGVJrSk2tBlfIAXzIqXObNzlGGY8VK9X6NuT3sRohomF5RnsyZ27EKhi1QttGJW4rVs64FSJfk4s3U/dRR3Us9SxFnbqVPEsAD7NE5n6f7L18n/rSiufPkufPVp8v3gyzqI0I9ewif+pW0taXTgmxu+PUc5CEB2p7Zgi+fB3bfry3t6Wlp6flud6WZA/62kv2fhbfoa9G7fkpPY33aPTUa2QPB3GOcO4HlQcfvEZJUZt4kpAxkxWqp9Of/3watC+23H13SzVXPo90t1CWEcqSFS22+LnPpZ9+ehcq+OKLFCxuXHwbzqGfQ6TSPAi0rkJSbzA1ImCFf4f/zvEtLvqh4KkRBJ8TtkA72R9Tkj4akd21lf4GlaDGyulQQf6CnGblXBPra9P8RENrNZxbiyw15KzEtEUtzWpZLW1yciZphY5xtLq67CGEJZBQFzHeRcj4I+FGuSwOfsFHplQDENiMOYCPGUJ/yAI8vXVw8+gV8+ZtG2h6wzbzlitGIuOeJlfGPXbc9eqbDPPmq64PjvV02KPFAyMDbq3WPTByoGgx9WnVG8cHzDabeWB8o1fQi3L4HbxEcoXsyDPVmOwyNa2RyUkGGw6aiaXFA6oywhot3udFgjKDD+TK4WOxiDEw1n9/T/wTnWW63NlM033uPppupu9oanrklTvueOXi+Be/GL+YnOHyYbiFaaVk+PwEkZaBgjWgD3zzU498/dMD9AceeeSUqXrey/morFkoK0TvFAgcbORTA5/+epT+wynTI+S8oD/A68iPWzU/8f5zeoDwrJhnpaNx1tnKOS6u7/8cvfdTSWR3sNRR6s+UCUcCgVwjbZLMgF5KUw+DjaqaT6iNONLHo0yQCuDd8YCJczg5hyPAqjiWhA6KvnzNUiBxtkveer4+bXr+24cOffv8fzu8buqiiWvHx6+dGNoZbFXxf4WjspbMga/qzv/G+ehzaN369ddPTFy/viXYuvmgu2nwI5kLEBwbF19grmDISmzZcbUDMg6wOzi7HZnv3A0+8LFq7gakSpF2iSXnaxkrkuUBwEuABQhYeJHtim8dPPitQxs+0vaBNVt6D/X0HOo954jmZbiO3fXA4Sh6c+hbB9uyR7r7LujtvbBv88jnI8nDX1tYygeYpFWUjoqW7XjvRabk5J+QPS+jUzIwyeCHstdlmKZY0mdiiKbJFTHSMiFE2jCdNWv1jWsmkB03kUgzM5Lpfv7XAt860TykEWFNlIvSPWTScKyNY03VaNLa8DwgtdSycYiBY33hSF9vpW/TQauKvz06sz59jvvA+jlF3u/paQbdwNHhsSO9XLf7xvXDnYkhqNg9wQEcn2NZZGjEQMQf9pR1LotXxmlSnEbjxbkv3hrNhVjj/8tsl0ePOHbr+lp7RiXm4UTPhYODF61JDJslBz56ILkmFFoTaeptQp9TW7qbw23rR8MO/8DRoeGjg357jA9/6HqYig4nWoabm0cSieEown8zwtBtjHxlzGvzhRdijSTgz4Lw14TGc9p9/rOkErxw8eDgxUND5NrUF43iY2DwVdd/dGT0aF/f0dGRo/0L0eGWluGocBX6dKE5cy+yQSLIEy2WgwZkZhuVsoonyXnYitKj9NgiBU6qU1QiNpbT2tCEI5lEyaUNVbydUMuKW0ppIvHjJGz4/fLk6MvnbZKJm8LJK6+c2rJly9rXJBLrlo6+g+XywT5/nadCMuauTJBcKLhvLDUy+9O+pey5ZU4Lyc+i76Sfp2JUoewJgSHK+XF6ls3NGWwGmzwWdggZWlDNz8okM+Jg0mkh9f80eVqny9vSr8zdei02moj6TR6LD4/otRWJXMJXuTwpjkPM60I0kPwewVukRpEGS1k0EQOHDD5ZJdPLZdhKnOUimXg8E2Eai6NcUVlpDHAebSMyqCs6qQk7VwhqvOwUq53RUh3HaahSpczKwZ2NUsyjOBHjE5hSk69NLRvzltHf1vmZqxIda2QjpKtDxwoqrsqBRHSU/DvCSyfVX47mwdDBZTAd3RHOzVasSc7gtlrdBkbe2Zbwr6BoErkVq7BhPMvAV2QhvR+Zt4y+tjwB7SYRMatG+MLKvLR6fIhzEDmT56BxJqh25AcHMu3tMfBHOAPtJ0zrt/lt8kQ0eBquXca2wgkcZ+dcn77GCFSdKXgGPk5B19RraGD0hwIBkm92RpbmaYHE/Dp6Omi3B3FqmsjfbjK+NqqPGig3dff1GTQZBRcwZmSVaJLLRDNRe5uUg7aY3cM5tXawQ0Wlw8cEisOMrRqmpJYd975MvWLcWMzXxxDdaZXbFR7naysZun7wI73D4sBfEbLs4O3T8XIdHnASHtNWw4DAx19B488gCetLgKGVa3ZgRraGOYPVYJVnkkHP6fi3OuizcG99Gt/ZmLaa5HdGduU7arl/KxiVjIMZQuOIYrkaAEOE85JhuIRhREP21aP4Z+QqHsNZIT8zyKdSyyAleU7MUwjOHnwCbUHLepVcNqXzhuOcV1bxhr1hS6mnk+tpUDdZXJxNawHL0oxKxjK1QCFyAK0gRfGJD/88p61OnGJ25Awm0/sw2mtTl1yiMwYbkWeIk6qM6SDEzsJnq3KuMH0OIV3eROXKHgiEOTogq2isnIatBDQBDdvUaGA9nBabnoISr5FH0OHGFSr7jPLwYlFVW5AA3D450BatCsApQTefUebV5B3tJnmyIWQh29TuAKdxy3CenNvkNoW8Fm1tLyWZEfkHw1cvraSrqVCNIn1aTJXlP1OPayzG6nJ2765HqiC5qrJKhC1F5cseR8zCOWOyii/CxXwxnzSl59Qpq80QWAKxVC+gVoJJL5dTudPKpBrEYnLvciaBrtPl+gpSqH4QS7m/mA8OID7wYOyCo5FT0g5ZxeFgPSYta1nJAEkyOeuofwZ5IhD9jfOe/v7uO+aWkfs0MqMKB60i61uRsgV0Ro7WySo6HWtuQD5ZPRQEiOUwrO55WZdLc16Y7/SHif7MlBv9CqeM8yidsorTqW9ORLiE3soZtXrQQ0WOo/KRWIrVhi3M7nDujBN75USmwzlD04pZvDofciVtyFSNGatTFZ83gS6/JGcINCFp6sVHCNiIcRPg0FQwuA1ueZNllTitTVeCLTjDaQKw0m+DN7duJfCaPGZ/8oorpvi1yzy5Kqw1y7TOtRP28SQWHLNL/YqsA/0WDolnZrxFP07ySZupZNmJk0kdLHIevCFOqfTiBFMkb+0NzdhExWATrIuwS86YY7oKenrryqzTU4/Vg3+6HFRatsw5FXjkc4RHkGx0y5R+zolBVSoJj3gVlTo2EZAdW8Yly3Jiz+AKrMqTrZPvWHWtTppd5RAsl+cI5isRflNUa9mRauYMMmUIzRsEdkqZUjYkHI1WrlHTQBGtJfIGATe2Et6VOPZXNdoqkH8zefy43hh027VumydvMBl/sxrqekQjVZUJIIZfAhyqOQAkz1ivpAxSzqCsqBQ4P91e3cQST4tbmfwrbmQVp3oLQgqwdabgLhjxxhXP/2BkoGU0Ch6eHolk7KbOhxFvuhffggk4rEPSZHGR/wJZW8JR0V+FA+iZvP4ZaEm5hqVnqK6HPFPUnjlQuTZSV7mi3H70TIWefb72zAsfRM/UQjmS6/AG6uMAPq/5BMnFFfJpCmSNjgl//qtv3auDQLFAjsET2/CR/rV1fb2O2sXPdGK7OMdkGjYg3sU7xLqHxBSTM8b/121EXNcfDPanUgPB4EAqFo/HmuPxZpjOz7a2zuaFa3FDOr0B/xL4hbwDsr4nrtWKZ00fzIZ2tK2hj8RS6/gbKbEs6BBMNgSRzYxMDE5jq56ttOI8U/F8b3PAfq3Z6rXZArJOxUA8PRx0bP/8P+Bfr7X4TSaXx22PZ4opT96xvSi0Pw1e1H4Ir+WFZJxaw6nVIaeZc4bq1vIMdbE4dUFqtX5ZooT3j6g65VG7IxJyRoN2j8cSN7SruxK53paOsTxMp1utXo/Pbmtsc1nMjoQ1FC+2tLi92VwZr2kJa83kzGhrWVE7M7qh7vRzRN+CmG7TBQH2qXu+2tXaukayA+6Kv/WHtpErrr+eEnE2Azjuz43H5JZxVhWHHFikF3XuM4xJyCMxB1hxPIi+54+qu2QRJ84XarK32X/wGZXCb8gOBbsCMJNosToamxob0Rx6tG1aoexvC3b4BH2D8ekjZ9x5cKSx0cPZlZzdbmSN4kCqrER2PvKnZaej3UGr5bzMTIPe3+YLdQZcobDLFQ41wrS/w99YcP9r4HxZoN2LbopNLmdTk9PVJI57Hfl/JFbMCycI8+LWe966Fw7UJgZDYPUT3goi2ddeDhWC8EIQgkFoDnK5Zog0v9BMNzergimwpThbsxtwLgLW7STBDB/kSc5XEMZTvxsjbunUD8pSd/Dzse6wy2GwDbe2DtkMDtf6nMXrsdo8Xqs92mxzRJucMO3K+B0tOmXUnOrsTJmiKl2LI9P9istkanSZzc4v+WxWn9dm94o4H0c4f57gHFGc8XD348wJpVFp55QI3CQ5Fh1PmJVHC2qhHsSpWaUOY7wrEOzCFGgNhVyN4XAjHKriW8T/4xjlGPWCfMmR/0PhGzqaMkowHa5DQDUK558/wCooTqogmwlkFZ/M84zZd8NtR+Pfyd/CVybgVXyy/J0TQlvnorpO0pa5G99Po7bt5N6SxPe96H2BvgfdWy3V92Fyb4vi+3PQfYKUtydIe+g+QN47SHtb0H2cvHeS9f9N6L6F3LtaMOzpxduoX1IX16+fFjJs4Piu3SMXnySxUbdRPyPnTWvxTpewE7csMR6VvlzMEPPvXBisO1X67yeFMc4tvkO9SB1Ffer9+D6K2vwJdbGOBuc/MD3x+5+I52WrT+itYmZS5synZX8wVA3AEVPTTntadq0vWoL6cr2L722ow80EP7J3Trc/Mo/eJ8n7Xe34foaap9N0C7rfY8T3GxdvoUOMDt2zOXwfQPjcTfD5ogzf70D1c+R+dyfhFXS/kbS3NyzQO083wmvoXkPotZ/6A+2BNLr/GaH3B6h+2gwvovvP5PCcPY8yIb/pfeKYqPeJY4Lmfz6QicD+KO2Fx1DfXnJ/LdVGy+A36N63Ft9fSrUBT+49Q5hu5xF/s5o3qV7Km9RKtCJ8JG8SVuRNgv90iZMCvfZS+2gL0v80dSCF/28WH8Ivt+z/ZkmW7Wf6v1mSVXH//+v/ZbmaHAkQ6g6hz1Z4NMv3DcVibk887gGd8IqcHOBpbvaQh/fgoqVgsIQr8AeF/5flTzjzGf/yDfWvi9XHZNy7F210hD6Jxr0Pswx/gj60+LgYL+krm/RHpRCT4qT130sltmVp64cyy5mgPhaSf35lwvqqKEgK+B/R2xf30C/X7ytCxhrgf4QPPXwZH3oIixpU5vblZfDM/yZOUCVFUDv30nsWn0RlGijNiQYGEPXwchturRZuwt9bizc596KLpOUyHusP6bWLtzNOMtYbygvXWp+y0oetsNcKYSuYrUAL0SfX6Z/Wv6VnjuphQQ9RPTj0oNYju0HPKaXQ/lcpPCuFOzGajklpkxQel8KHcRwKFKVwN0Lbu1LmWilsxQVAgU8jx2fSLwtD2VJNmp+vpqKmWukzxKL8VYxFIWEnOBZlbVcsRp61CbEoJhfByU30wuIv6F9RJup35btYmczUJoEnJfCwBO6UwJwERiXwlgT+RwLflYBC4pA0Sxi5RKKQaKA4pYE+DfxaA1/UPKihr9XAYQ2YNSENjV7KTRpOaYKiSf8NHSR15+tu0DG8Dn6rg5M6+JbuBzr6Zh3oyirdUKcOtDqPjpbr9JQCijsVMK2AtAK8CrhfAXcqIKWAFxXwhAKuUsBWBcQVoFiKzxHQUhJOxxbOn00uoelQLWalGmCkJ2Kbrgat5OtiVm4XY1Z6omLISk8zvYBDVgodOGKlg8x//gRjXnycuVzHUhx/hPoaweGPGOniHuaqGu8l6/iTuepSXG9Rg8rczlyF6h3mL8D1UFv3MsrFJ8mzJ/iLxGc3MarFXzDXoWdP8RXSvoKKLzKq58n+Nt6tG6QWqOPU1dQnqTupBxA/ToQDQXZhnAuYuEBggT3+Ae748QW28EmuUFhgB+/kBgcX2OkHuOnpBdbp4JzOBTb5US6ZXGBLt3Kl0gK75d+5LVsW2IOXcwcPLuBN84VlUuqfvYjS7J/aZUeexcrTo70r7iVn27cNvt++smTFpq73LPdn2/eXX3ThhW+/WbfVCu/U37x8xj1j+v732eF+u69uw5bm6m/21u01v0/QAWN7761lO7313/94hj3qP55+Y/2u+k3i5de6HW3q/wDKYGr9eNqVkMFKw0AQhv9t04qIHhQEe9qDeGtMW3rqqebQS04p9CgGuqSBJVs2baE3H8GnEE+efASPPpR/krUS6cUsZL/Zmf+fYQBc4B0C9XePJ8cCZ3hz3MIJPh23cSPg2MOVeHDcwbmwjru4FK+sFN4po8dKVbLANV4ct9j3w3EbQ3w59nAneo476ImF4y5uxTNCGKyxh0WGFCtsIKkNMMCYNGPW8F1DMYp4QvikKV807/igKqpI8Vb02vG/ZCVCs97bLF1t5DAYjOXMmFQrGUWhL6day7hMFTJWhbI7taSg2XGOBDk94YTzJGdQ9kmxZU3CXohVutWJbWonjejHp/9XW/tO6qt07x91+51EHneoJpMH7aLaQsHtGKrKjfrcaYARU8oWmcnl0A+CEf4zZWO8b66qbSp42m1TV2wjVRQ9J8WOkzhle++9eB0n2SRbUzdbstma7bvesT22JxnPeMfjZLOUBdGrQEj8gWg/gOhViPIBiN5ER4IPvujwAXwi3nvjtbHESPeee95t58nPqID6/vkeh/E/H7ulQwUqUYVq+OBHDQKoRR3qEUQDGtGEZkzBVEzDdMzATMzCbMzBXMzDfCzAQizCYizBUizDcqzASqzCaqzBWqzDeoSwAWG0IIJWtKEdG9GBTnRhEzZjC7ZiG7ajGz3oRR/6MYAdGMRO7MJu7MEQ9mIY+7AfB3AQh4T+ERzBURzDcZzASZzCaZxBFGehsQIP4lpch1dwN37A9bgdt+AePIyHWImb8Q2uwV2sYjVuow834nV8Rz/uxSP4C3/ibzyAx/AO3sLjiCGOO5DAe9DxNt7FR3gfH+BD/IgkPsXH+ARPIIU/cCe+wGf4HGn8jF9xE0ZhYAwZmLBwH2ycQxYOcsjDxTgm8BPO4wImcRmuwOV4EffjIq7EVbgav+A3vIQv8SSewlf4Fl+zhgHW4mk8g+fxAt7As3gOb+IGPIpX8RpeZh3rcSuDbMDvbGQTmzmFUzmN0zmDMzmLszmHczmP87mAC7mIi7mES7mMy7mCK7mKq7mGa7mO6xniBobZwghb2cZ2bmQHO9nFTdzMLdzKbdzObvawl33s5wB3cJA7uYu7uYdD3Mth7uN+HuBBHuJhjvAIj/IYj/MET/IUT/MMozxLjTHGmaDOJFNM0+Aox2gyQ4s2s/68ZYTDPeEC9nvYGylgawHbC9glMRIORwp4ifd62NFWNZB3bL/mOPZEPhtQmLAnLJWOtLRXDY8MDVUNJWzXNxgy7ZTtHwzl8lndqXZCmun6dHXoS3lgemArqExGY8KS1cKiMeXTyhvKjyo/prypvCuq08IMYaPCxoSZlfLcEVOERZMicitdgW7UVTds7e1ruqA7diihW3bGsDTXdhptSy/j7kRZvtlNO3pZRVPSzjvlB8Z4+Yyccb5sRk4f162yE91Ipd2yIZZRLqRBKbXyGd2RNCh1lphUWWSNnsYib1AK/0OlvlKvVFfq9bSVuKes1Kx0FalfqXKTPilHgNThJms8AW7SrzZLlCtFXu4SeW+JCLzpokCNdZOBuJ3JaPJ1BHN6xojbpm1JFhCvxrATssWrUIFMusn6UqWbDAppMd3JGSk1P5fV4kpIXLfknrp43nF0Kz4pdyVs09SUPPmOZTbn6o5pWCkpdVIp9GfNfE5OEj+DCuoyedM1sqY3wRg3Erq6yLm8ZoqgNuXompgiW009Jzvq5YhL7UHxuo24Zlq2lFMrrlVQVpvT466h7uA9znBnIOVo47q4byygxfOuigq5SAF7Aq5hJlSmrtAVimvZYLFTsWK3ZIW6iMoUu1Vm0LZTpvev/BeWnuwcAAAAAAEAAgAHAAr//wAPeNpjYGRgYOABYhMgZmJgY2BkeADEDxkeAXmPgZCR4QnDbyD7D6MdAyOjPaM9kP2NQYRBB6jDhsGLIYIhjaGEoYlhAsM8hmUM6xi2MexjOMZwjuEawz2GZwzvgPpZgPqc4TTIDi6ICFM9TXjoNhJH50PpIihdCqUjobQL0BZGhhfAsGAAAPKGIUgAAAB42sVYW0ycRRT+zl5/FliW7XahK12WFWvFSpE2pjEN1kpJ2VIgCLUhhkih3NxuG7o21hjS8GBMY3w0aowPpumjDz4YTUwffDDqgw8+iDWxsUZbL6j1Xi8tfjP/D/x7I9y2ZpM585+Z+c4358ycmVkIAB9elhhcrW0dvYgMnZ5MYufo5NHH0ZkcTKcwBhf7YG4OBoXAASc1Hnj5vZoWH+ShB3tjiBVoV1qBGyVDg8k0dg2njh9Dy8jk4BBak+OjgziSTD1xDGPJ40NJpFidRPqE0jyVVuUZjRfSZYBluYXtttBLaL8UZdT7dZ8NuqzUJXRZoUvRZRDVaMb92ItTmMIzeB4v4FWcx+t4ExfwHj7CJ7iEK/gRf+CmeMQvYdpRI2dNBPHp7yrpl1nHlNPlPOtyuaZcs+5+9zueqCft+dAb8g54X/F+ZpQZLcawcdY4Z1wwMYy3LPmxJa+bsqTBkmOWfMOUPsOSE5b81JSlPZac//7X5FYWt2SDJZstOa2jJ+VmFKXCZcqA32wPRC25m54F/RtChJqY1m7Uvtuuy9NW3YH9qKOnQ2wNo4o+3cQRt6GGfq/AZkTJy4lhjDBCF3EUo4zN53gJbxOzDrU4iRQjN04ch1RKhKY3yw7G0clIbmV8dqMN3egnQgpPYhrP0WrciqaKoUPHuUZzLVbNtOTUtXhBXv8HIx+2oIlruBWdOIwjSHItn9HxuhUesvslVoDLrWNRgno0Yhf3cwcO4TFMIM2WaBE9YZ9/NK/9Yls2uB634T7sQQK9GGA+F92+vnbt86zJY7M41rxcUw3YiRZmmB48Sm1knWZmn08kx856WvBwXSxmC2F2XMsM7Lyrs7DXjurm1/wOFubylTO18wtn4K0WycX4mLvKPPeXh2PnEbJhrGy0kz5WK119LW3Zbi+4MG45Ixz0U8y6zeT2t+MGrL6Fe6m5ir75zOvs4/0LNyd7i+jTXY2r1yd8eAnO8/NTOcDsm8lhZsHjDr0ys/uwJl4JZPUOU5r7r3D//COrGdn5TLScsflRIlyni3l7ZTj5EWu4M+0n4Wox86NHma8y7x9rx89vKcZMb8+LIzixrrbyW43zHM08XSbxdJHs5mdQz5tM9jk+hWeLziGXjbnTgtb7pSrDtoM9Zli7IR5qc3dylUZxFth/HvyWsXs9+C6jZ3Hu9BpX4lInd0iz3CVR6islKBskJBslLFVSLZskIrUSk+1yjzTK7XKn1MtW2SH3SpPcLdtki6gXTZ0+W9Wbz09GlXm5Kp61mtEwOY6Q5Th5ndQ8L5KvyDWOD/P2/iLtTctr8q5c0neqRiTkAfq9h78Eusi6S9d6KDsoW/EI93Uf9Zf51izQRoRSG8LehX7CvPVV4XGcT4w7vIkrcA+/uqkd4AwmuPtOcSdM4xo5trP3T1p28X2qZCd+0PIgX6dKduB7LQ8wskruw+/0f5eOeyd+ZXkQv7DswM8sD/CN6yDmtyzb8Q3LfSv0xNer9MSVJTyh2q8u0a4YBhjB63qG7fhLz+FPPQcH10cZ/tGav7VGdD7bz1pCI/axRUT1CzLHdeMc3/3v63HRgowvszU7knaNi6s8zpzZtgSCkaFvyNEk6EtPjpeyNVczNIp1DF9yxofxMFH6NPJie2ZLIgPLo71i+uSQdcIb2sYXxF1859dwRjPMIIaUiE9KpUzKxS8VEtCZI2hlDtXrA9zATcxxIP0rTnGJm1nKof+tUTlWZRn5D/8+UWEAAHjazVp5jCRVGf+quqqP6mump6en59pjFnaXhV0u5Vx31w0iKIoHKqIQ5ZIIAiEYQ5TVJSauJGJc+cPgRNGYDYjAiJKQkbConWiitMgiaTFrtEJEsVEGsVH7j/L3fq+quvqcnhlCqF+qu45X7/i+733Xe2KIiCMXyZVinXPuBRfJ1BW33HSdbP7ETVddK6dc9/Gbr5ddYqGMeJ6ossNcG9deddP1ksSVqe7wG5cCfpMSk81G0byE10780fhfSnvnnjz+iydcs/2k7Z/cfuf2GkpXWVdONstJaHuXnCNXy+fkLvmePCA/xvmY/BLfFz1XSl4DNY6j/2Wck2Lj6yKeJfn7Ba9hJLy6kcGZxZnDfR7/I14dJYv4nfGek30o+XldWhKsdbf3rHrqf9vAtw1800CbE3g7ie9Mfj2OZwa/UPdVfIc3huHVjBieGfgOvxhHToroY0km0MtJmZGNskl2y1HDMnIov4GjvUP+hNZToGBdug7PRUvtT2od94v8rbeeB1foQ/CkErxBuXpXjVVyKwvK2OiRA1iSB0wZAQwZBUxwsYD3NwCG7Afi8iv5Na6fAGLyJBCTpwFT/gjY+Hf4TVzGANAXMEGLEspNAAZoUga/Jsk9VYvFWix+H2e7NupIoycjuC5AHi5D6/vZ7hMo+TTKmdbFiormI+bLKDtHSgSoySoPUiS4nvcWvAZQAxreQXBkEf91xRlcVQPa9qilEVC6F2d7le7kjH7e/65fTbKGI+xzo11SOvoxzIjqUSooaQzrrnZSe5j6erZRW80I9ciC+TGYXn7vh5SnoWlvYsareaFnRIozwuaMsDgjkjIFGDINxKA5ZiRu5KA1EvjibLxNyiznaI6zM8eZNsIaRznTpqB3xvGtqnec9RZZ7wTrnWS9BTkGMKBtN+P9NqAs24GknAKU5U1AWU4HTDkD2ChnAjE5C7DQi7PR451AHHr6HIzhXDlPMvIOIC3vAzLyfiALC3MRrj8I5OVmYIN8GlgvnwGy8llgRm6TL6EnB4CEfBkoy53yDfzeBZTlm/IttP5tIC7flXvQ1r1yP+p8CBiDZXgE14tARn4OlKUCZKhT1lGnrKNmykkNcOQoUKKWGTGSRlJmjJSRkg2GYziy3kgbaZQxyJ9Ac0+BWjOgvgENY5F7SrMb8hBkNwbtX5O93oLshxQri7df7hYzv0eVzNyYvQA17KUEHfY1xn3QKEdxPe8tQXvb0CsVPHXx7Hn817wjeFf1Dvnaui6v4UG5V5rmD+3aJmhFv+fpaLvhNcM5s4SzueYevNRh35Z06xFt6bKluvf73tpGz992rLgXLjnS0DqAI16K1sazGY7eDbWZS664ndow/HZofnWMSWukeofO0SOt96XDUqetaf2vRNe36CpOa6whrdv78Lz2KGgFK74/YftypcseUjqddAJ9+9vHaI3awoYjbwa1BaNucTlSquHb+QgdWlYnoGlvL6qnjl/qrKHTOkclrcuLWlr7zHxd+rBueHmIaoSgBX9+NLttau8aorIzjOfQ8lr5reKcE0pCI/Rij6iZGPgPnXX26kW3x9DtCUdG+TCluwYtvEi/b9F7hdqwAt2t/rWO9vvgzbM2t7+HMEj+elNE6yZ6mbX2Wd6lozrnBTwV2JKafo+yzRa//HlRb48Llu81uWJzph7tP7KWlwR6HcT1ocjo7EBCvX04F0hXaAdFu+E1ZosCnbpT2Sv/ztUlIyVe7ScPQ2vrgO5uoAE7dRhkZqlT1v1v6mvzyLvnBeWignmxoCjZkmxQ8zDoWvF5UPOt22Hy4SDuH/ZeVP4G5VhJcs076Ft5pa8XdV1ajhnxtEnfyi3K8G8j+r2+IjrU4YEVOQI3UtdRn19uQAfec3yY0XWtMXiqd08pX0xTknSphnRwI3IXiZ079IvLPvyirQ+UQu0XBPf8P8K+LnKORvugatcWteLfV9v0qtvlpR1t6wHntG9Jg7Zc9gK907XoFgfIdz3SQjSfUO/Hu3bZUD4rZHI+yEn4tH8Yz6vheGq+bN7HcvO4v4+RdZVx9SLuqt4BnxcLpEaFfaswSlwKZbrR2eNOm9XhndUDbq5k1g8fzwUapys7s6w0K1nsPcc0z3pFzD3jyWPkWEBHc6ZsAWKyFbDkOMBmfBeX4+UERFgqykvJDsCRE4G0nCQn47mK+zJyKpBl9JeRNwM5OQ3IMxIcYSQ4ykiwwEhwjJFgkZHguLwFKDGOsxjHmXK7fAXXdwAJ+ap8DdHlQSAmXwcSjPIyjPIyjPJGGeWNI4K6G7GXiuYsjMmWV/HmdIzzDDwd5YjLOHeg/R2IDHciGhbZg1EI2hfZjYjyrYA+VP/XMRupD/1/Qkg7wz/PRG9jaM9GhBrH6AWRnzpOxbkJ9EwTSVBuC6i9nTRWFE6DWmnQeBsoMsaM3xxocPwAbiUw2pPxfxauokcW5y5eZUBTfZyIvrewPhyFgDNC/ugxBFDXMR9x3G1B36NIhzgWkqJkZppjCCA4x3yU8HUJbw0+bx2K7yord4r/OwUunBz22LfE4Ev3kRyIrUSBGWMLNFa8vA0SMgX5uBstKHk4Q8zM1Sq2Tu1xfgA+bwu8HEJ7yE2VHV59/q9NlzR9y75EPVLx2wnwqG/hm0NlxOiJRf2x6Nz2Y83I71C9bMKiN3Wt4ZFfo7Oh4jmVDbYjUXFzWR20jIYEnvf+HPWGfE+s2B67Uts3aKOLeLcYWLf+9GwbvRPqeae79DDaPZIB7fI1+3vvg/jfm+9rlM7+dW5dQ52DZKm4Gvvo03Cp02ca3uZ2z+MW33VU0YvbKx97iMZrx6Mg+oLk1zmHXu625YG/1tdDcLX32R7ld+mlYJZqXVjTXt9y8hZKb1BnPcxjRXUdNSrnYbNb1/XufUSW7B6ytGl1OoSRlorvHHgBaqWq1MYtu31dTHmVvD5E77HWU15tnnaHTq609EowH1agk1XOoum9oH5Rs8rT29RLdqQ9e6DMN4ajZx/PsTF0P0VLET2FZdfEgkyL8uj78r1bZ2YGrd4Eubmof963n0ur1iFuz6xjazU016nF2/IHi5QI189sKI+9MuTYddsO+e1QR61aT608h9Q3VtgpbwMMORcw5e1ATM4DLDkfsLmGE5d3Ajm5AEjKuwBH3g2k5UIgI++R9+KtWufJc51nhOs8o/IBoMDVnjH5EFCUi4Fx+TBQkkuACfkIUJaPApNyKTDFtaBx+Q6QkHsAS+4FTPm+3I/rB4CkPCg/hO+t1nym5UdAjis/ea785OUn8hhqOAxMyuOAIT8FJuVnQJYrQpb8FTDkb4AtLwCG/B3ISR1IyouAI/8A0vJPICMvAUVZAnLyMpCUfwGOvAKk5d9ARhpAEfHJf1Dnf4Gi/A+wpQmoFe/z0ecU/PYMME1dMMs1u1n6uRNcm9vIVbnjEDfM4RsVZ21ihHUMPe1jGVttRlSzG3XsAaZlLzDJdTeDvBzl6pvmn0n+xci/UfIvS/6NgHsX4oniXIGcs8i5MXLOIudK5JxNzsXJuTI5lyDnkuRcipxzyLm0fAyYlk8Bc+TimNwKbOUegQ2M5jaTr6NcuTO4cqc5mgNHHwQ9FsDXHPk6Rb4WyFeLfLXI1zL56pCvo+SrQ74WfL6qlb5xqQJb5DeAXvUbl98CW+QpQK8AzsrvgDl5BtgqzwIzXAecgFyoXR6vgn8FcK+JsZtc17wU80WNagojeATjXESrp7LVnfimiQjFTF6uopF4Mf4cqLdJe7TyBjq6s5Kr9N9rgzJIr+N46u3WYrD/NIAqLnPQlUh+zV1ZTczacUWglYUN7Zr2oKrD1hhd/3stcsWRKKu6wi9rXN2rdVr/IH9H37LeyvEtU2NF51X9uwPd1rFv/sttq6Ua9ALlD/jrtzrT7/r9qtJX1li2xmiWcmXZd7W2wexklX0/EK4Mu+F7l1nchs52qj1C3TzAu30Rb2N+cF+7vTGdwe/hTdXbo4Uh5rTO97tvBE01OMO8nKTR0z+Ic96XikqQcWYGutLOBz6r+e9rkXXvK0ndhXbq+lJYZzbbXcYLM7lPxGIu0Yb1jXMXnPL/svQDDPxn6QvkYVnVLrsYfYIEfYIc7NQ61jEHW6us/gitvkGrP06La8gVQIF2V+/Ki8ktQJLWN07rW+ROuRitY5rWMUPr6NA6pmkdM7SOjhwBRmkjE7SRNm1knNYxh77s5q6iEncMJZhjzjOjnI/sGMozZ6zzxDbzxCP0YuL0YmLME6foy1jME8/Rf9lAz8Wh52LQc5mgzzJFn8WktzJLb8Wht1Kmt+LQW1lHb2WS3soovZX19FYK9FbG6K1k6K1k6a1spC0vc7dRglnqHLPUeeah88xD55mHHqHnYtFn2UCfxaHPMk2fZYY+yzR9ljR9lln6LA59Foc+y3r6LFl6K1l6K7PMX+bpPTjkxzj5USQnxsmJIj0Rg57ILD2RUdxtoSTFuRsyQ8nROyKVnMzJLnBnDyTjMsjFFZCHGyAHt4b7JKto4UnU/xQ4/DQ4+4zaNYlftY/pGtmH/zQ1wcIAXaNXaiN7S3wt2wg0cp9IROXTk9z7q3xgg/lnk7un9M4zJTsm5cWipNiUlDglxaGkJMjPJHmYiuwSi5E/CdI4RRqnuE6gsvOb5Fq5EfU+zjFug2Sq+ab37lT0On3gzVBTBvl/E5LX2hFnUb4t9jFG+bYo3xZXQ2z2Ok4pT7DvSfY9Fel7mjKdifTapLRZlDaL0mZR2hIcTdpf71ASkOFOsphcjt8dHEcJfYqF2X+TOwhbNDXCdQwrQgG9W63AnYRGZKWjdQZtnMaSZbZltPFPtWKylRg95mhNdtjWs8O39n+9JfMNAAAAAAABAAAAANWkJwgAAAAA1YO2WAAAAADY2izo') format('woff'); + font-weight: normal; + font-style: normal; +} + +/* Logo Font */ +@font-face { + font-family: 'TypoGraphica'; + src: url('../fonts/TypoGraphica.eot?#iefix') format('embedded-opentype'), + url('../fonts/TypoGraphica.woff') format('woff'), + url('../fonts/TypoGraphica.ttf') format('truetype'), + url('../fonts/TypoGraphica.svg#TypoGraphica') format('svg'); + font-weight: normal; + font-style: normal; +} + +/* ICON Font */ + +@font-face { + font-family: 'argon'; + src: url('../fonts/argon.eot?u6kthm'); + src: url('../fonts/argon.eot?u6kthm#iefix') format('embedded-opentype'), + url('../fonts/argon.ttf?u6kthm') format('truetype'), + url('../fonts/argon.woff?u6kthm') format('woff'), + url('../fonts/argon.svg?u6kthm#argon') format('svg'); + font-weight: normal; + font-style: normal; + font-display: block; +} + +[class^="icon-"], +[class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'argon' !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-expand_more:before { + content: "\e20b"; +} + +.icon-menu:before { + content: "\e20e"; +} + +.icon-favorite:before { + content: "\e291"; +} + +.icon-spinner:before { + content: "\e603"; +} + +.icon-delete:before { + content: "\e900"; +} + +.icon-edit:before { + content: "\e901"; +} + +.icon-use:before { + content: "\e902"; +} + +.icon-loading:before { + content: "\e903"; +} + +.icon-switch:before { + content: "\e904"; +} + +.icon-error:before { + content: "\e905"; +} + +.icon-dashboard:before { + content: "\e906"; +} + +.icon-logout:before { + content: "\e907"; +} + +.icon-Network:before { + content: "\e908"; +} + +.icon-services:before { + content: "\e909"; +} + +.icon-system:before { + content: "\e90a"; +} + +.icon-vpn:before { + content: "\e90b"; +} + +.icon-storage:before { + content: "\e90c"; +} + +.icon-statistics:before { + content: "\e90d"; +} + +.icon-hello-world:before { + content: "\e90e"; +} + +.icon-angle-right:before { + content: "\e90f"; +} + +.icon-password:before { + content: "\e910"; +} + +.icon-user:before { + content: "\e971"; +} + +.icon-question:before { + content: "\f059"; +} + +.icon-docker:before { + content: "\e911"; +} + +.icon-control:before { + content: "\e912"; +} + +.icon-statistics1:before { + content: "\e913"; +} + +.icon-asterisk:before { + content: "\e914"; +} + +.icon-app:before { + content: "\e915"; +} \ No newline at end of file diff --git a/luci-theme-argon/less/pure-min.less b/luci-theme-argon/less/pure-min.less new file mode 100644 index 000000000..040c34a1f --- /dev/null +++ b/luci-theme-argon/less/pure-min.less @@ -0,0 +1,12 @@ +// out: false +/*! +Pure v2.0.3 +Copyright 2013 Yahoo! +Licensed under the BSD License. +https://github.com/pure-css/pure/blob/master/LICENSE.md +*/ +/*! +normalize.css v | MIT License | git.io/normalize +Copyright (c) Nicolas Gallagher and Jonathan Neal +*/ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:sans-serif}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto}.pure-g{letter-spacing:-.31em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-line-pack:start;align-content:flex-start}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-12,.pure-u-1-2,.pure-u-1-24,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-2-24,.pure-u-2-3,.pure-u-2-5,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24,.pure-u-3-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-4-24,.pure-u-4-5,.pure-u-5-12,.pure-u-5-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-6-24,.pure-u-7-12,.pure-u-7-24,.pure-u-7-8,.pure-u-8-24,.pure-u-9-24{display:inline-block;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%}.pure-u-1-12,.pure-u-2-24{width:8.3333%}.pure-u-1-8,.pure-u-3-24{width:12.5%}.pure-u-1-6,.pure-u-4-24{width:16.6667%}.pure-u-1-5{width:20%}.pure-u-5-24{width:20.8333%}.pure-u-1-4,.pure-u-6-24{width:25%}.pure-u-7-24{width:29.1667%}.pure-u-1-3,.pure-u-8-24{width:33.3333%}.pure-u-3-8,.pure-u-9-24{width:37.5%}.pure-u-2-5{width:40%}.pure-u-10-24,.pure-u-5-12{width:41.6667%}.pure-u-11-24{width:45.8333%}.pure-u-1-2,.pure-u-12-24{width:50%}.pure-u-13-24{width:54.1667%}.pure-u-14-24,.pure-u-7-12{width:58.3333%}.pure-u-3-5{width:60%}.pure-u-15-24,.pure-u-5-8{width:62.5%}.pure-u-16-24,.pure-u-2-3{width:66.6667%}.pure-u-17-24{width:70.8333%}.pure-u-18-24,.pure-u-3-4{width:75%}.pure-u-19-24{width:79.1667%}.pure-u-4-5{width:80%}.pure-u-20-24,.pure-u-5-6{width:83.3333%}.pure-u-21-24,.pure-u-7-8{width:87.5%}.pure-u-11-12,.pure-u-22-24{width:91.6667%}.pure-u-23-24{width:95.8333%}.pure-u-1,.pure-u-1-1,.pure-u-24-24,.pure-u-5-5{width:100%}.pure-button{display:inline-block;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-.31em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-.43em}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:rgba(0,0,0,.8);border:none transparent;background-color:#e6e6e6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:focus,.pure-button:hover{background-image:-webkit-gradient(linear,left top,left bottom,from(transparent),color-stop(40%,rgba(0,0,0,.05)),to(rgba(0,0,0,.1)));background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000}.pure-button-disabled,.pure-button-disabled:active,.pure-button-disabled:focus,.pure-button-disabled:hover,.pure-button[disabled]{border:none;background-image:none;opacity:.4;cursor:not-allowed;-webkit-box-shadow:none;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{margin:0;border-radius:0;border-right:1px solid rgba(0,0,0,.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 3px #ddd;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=color]:focus,.pure-form input[type=date]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=email]:focus,.pure-form input[type=month]:focus,.pure-form input[type=number]:focus,.pure-form input[type=password]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=text]:focus,.pure-form input[type=time]:focus,.pure-form input[type=url]:focus,.pure-form input[type=week]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129fea}.pure-form input:not([type]):focus{outline:0;border-color:#129fea}.pure-form input[type=checkbox]:focus,.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus{outline:thin solid #129fea;outline:1px auto #129fea}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=color][disabled],.pure-form input[type=date][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=email][disabled],.pure-form input[type=month][disabled],.pure-form input[type=number][disabled],.pure-form input[type=password][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=text][disabled],.pure-form input[type=time][disabled],.pure-form input[type=url][disabled],.pure-form input[type=week][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form select:focus:invalid,.pure-form textarea:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=checkbox]:focus:invalid:focus,.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=color],.pure-form-stacked input[type=date],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=email],.pure-form-stacked input[type=file],.pure-form-stacked input[type=month],.pure-form-stacked input[type=number],.pure-form-stacked input[type=password],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=text],.pure-form-stacked input[type=time],.pure-form-stacked input[type=url],.pure-form-stacked input[type=week],.pure-form-stacked label,.pure-form-stacked select,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned select,.pure-form-aligned textarea,.pure-form-message-inline{display:inline-block;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form .pure-input-rounded,.pure-form input.pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=color],.pure-form input[type=date],.pure-form input[type=datetime-local],.pure-form input[type=datetime],.pure-form input[type=email],.pure-form input[type=month],.pure-form input[type=number],.pure-form input[type=password],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=text],.pure-form input[type=time],.pure-form input[type=url],.pure-form input[type=week],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=color],.pure-group input[type=date],.pure-group input[type=datetime-local],.pure-group input[type=datetime],.pure-group input[type=email],.pure-group input[type=month],.pure-group input[type=number],.pure-group input[type=password],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=text],.pure-group input[type=time],.pure-group input[type=url],.pure-group input[type=week]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0 0}.pure-form-message,.pure-form-message-inline{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{-webkit-box-sizing:border-box;box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-active>.pure-menu-children,.pure-menu-allow-hover:hover>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;padding:.5em 0}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-disabled,.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#eee}.pure-menu-selected>.pure-menu-link,.pure-menu-selected>.pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0} diff --git a/luci-theme-argon/luasrc/view/themes/argon/footer.htm b/luci-theme-argon/luasrc/view/themes/argon/footer.htm new file mode 100644 index 000000000..a184ff111 --- /dev/null +++ b/luci-theme-argon/luasrc/view/themes/argon/footer.htm @@ -0,0 +1,46 @@ +<%# + Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material Argon Template + + luci-theme-argon + Copyright 2020 Jerrykuku + + Have a bug? Please create an issue here on GitHub! + https://github.com/jerrykuku/luci-theme-argon/issues + + luci-theme-material: + Copyright 2015 Lutty Yang + + Agron Theme + https://demos.creative-tim.com/argon-dashboard/index.html + + Licensed to the public under the Apache License 2.0 +-%> + +<% local ver = require "luci.version" %> +
    + +
    +
    + + + + diff --git a/luci-theme-argon/luasrc/view/themes/argon/footer_login.htm b/luci-theme-argon/luasrc/view/themes/argon/footer_login.htm new file mode 100644 index 000000000..366e2db2c --- /dev/null +++ b/luci-theme-argon/luasrc/view/themes/argon/footer_login.htm @@ -0,0 +1,44 @@ +<%# + Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material Argon Template + + luci-theme-argon + Copyright 2020 Jerrykuku + + Have a bug? Please create an issue here on GitHub! + https://github.com/jerrykuku/luci-theme-argon/issues + + luci-theme-material: + Copyright 2015 Lutty Yang + + Agron Theme + https://demos.creative-tim.com/argon-dashboard/index.html + + Licensed to the public under the Apache License 2.0 +-%> + +<% local ver = require "luci.version" %> +
    + + + + + + diff --git a/luci-theme-argon/luasrc/view/themes/argon/header.htm b/luci-theme-argon/luasrc/view/themes/argon/header.htm new file mode 100644 index 000000000..854392f0e --- /dev/null +++ b/luci-theme-argon/luasrc/view/themes/argon/header.htm @@ -0,0 +1,192 @@ +<%# + Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material Argon Template + + luci-theme-argon + Copyright 2020 Jerrykuku + + Have a bug? Please create an issue here on GitHub! + https://github.com/jerrykuku/luci-theme-argon/issues + + luci-theme-material: + Copyright 2015 Lutty Yang + + Argon Theme + https://demos.creative-tim.com/argon-dashboard/index.html + + Licensed to the public under the Apache License 2.0 +-%> + +<% + local sys = require "luci.sys" + local util = require "luci.util" + local http = require "luci.http" + local disp = require "luci.dispatcher" + local ver = require "luci.version" + + local boardinfo = util.ubus("system", "board") + + local node = disp.context.dispatched + + local fs = require "nixio.fs" + local nutil = require "nixio.util" + local uci = require 'luci.model.uci'.cursor() + + -- send as HTML5 + http.prepare_content("text/html") + + math.randomseed(os.time()) + + -- Custom settings + local mode = 'normal' + local dark_css = fs.readfile('/www/luci-static/argon/css/dark.css') + local bar_color = '#5e72e4' + local primary, dark_primary, blur_radius, blur_radius_dark, blur_opacity + if fs.access('/etc/config/argon') then + primary = uci:get_first('argon', 'global', 'primary') + dark_primary = uci:get_first('argon', 'global', 'dark_primary') + blur_radius = uci:get_first('argon', 'global', 'blur') + blur_radius_dark = uci:get_first('argon', 'global', 'blur_dark') + blur_opacity = uci:get_first('argon', 'global', 'transparency') + blur_opacity_dark = uci:get_first('argon', 'global', 'transparency_dark') + mode = uci:get_first('argon', 'global', 'mode') + bar_color = mode == 'dark' and dark_primary or primary + end + + -- Brand name + local brand_name = boardinfo.hostname or "?" +-%> + + + + + + + <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> + - LuCI + + + + + + + + + + + - LuCI"> + - LuCI"> + + + + + + + + + + + + + + + <% if node and node.css then %> + + <% end -%> + <% if css then %> + + <% end -%> + + + + + + + +"> + +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + <%- if luci.sys.process.info("uid") == 0 and luci.sys.user.getuser("root") and not luci.sys.user.getpasswd("root") then -%> +
    +

    <%:No password set!%>

    +

    <%:There is no password set on this router. Please configure a root password to protect the web interface.%> +

    + <% if disp.lookup("admin/system/admin") then %> + + <% end %> +
    + <%- end -%> + + + + diff --git a/luci-theme-argon/luasrc/view/themes/argon/header_login.htm b/luci-theme-argon/luasrc/view/themes/argon/header_login.htm new file mode 100644 index 000000000..8605c3936 --- /dev/null +++ b/luci-theme-argon/luasrc/view/themes/argon/header_login.htm @@ -0,0 +1,119 @@ +<%# + Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-material Argon Template + + luci-theme-argon + Copyright 2020 Jerrykuku + + Have a bug? Please create an issue here on GitHub! + https://github.com/jerrykuku/luci-theme-argon/issues + + luci-theme-material: + Copyright 2015 Lutty Yang + + Argon Theme + https://demos.creative-tim.com/argon-dashboard/index.html + + Licensed to the public under the Apache License 2.0 +-%> + +<% + local sys = require "luci.sys" + local util = require "luci.util" + local http = require "luci.http" + local disp = require "luci.dispatcher" + local ver = require "luci.version" + + local boardinfo = util.ubus("system", "board") + + local node = disp.context.dispatched + + local fs = require "nixio.fs" + local nutil = require "nixio.util" + local uci = require 'luci.model.uci'.cursor() + + -- send as HTML5 + http.prepare_content("text/html") + + math.randomseed(tonumber(tostring(os.time()):reverse():sub(1, 9))) + + -- Custom settings + local mode = 'normal' + local dark_css = fs.readfile('/www/luci-static/argon/css/dark.css') + local bar_color = '#5e72e4' + local primary, dark_primary, blur_radius, blur_radius_dark, blur_opacity + if fs.access('/etc/config/argon') then + primary = uci:get_first('argon', 'global', 'primary') + dark_primary = uci:get_first('argon', 'global', 'dark_primary') + blur_radius = uci:get_first('argon', 'global', 'blur') + blur_radius_dark = uci:get_first('argon', 'global', 'blur_dark') + blur_opacity = uci:get_first('argon', 'global', 'transparency') + blur_opacity_dark = uci:get_first('argon', 'global', 'transparency_dark') + mode = uci:get_first('argon', 'global', 'mode') + bar_color = mode == 'dark' and dark_primary or primary + end +-%> + + + + + + + <%=striptags( (boardinfo.hostname or "?") .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> + - LuCI + + + + + + + + + + + - LuCI"> + - LuCI"> + + + + + + + + + + + + + + + <% if node and node.css then %> + + <% end -%> + <% if css then %> + + <% end -%> + + + + + diff --git a/luci-base/luasrc/view/header.htm b/luci-theme-argon/luasrc/view/themes/argon/out_header_login.htm similarity index 63% rename from luci-base/luasrc/view/header.htm rename to luci-theme-argon/luasrc/view/themes/argon/out_header_login.htm index f6e20c9a4..35e73ec46 100644 --- a/luci-base/luasrc/view/header.htm +++ b/luci-theme-argon/luasrc/view/themes/argon/out_header_login.htm @@ -1,12 +1,14 @@ <%# Copyright 2008 Steven Barth - Copyright 2008 Jo-Philipp Wich + Copyright 2008-2019 Jo-Philipp Wich Licensed to the public under the Apache License 2.0. -%> <% + local ver = require "luci.version" + if not luci.dispatcher.context.template_header_sent then - include("themes/" .. theme .. "/header") + include("themes/" .. theme .. "/header_login") luci.dispatcher.context.template_header_sent = true end %> diff --git a/luci-theme-argon/luasrc/view/themes/argon/sysauth.htm b/luci-theme-argon/luasrc/view/themes/argon/sysauth.htm new file mode 100644 index 000000000..1fb399beb --- /dev/null +++ b/luci-theme-argon/luasrc/view/themes/argon/sysauth.htm @@ -0,0 +1,163 @@ +<%# + Argon is a clean HTML5 theme for LuCI. It is based on luci-theme-bootstrap and MUI and Argon Template + + luci-theme-argon + Copyright 2020 Jerryk + + Have a bug? Please create an issue here on GitHub! + https://github.com/jerrykuku/luci-theme-argon/issues + + luci-theme-bootstrap: + Copyright 2008 Steven Barth + Copyright 2008-2016 Jo-Philipp Wich + Copyright 2012 David Menting + + MUI: + https://github.com/muicss/mui + + Argon Theme + https://demos.creative-tim.com/argon-dashboard/index.html + + Licensed to the public under the Apache License 2.0 +-%> + +<%+themes/argon/out_header_login%> +<% + local util = require "luci.util" + local fs = require "nixio.fs" + local nutil = require "nixio.util" + local json = require "luci.jsonc" + local sys = require "luci.sys" + local uci = require 'luci.model.uci'.cursor() + + -- Fetch Local Background Media + + local function glob(...) + local iter, code, msg = fs.glob(...) + if iter then + return nutil.consume(iter) + else + return nil, code, msg + end + end + + + local imageTypes = " jpg png gif webp " + local videoTypes = " mp4 webm " + local allTypes = imageTypes .. videoTypes + local function fetchMedia(path, themeDir) + local backgroundTable = {} + local backgroundCount = 0 + for i, f in ipairs(glob(path)) do + attr = fs.stat(f) + if attr then + local ext = fs.basename(f):match(".+%.(%w+)$") + if ext ~= nil then + ext = ext:lower() + end + if ext ~= nil and string.match(allTypes, " "..ext.." ") ~= nil then + local bg = {} + bg.type = ext + bg.url = themeDir .. fs.basename(f) + table.insert(backgroundTable, bg) + backgroundCount = backgroundCount + 1 + end + end + end + return backgroundTable, backgroundCount + end + local function selectBackground(themeDir) + local bgUrl = media .. "/img/bg1.jpg" + local backgroundType = "Image" + local mimeType = "" + + if fs.access("/etc/config/argon") then + local online_wallpaper = uci:get_first('argon', 'global', 'online_wallpaper') or (uci:get_first('argon', 'global', 'bing_background') == '1' and 'bing') + if (online_wallpaper and online_wallpaper ~= "none") then + local picurl = sys.exec("/usr/libexec/argon/online_wallpaper") + if (picurl and picurl ~= '') then + return picurl, "Image", "" + end + end + end + + local backgroundTable, backgroundCount = fetchMedia("/www" .. themeDir .. "*", themeDir) + if ( backgroundCount > 0 ) then + local currentBg = backgroundTable[math.random(1, backgroundCount)] + bgUrl = currentBg.url + if (string.match(videoTypes, " "..currentBg.type.." ") ~= nil) then + backgroundType = "Video" + mimeType = "video/" .. currentBg.type + end + end + + return bgUrl, backgroundType, mimeType + end + + local boardinfo = util.ubus("system", "board") + local themeDir = media .. "/background/" + local bgUrl, backgroundType, mimeType = selectBackground(themeDir) +%> + +